content: package com.intel.llvm.ireditor.parser.antlr.internal; 
  
  import org.eclipse.xtext.*;
  import org.eclipse.xtext.parser.*;
  import org.eclipse.xtext.parser.impl.*;
  import org.eclipse.emf.ecore.util.EcoreUtil;
  import org.eclipse.emf.ecore.EObject;
  import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
  import org.eclipse.xtext.parser.antlr.XtextTokenStream;
  import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
  import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
  import com.intel.llvm.ireditor.services.LLVM_IRGrammarAccess;
  
  
  
  import org.antlr.runtime.*;
  import java.util.Stack;
  import java.util.List;
  import java.util.ArrayList;
  import java.util.Map;
  import java.util.HashMap;
  @SuppressWarnings("all")
  public class InternalLLVM_IRParser extends AbstractInternalAntlrParser {
      public static final String[] tokenNames = new String[] {
          "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ATTRIBUTE_ID", "RULE_INTEGER", "RULE_STRING", "RULE_META_INT", "RULE_META_NAME", "RULE_LOCAL_ID", "RULE_GLOBAL_ID", "RULE_SIGNED_INT", "RULE_FLOAT", "RULE_BOOLEAN", "RULE_NULL", "RULE_CSTRING", "RULE_METADATA_STRING", "RULE_BASIC_BLOCK_ID", "RULE_WS", "RULE_INT_TYPE", "RULE_NAME", "RULE_FILECHECK_COMMENT", "RULE_SL_COMMENT", "RULE_ANY_OTHER", "'attributes'", "'='", "'{'", "'}'", "'metadata'", "'alias'", "'target'", "'datalayout'", "'triple'", "'module'", "'asm'", "'unnamed_addr'", "'constant'", "'global'", "','", "'('", "'to'", "')'", "'getelementptr'", "'inbounds'", "'select'", "'icmp'", "'fcmp'", "'extractelement'", "'insertelement'", "'shufflevector'", "'extractvalue'", "'insertvalue'", "'add'", "'sub'", "'mul'", "'shl'", "'nuw'", "'nsw'", "'sdiv'", "'udiv'", "'lshr'", "'ashr'", "'exact'", "'fadd'", "'fsub'", "'fmul'", "'fdiv'", "'urem'", "'srem'", "'frem'", "'and'", "'or'", "'xor'", "'undef'", "'blockaddress'", "'zeroinitializer'", "'<'", "'>'", "'['", "']'", "'!'", "'thread_local'", "'localdynamic'", "'initialexec'", "'localexec'", "'addrspace'", "'section'", "'align'", "'gc'", "'define'", "'declare'", "'prefix'", "'...'", "'alignstack'", "'alwaysinline'", "'builtin'", "'cold'", "'inlinehint'", "'naked'", "'nobuiltin'", "'noduplicate'", "'noimplicitfloat'", "'noinline'", "'nonlazybind'", "'noredzone'", "'noreturn'", "'nounwind'", "'optnone'", "'optsize'", "'readnone'", "'readonly'", "'returns_twice'", "'sanitize_address'", "'sanitize_memory'", "'sanitize_thread'", "'ssp'", "'sspreq'", "'sspstrong'", "'uwtable'", "'address_safety'", "'thread_safety'", "'uninitialized_checks'", "'ret'", "'void'", "'br'", "'label'", "'switch'", "'indirectbr'", "'invoke'", "'zeroext'", "'signext'", "'inreg'", "'unwind'", "'resume'", "'unreachable'", "'nnan'", "'ninf'", "'nsz'", "'arcp'", "'fast'", "'alloca'", "'load'", "'volatile'", "'!nontemporal'", "'!invariant.load'", "'atomic'", "'singlethread'", "'store'", "'fence'", "'cmpxchg'", "'atomicrmw'", "'xchg'", "'nand'", "'max'", "'min'", "'umax'", "'umin'", "'trunc'", "'zext'", "'sext'", "'fptrunc'", "'fpext'", "'fptoui'", "'fptosi'", "'uitofp'", "'sitofp'", "'ptrtoint'", "'inttoptr'", "'bitcast'", "'addrspacecast'", "'eq'", "'ne'", "'ugt'", "'uge'", "'ult'", "'ule'", "'sgt'", "'sge'", "'slt'", "'sle'", "'oeq'", "'ogt'", "'oge'", "'olt'", "'ole'", "'one'", "'ord'", "'ueq'", "'une'", "'uno'", "'phi'", "'tail'", "'call'", "'sideeffect'", "'inteldialect'", "'va_arg'", "'landingpad'", "'personality'", "'cleanup'", "'catch'", "'filter'", "'unordered'", "'monotonic'", "'acquire'", "'release'", "'acq_rel'", "'seq_cst'", "'byval'", "'sret'", "'noalias'", "'nocapture'", "'nest'", "'returned'", "'inalloca'", "'*'", "'type'", "'opaque'", "'x'", "'x86_mmx'", "'half'", "'float'", "'double'", "'fp128'", "'x86_fp80'", "'ppc_fp128'", "'private'", "'linker_private'", "'linker_private_weak'", "'linker_private_weak_def_auto'", "'internal'", "'available_externally'", "'linkonce'", "'weak'", "'common'", "'appending'", "'extern_weak'", "'linkonce_odr'", "'weak_odr'", "'external'", "'dllimport'", "'dllexport'", "'ccc'", "'fastcc'", "'coldcc'", "'webkit_jscc'", "'anyregcc'", "'preserve_mostcc'", "'preserve_allcc'", "'intel_ocl_bicc'", "'x86_stdcallcc'", "'x86_fastcallcc'", "'x86_thiscallcc'", "'arm_apcscc'", "'arm_aapcscc'", "'arm_aapcs_vfpcc'", "'msp430_intrcc'", "'ptx_kernel'", "'ptx_device'", "'spir_kernel'", "'spir_func'", "'x86_64_sysvcc'", "'x86_64_win64cc'", "'cc'", "'default'", "'hidden'", "'protected'"
      };
      public static final int T__159=159;
      public static final int T__158=158;
      public static final int T__259=259;
      public static final int T__258=258;
      public static final int T__257=257;
      public static final int RULE_ANY_OTHER=23;
      public static final int T__262=262;
      public static final int T__263=263;
      public static final int T__160=160;
      public static final int T__260=260;
      public static final int T__261=261;
      public static final int T__264=264;
      public static final int T__265=265;
      public static final int T__167=167;
      public static final int EOF=-1;
      public static final int T__168=168;
      public static final int T__165=165;
      public static final int T__166=166;
      public static final int T__163=163;
      public static final int T__164=164;
      public static final int T__161=161;
      public static final int T__162=162;
      public static final int T__93=93;
      public static final int T__94=94;
      public static final int T__91=91;
      public static final int RULE_FILECHECK_COMMENT=21;
      public static final int T__92=92;
      public static final int T__148=148;
      public static final int T__90=90;
      public static final int T__147=147;
      public static final int T__149=149;
      public static final int T__247=247;
      public static final int T__246=246;
      public static final int T__249=249;
      public static final int T__248=248;
      public static final int T__250=250;
      public static final int T__251=251;
      public static final int T__252=252;
      public static final int T__253=253;
      public static final int T__254=254;
      public static final int T__255=255;
      public static final int T__256=256;
      public static final int T__154=154;
      public static final int T__155=155;
      public static final int T__156=156;
      public static final int T__99=99;
      public static final int T__157=157;
      public static final int T__98=98;
      public static final int T__150=150;
      public static final int T__97=97;
      public static final int T__151=151;
      public static final int T__96=96;
      public static final int T__152=152;
      public static final int T__95=95;
      public static final int T__153=153;
      public static final int T__139=139;
      public static final int RULE_ATTRIBUTE_ID=4;
      public static final int T__138=138;
      public static final int T__137=137;
      public static final int T__136=136;
      public static final int T__80=80;
      public static final int T__81=81;
      public static final int T__82=82;
      public static final int T__83=83;
      public static final int T__85=85;
      public static final int T__141=141;
      public static final int T__84=84;
      public static final int T__142=142;
      public static final int T__87=87;
      public static final int T__86=86;
      public static final int T__140=140;
      public static final int T__89=89;
      public static final int T__145=145;
      public static final int T__88=88;
      public static final int T__146=146;
      public static final int T__143=143;
      public static final int T__144=144;
      public static final int T__126=126;
      public static final int T__125=125;
      public static final int T__128=128;
      public static final int RULE_STRING=6;
      public static final int T__127=127;
      public static final int T__71=71;
      public static final int T__72=72;
      public static final int T__129=129;
      public static final int T__70=70;
      public static final int T__76=76;
      public static final int T__75=75;
      public static final int T__74=74;
      public static final int T__130=130;
      public static final int T__73=73;
      public static final int T__131=131;
      public static final int T__132=132;
      public static final int T__79=79;
      public static final int T__133=133;
      public static final int RULE_META_NAME=8;
      public static final int T__78=78;
      public static final int T__134=134;
      public static final int T__77=77;
      public static final int T__135=135;
      public static final int T__215=215;
      public static final int RULE_BOOLEAN=13;
      public static final int T__216=216;
      public static final int T__213=213;
      public static final int T__214=214;
      public static final int RULE_METADATA_STRING=16;
      public static final int T__219=219;
      public static final int T__217=217;
      public static final int T__218=218;
      public static final int T__118=118;
      public static final int T__119=119;
      public static final int T__116=116;
      public static final int T__117=117;
      public static final int T__114=114;
      public static final int T__115=115;
      public static final int T__124=124;
      public static final int T__123=123;
      public static final int T__122=122;
      public static final int T__121=121;
      public static final int T__120=120;
      public static final int T__223=223;
      public static final int T__222=222;
      public static final int T__221=221;
      public static final int T__220=220;
      public static final int T__202=202;
      public static final int T__203=203;
      public static final int T__204=204;
      public static final int T__205=205;
      public static final int T__206=206;
      public static final int T__207=207;
      public static final int T__208=208;
      public static final int T__209=209;
      public static final int T__107=107;
      public static final int T__108=108;
      public static final int T__109=109;
      public static final int T__103=103;
      public static final int T__104=104;
      public static final int T__105=105;
      public static final int T__106=106;
      public static final int T__111=111;
      public static final int T__110=110;
      public static final int T__113=113;
      public static final int T__112=112;
      public static final int RULE_SIGNED_INT=11;
      public static final int T__210=210;
      public static final int T__212=212;
      public static final int T__211=211;
      public static final int T__239=239;
      public static final int T__237=237;
      public static final int T__238=238;
      public static final int T__235=235;
      public static final int T__236=236;
      public static final int T__102=102;
      public static final int T__101=101;
      public static final int T__100=100;
      public static final int RULE_GLOBAL_ID=10;
      public static final int T__245=245;
      public static final int RULE_SL_COMMENT=22;
      public static final int T__244=244;
      public static final int T__243=243;
      public static final int T__242=242;
      public static final int T__241=241;
      public static final int T__240=240;
      public static final int T__228=228;
      public static final int T__229=229;
      public static final int T__224=224;
      public static final int T__225=225;
      public static final int T__226=226;
      public static final int T__227=227;
      public static final int T__232=232;
      public static final int T__231=231;
      public static final int T__234=234;
      public static final int T__233=233;
      public static final int T__230=230;
      public static final int T__29=29;
      public static final int T__28=28;
      public static final int T__27=27;
      public static final int T__26=26;
      public static final int T__25=25;
      public static final int T__24=24;
      public static final int RULE_META_INT=7;
      public static final int T__200=200;
      public static final int T__201=201;
      public static final int RULE_LOCAL_ID=9;
      public static final int RULE_INTEGER=5;
      public static final int T__68=68;
      public static final int T__69=69;
      public static final int T__66=66;
      public static final int T__67=67;
      public static final int T__64=64;
      public static final int T__65=65;
      public static final int T__62=62;
      public static final int T__63=63;
      public static final int T__61=61;
      public static final int T__60=60;
      public static final int T__55=55;
      public static final int T__56=56;
      public static final int T__57=57;
      public static final int T__199=199;
      public static final int T__58=58;
      public static final int T__198=198;
      public static final int T__51=51;
      public static final int T__197=197;
      public static final int T__52=52;
      public static final int T__196=196;
      public static final int T__53=53;
      public static final int T__195=195;
      public static final int T__54=54;
      public static final int T__194=194;
      public static final int T__193=193;
      public static final int T__192=192;
      public static final int T__191=191;
      public static final int T__190=190;
      public static final int T__59=59;
      public static final int RULE_CSTRING=15;
      public static final int T__50=50;
      public static final int T__42=42;
      public static final int T__184=184;
      public static final int T__43=43;
      public static final int T__183=183;
      public static final int T__40=40;
      public static final int T__186=186;
      public static final int T__41=41;
      public static final int T__185=185;
      public static final int T__46=46;
      public static final int T__188=188;
      public static final int T__47=47;
      public static final int T__187=187;
      public static final int T__44=44;
      public static final int T__45=45;
      public static final int T__189=189;
      public static final int T__48=48;
      public static final int T__49=49;
      public static final int T__180=180;
      public static final int T__182=182;
      public static final int T__181=181;
      public static final int RULE_FLOAT=12;
      public static final int RULE_INT_TYPE=19;
      public static final int RULE_NULL=14;
      public static final int T__175=175;
      public static final int T__30=30;
      public static final int T__174=174;
      public static final int T__31=31;
      public static final int T__173=173;
      public static final int T__32=32;
      public static final int T__172=172;
      public static final int T__33=33;
      public static final int T__179=179;
      public static final int T__34=34;
      public static final int T__178=178;
      public static final int T__35=35;
      public static final int T__177=177;
      public static final int T__36=36;
      public static final int T__176=176;
      public static final int T__37=37;
      public static final int T__38=38;
      public static final int T__39=39;
      public static final int RULE_BASIC_BLOCK_ID=17;
      public static final int T__171=171;
      public static final int T__170=170;
      public static final int RULE_NAME=20;
      public static final int RULE_WS=18;
      public static final int T__169=169;
  
      // delegates
      // delegators
  
  
          public InternalLLVM_IRParser(TokenStream input) {
              this(input, new RecognizerSharedState());
          }
          public InternalLLVM_IRParser(TokenStream input, RecognizerSharedState state) {
              super(input, state);
               
          }
          
  
      public String[] getTokenNames() { return InternalLLVM_IRParser.tokenNames; }
      public String getGrammarFileName() { return "../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g"; }
  
  
  
       	private LLVM_IRGrammarAccess grammarAccess;
       	
          public InternalLLVM_IRParser(TokenStream input, LLVM_IRGrammarAccess grammarAccess) {
              this(input);
              this.grammarAccess = grammarAccess;
              registerRules(grammarAccess.getGrammar());
          }
          
          @Override
          protected String getFirstRuleName() {
          	return "Model";	
         	}
         	
         	@Override
         	protected LLVM_IRGrammarAccess getGrammarAccess() {
         		return grammarAccess;
         	}
  
  
  
      // $ANTLR start "entryRuleModel"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:67:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
      public final EObject entryRuleModel() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleModel = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:68:2: (iv_ruleModel= ruleModel EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:69:2: iv_ruleModel= ruleModel EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getModelRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleModel_in_entryRuleModel75);
              iv_ruleModel=ruleModel();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleModel; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleModel85); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleModel"
  
  
      // $ANTLR start "ruleModel"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:76:1: ruleModel returns [EObject current=null] : ( (lv_elements_0_0= ruleTopLevelElement ) )* ;
      public final EObject ruleModel() throws RecognitionException {
          EObject current = null;
  
          EObject lv_elements_0_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:79:28: ( ( (lv_elements_0_0= ruleTopLevelElement ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:80:1: ( (lv_elements_0_0= ruleTopLevelElement ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:80:1: ( (lv_elements_0_0= ruleTopLevelElement ) )*
              loop1:
              do {
                  int alt1=2;
                  int LA1_0 = input.LA(1);
  
                  if ( ((LA1_0>=RULE_META_INT && LA1_0<=RULE_GLOBAL_ID)||LA1_0==24||(LA1_0>=29 && LA1_0<=30)||LA1_0==33||(LA1_0>=35 && LA1_0<=37)||LA1_0==81||LA1_0==85||(LA1_0>=89 && LA1_0<=90)||LA1_0==215||(LA1_0>=225 && LA1_0<=240)) ) {
                      alt1=1;
                  }
  
  
                  switch (alt1) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:81:1: (lv_elements_0_0= ruleTopLevelElement )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:81:1: (lv_elements_0_0= ruleTopLevelElement )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:82:3: lv_elements_0_0= ruleTopLevelElement
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getModelAccess().getElementsTopLevelElementParserRuleCall_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleTopLevelElement_in_ruleModel130);
              	    lv_elements_0_0=ruleTopLevelElement();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getModelRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"elements",
              	              		lv_elements_0_0, 
              	              		"TopLevelElement");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop1;
                  }
              } while (true);
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleModel"
  
  
      // $ANTLR start "entryRuleTopLevelElement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:106:1: entryRuleTopLevelElement returns [EObject current=null] : iv_ruleTopLevelElement= ruleTopLevelElement EOF ;
      public final EObject entryRuleTopLevelElement() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleTopLevelElement = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:107:2: (iv_ruleTopLevelElement= ruleTopLevelElement EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:108:2: iv_ruleTopLevelElement= ruleTopLevelElement EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getTopLevelElementRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleTopLevelElement_in_entryRuleTopLevelElement166);
              iv_ruleTopLevelElement=ruleTopLevelElement();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleTopLevelElement; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTopLevelElement176); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleTopLevelElement"
  
  
      // $ANTLR start "ruleTopLevelElement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:115:1: ruleTopLevelElement returns [EObject current=null] : (this_TypeDef_0= ruleTypeDef | this_InlineAsm_1= ruleInlineAsm | this_TargetInfo_2= ruleTargetInfo | this_GlobalValue_3= ruleGlobalValue | this_NamedMetadata_4= ruleNamedMetadata | this_AttributeGroup_5= ruleAttributeGroup ) ;
      public final EObject ruleTopLevelElement() throws RecognitionException {
          EObject current = null;
  
          EObject this_TypeDef_0 = null;
  
          EObject this_InlineAsm_1 = null;
  
          EObject this_TargetInfo_2 = null;
  
          EObject this_GlobalValue_3 = null;
  
          EObject this_NamedMetadata_4 = null;
  
          EObject this_AttributeGroup_5 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:118:28: ( (this_TypeDef_0= ruleTypeDef | this_InlineAsm_1= ruleInlineAsm | this_TargetInfo_2= ruleTargetInfo | this_GlobalValue_3= ruleGlobalValue | this_NamedMetadata_4= ruleNamedMetadata | this_AttributeGroup_5= ruleAttributeGroup ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:119:1: (this_TypeDef_0= ruleTypeDef | this_InlineAsm_1= ruleInlineAsm | this_TargetInfo_2= ruleTargetInfo | this_GlobalValue_3= ruleGlobalValue | this_NamedMetadata_4= ruleNamedMetadata | this_AttributeGroup_5= ruleAttributeGroup )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:119:1: (this_TypeDef_0= ruleTypeDef | this_InlineAsm_1= ruleInlineAsm | this_TargetInfo_2= ruleTargetInfo | this_GlobalValue_3= ruleGlobalValue | this_NamedMetadata_4= ruleNamedMetadata | this_AttributeGroup_5= ruleAttributeGroup )
              int alt2=6;
              switch ( input.LA(1) ) {
              case RULE_LOCAL_ID:
              case 215:
                  {
                  alt2=1;
                  }
                  break;
              case 33:
                  {
                  alt2=2;
                  }
                  break;
              case 30:
                  {
                  alt2=3;
                  }
                  break;
              case RULE_GLOBAL_ID:
              case 29:
              case 35:
              case 36:
              case 37:
              case 81:
              case 85:
              case 89:
              case 90:
              case 225:
              case 226:
              case 227:
              case 228:
              case 229:
              case 230:
              case 231:
              case 232:
              case 233:
              case 234:
              case 235:
              case 236:
              case 237:
              case 238:
              case 239:
              case 240:
                  {
                  alt2=4;
                  }
                  break;
              case RULE_META_INT:
              case RULE_META_NAME:
                  {
                  alt2=5;
                  }
                  break;
              case 24:
                  {
                  alt2=6;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 2, 0, input);
  
                  throw nvae;
              }
  
              switch (alt2) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:120:5: this_TypeDef_0= ruleTypeDef
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getTopLevelElementAccess().getTypeDefParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleTypeDef_in_ruleTopLevelElement223);
                      this_TypeDef_0=ruleTypeDef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_TypeDef_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:130:5: this_InlineAsm_1= ruleInlineAsm
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getTopLevelElementAccess().getInlineAsmParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInlineAsm_in_ruleTopLevelElement250);
                      this_InlineAsm_1=ruleInlineAsm();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_InlineAsm_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:140:5: this_TargetInfo_2= ruleTargetInfo
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getTopLevelElementAccess().getTargetInfoParserRuleCall_2()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleTargetInfo_in_ruleTopLevelElement277);
                      this_TargetInfo_2=ruleTargetInfo();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_TargetInfo_2; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:150:5: this_GlobalValue_3= ruleGlobalValue
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getTopLevelElementAccess().getGlobalValueParserRuleCall_3()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleGlobalValue_in_ruleTopLevelElement304);
                      this_GlobalValue_3=ruleGlobalValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_GlobalValue_3; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:160:5: this_NamedMetadata_4= ruleNamedMetadata
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getTopLevelElementAccess().getNamedMetadataParserRuleCall_4()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleNamedMetadata_in_ruleTopLevelElement331);
                      this_NamedMetadata_4=ruleNamedMetadata();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_NamedMetadata_4; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:170:5: this_AttributeGroup_5= ruleAttributeGroup
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getTopLevelElementAccess().getAttributeGroupParserRuleCall_5()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleAttributeGroup_in_ruleTopLevelElement358);
                      this_AttributeGroup_5=ruleAttributeGroup();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_AttributeGroup_5; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleTopLevelElement"
  
  
      // $ANTLR start "entryRuleAttributeGroup"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:186:1: entryRuleAttributeGroup returns [EObject current=null] : iv_ruleAttributeGroup= ruleAttributeGroup EOF ;
      public final EObject entryRuleAttributeGroup() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleAttributeGroup = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:187:2: (iv_ruleAttributeGroup= ruleAttributeGroup EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:188:2: iv_ruleAttributeGroup= ruleAttributeGroup EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getAttributeGroupRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleAttributeGroup_in_entryRuleAttributeGroup393);
              iv_ruleAttributeGroup=ruleAttributeGroup();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleAttributeGroup; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAttributeGroup403); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleAttributeGroup"
  
  
      // $ANTLR start "ruleAttributeGroup"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:195:1: ruleAttributeGroup returns [EObject current=null] : (otherlv_0= 'attributes' ( (lv_name_1_0= RULE_ATTRIBUTE_ID ) ) otherlv_2= '=' otherlv_3= '{' ( ( (lv_attributes_4_0= ruleFunctionAttribute ) ) | ( ( (lv_alignstack_5_0= ruleAlignStack ) ) otherlv_6= '=' ( (lv_alignstackValue_7_0= RULE_INTEGER ) ) ) | ( (lv_targetSpecificAttributes_8_0= ruleTargetSpecificAttribute ) ) )+ otherlv_9= '}' ) ;
      public final EObject ruleAttributeGroup() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token lv_name_1_0=null;
          Token otherlv_2=null;
          Token otherlv_3=null;
          Token otherlv_6=null;
          Token lv_alignstackValue_7_0=null;
          Token otherlv_9=null;
          EObject lv_attributes_4_0 = null;
  
          EObject lv_alignstack_5_0 = null;
  
          EObject lv_targetSpecificAttributes_8_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:198:28: ( (otherlv_0= 'attributes' ( (lv_name_1_0= RULE_ATTRIBUTE_ID ) ) otherlv_2= '=' otherlv_3= '{' ( ( (lv_attributes_4_0= ruleFunctionAttribute ) ) | ( ( (lv_alignstack_5_0= ruleAlignStack ) ) otherlv_6= '=' ( (lv_alignstackValue_7_0= RULE_INTEGER ) ) ) | ( (lv_targetSpecificAttributes_8_0= ruleTargetSpecificAttribute ) ) )+ otherlv_9= '}' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:199:1: (otherlv_0= 'attributes' ( (lv_name_1_0= RULE_ATTRIBUTE_ID ) ) otherlv_2= '=' otherlv_3= '{' ( ( (lv_attributes_4_0= ruleFunctionAttribute ) ) | ( ( (lv_alignstack_5_0= ruleAlignStack ) ) otherlv_6= '=' ( (lv_alignstackValue_7_0= RULE_INTEGER ) ) ) | ( (lv_targetSpecificAttributes_8_0= ruleTargetSpecificAttribute ) ) )+ otherlv_9= '}' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:199:1: (otherlv_0= 'attributes' ( (lv_name_1_0= RULE_ATTRIBUTE_ID ) ) otherlv_2= '=' otherlv_3= '{' ( ( (lv_attributes_4_0= ruleFunctionAttribute ) ) | ( ( (lv_alignstack_5_0= ruleAlignStack ) ) otherlv_6= '=' ( (lv_alignstackValue_7_0= RULE_INTEGER ) ) ) | ( (lv_targetSpecificAttributes_8_0= ruleTargetSpecificAttribute ) ) )+ otherlv_9= '}' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:199:3: otherlv_0= 'attributes' ( (lv_name_1_0= RULE_ATTRIBUTE_ID ) ) otherlv_2= '=' otherlv_3= '{' ( ( (lv_attributes_4_0= ruleFunctionAttribute ) ) | ( ( (lv_alignstack_5_0= ruleAlignStack ) ) otherlv_6= '=' ( (lv_alignstackValue_7_0= RULE_INTEGER ) ) ) | ( (lv_targetSpecificAttributes_8_0= ruleTargetSpecificAttribute ) ) )+ otherlv_9= '}'
              {
              otherlv_0=(Token)match(input,24,FollowSets000.FOLLOW_24_in_ruleAttributeGroup440); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getAttributeGroupAccess().getAttributesKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:203:1: ( (lv_name_1_0= RULE_ATTRIBUTE_ID ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:204:1: (lv_name_1_0= RULE_ATTRIBUTE_ID )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:204:1: (lv_name_1_0= RULE_ATTRIBUTE_ID )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:205:3: lv_name_1_0= RULE_ATTRIBUTE_ID
              {
              lv_name_1_0=(Token)match(input,RULE_ATTRIBUTE_ID,FollowSets000.FOLLOW_RULE_ATTRIBUTE_ID_in_ruleAttributeGroup457); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_name_1_0, grammarAccess.getAttributeGroupAccess().getNameATTRIBUTE_IDTerminalRuleCall_1_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getAttributeGroupRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"name",
                        		lv_name_1_0, 
                        		"ATTRIBUTE_ID");
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleAttributeGroup474); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getAttributeGroupAccess().getEqualsSignKeyword_2());
                    
              }
              otherlv_3=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleAttributeGroup486); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getAttributeGroupAccess().getLeftCurlyBracketKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:229:1: ( ( (lv_attributes_4_0= ruleFunctionAttribute ) ) | ( ( (lv_alignstack_5_0= ruleAlignStack ) ) otherlv_6= '=' ( (lv_alignstackValue_7_0= RULE_INTEGER ) ) ) | ( (lv_targetSpecificAttributes_8_0= ruleTargetSpecificAttribute ) ) )+
              int cnt3=0;
              loop3:
              do {
                  int alt3=4;
                  switch ( input.LA(1) ) {
                  case 94:
                  case 95:
                  case 96:
                  case 97:
                  case 98:
                  case 99:
                  case 100:
                  case 101:
                  case 102:
                  case 103:
                  case 104:
                  case 105:
                  case 106:
                  case 107:
                  case 108:
                  case 109:
                  case 110:
                  case 111:
                  case 112:
                  case 113:
                  case 114:
                  case 115:
                  case 116:
                  case 117:
                  case 118:
                  case 119:
                  case 120:
                  case 121:
                      {
                      alt3=1;
                      }
                      break;
                  case 93:
                      {
                      alt3=2;
                      }
                      break;
                  case RULE_STRING:
                      {
                      alt3=3;
                      }
                      break;
  
                  }
  
                  switch (alt3) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:229:2: ( (lv_attributes_4_0= ruleFunctionAttribute ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:229:2: ( (lv_attributes_4_0= ruleFunctionAttribute ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:230:1: (lv_attributes_4_0= ruleFunctionAttribute )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:230:1: (lv_attributes_4_0= ruleFunctionAttribute )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:231:3: lv_attributes_4_0= ruleFunctionAttribute
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getAttributeGroupAccess().getAttributesFunctionAttributeParserRuleCall_4_0_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleFunctionAttribute_in_ruleAttributeGroup508);
              	    lv_attributes_4_0=ruleFunctionAttribute();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getAttributeGroupRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"attributes",
              	              		lv_attributes_4_0, 
              	              		"FunctionAttribute");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 2 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:248:6: ( ( (lv_alignstack_5_0= ruleAlignStack ) ) otherlv_6= '=' ( (lv_alignstackValue_7_0= RULE_INTEGER ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:248:6: ( ( (lv_alignstack_5_0= ruleAlignStack ) ) otherlv_6= '=' ( (lv_alignstackValue_7_0= RULE_INTEGER ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:248:7: ( (lv_alignstack_5_0= ruleAlignStack ) ) otherlv_6= '=' ( (lv_alignstackValue_7_0= RULE_INTEGER ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:248:7: ( (lv_alignstack_5_0= ruleAlignStack ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:249:1: (lv_alignstack_5_0= ruleAlignStack )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:249:1: (lv_alignstack_5_0= ruleAlignStack )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:250:3: lv_alignstack_5_0= ruleAlignStack
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getAttributeGroupAccess().getAlignstackAlignStackParserRuleCall_4_1_0_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleAlignStack_in_ruleAttributeGroup536);
              	    lv_alignstack_5_0=ruleAlignStack();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getAttributeGroupRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"alignstack",
              	              		lv_alignstack_5_0, 
              	              		"AlignStack");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
              	    otherlv_6=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleAttributeGroup548); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_6, grammarAccess.getAttributeGroupAccess().getEqualsSignKeyword_4_1_1());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:270:1: ( (lv_alignstackValue_7_0= RULE_INTEGER ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:271:1: (lv_alignstackValue_7_0= RULE_INTEGER )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:271:1: (lv_alignstackValue_7_0= RULE_INTEGER )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:272:3: lv_alignstackValue_7_0= RULE_INTEGER
              	    {
              	    lv_alignstackValue_7_0=(Token)match(input,RULE_INTEGER,FollowSets000.FOLLOW_RULE_INTEGER_in_ruleAttributeGroup565); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      			newLeafNode(lv_alignstackValue_7_0, grammarAccess.getAttributeGroupAccess().getAlignstackValueINTEGERTerminalRuleCall_4_1_2_0()); 
              	      		
              	    }
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElement(grammarAccess.getAttributeGroupRule());
              	      	        }
              	             		addWithLastConsumed(
              	             			current, 
              	             			"alignstackValue",
              	              		lv_alignstackValue_7_0, 
              	              		"INTEGER");
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 3 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:289:6: ( (lv_targetSpecificAttributes_8_0= ruleTargetSpecificAttribute ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:289:6: ( (lv_targetSpecificAttributes_8_0= ruleTargetSpecificAttribute ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:290:1: (lv_targetSpecificAttributes_8_0= ruleTargetSpecificAttribute )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:290:1: (lv_targetSpecificAttributes_8_0= ruleTargetSpecificAttribute )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:291:3: lv_targetSpecificAttributes_8_0= ruleTargetSpecificAttribute
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getAttributeGroupAccess().getTargetSpecificAttributesTargetSpecificAttributeParserRuleCall_4_2_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleTargetSpecificAttribute_in_ruleAttributeGroup598);
              	    lv_targetSpecificAttributes_8_0=ruleTargetSpecificAttribute();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getAttributeGroupRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"targetSpecificAttributes",
              	              		lv_targetSpecificAttributes_8_0, 
              	              		"TargetSpecificAttribute");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    if ( cnt3 >= 1 ) break loop3;
              	    if (state.backtracking>0) {state.failed=true; return current;}
                          EarlyExitException eee =
                              new EarlyExitException(3, input);
                          throw eee;
                  }
                  cnt3++;
              } while (true);
  
              otherlv_9=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleAttributeGroup612); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_9, grammarAccess.getAttributeGroupAccess().getRightCurlyBracketKeyword_5());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleAttributeGroup"
  
  
      // $ANTLR start "entryRuleTargetSpecificAttribute"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:319:1: entryRuleTargetSpecificAttribute returns [EObject current=null] : iv_ruleTargetSpecificAttribute= ruleTargetSpecificAttribute EOF ;
      public final EObject entryRuleTargetSpecificAttribute() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleTargetSpecificAttribute = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:320:2: (iv_ruleTargetSpecificAttribute= ruleTargetSpecificAttribute EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:321:2: iv_ruleTargetSpecificAttribute= ruleTargetSpecificAttribute EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getTargetSpecificAttributeRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleTargetSpecificAttribute_in_entryRuleTargetSpecificAttribute648);
              iv_ruleTargetSpecificAttribute=ruleTargetSpecificAttribute();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleTargetSpecificAttribute; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTargetSpecificAttribute658); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleTargetSpecificAttribute"
  
  
      // $ANTLR start "ruleTargetSpecificAttribute"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:328:1: ruleTargetSpecificAttribute returns [EObject current=null] : ( ( (lv_name_0_0= RULE_STRING ) ) (otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) )? ) ;
      public final EObject ruleTargetSpecificAttribute() throws RecognitionException {
          EObject current = null;
  
          Token lv_name_0_0=null;
          Token otherlv_1=null;
          Token lv_value_2_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:331:28: ( ( ( (lv_name_0_0= RULE_STRING ) ) (otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) )? ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:332:1: ( ( (lv_name_0_0= RULE_STRING ) ) (otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) )? )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:332:1: ( ( (lv_name_0_0= RULE_STRING ) ) (otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) )? )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:332:2: ( (lv_name_0_0= RULE_STRING ) ) (otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) )?
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:332:2: ( (lv_name_0_0= RULE_STRING ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:333:1: (lv_name_0_0= RULE_STRING )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:333:1: (lv_name_0_0= RULE_STRING )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:334:3: lv_name_0_0= RULE_STRING
              {
              lv_name_0_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleTargetSpecificAttribute700); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_name_0_0, grammarAccess.getTargetSpecificAttributeAccess().getNameSTRINGTerminalRuleCall_0_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getTargetSpecificAttributeRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"name",
                        		lv_name_0_0, 
                        		"STRING");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:350:2: (otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) ) )?
              int alt4=2;
              int LA4_0 = input.LA(1);
  
              if ( (LA4_0==25) ) {
                  alt4=1;
              }
              switch (alt4) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:350:4: otherlv_1= '=' ( (lv_value_2_0= RULE_STRING ) )
                      {
                      otherlv_1=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleTargetSpecificAttribute718); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getTargetSpecificAttributeAccess().getEqualsSignKeyword_1_0());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:354:1: ( (lv_value_2_0= RULE_STRING ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:355:1: (lv_value_2_0= RULE_STRING )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:355:1: (lv_value_2_0= RULE_STRING )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:356:3: lv_value_2_0= RULE_STRING
                      {
                      lv_value_2_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleTargetSpecificAttribute735); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(lv_value_2_0, grammarAccess.getTargetSpecificAttributeAccess().getValueSTRINGTerminalRuleCall_1_1_0()); 
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getTargetSpecificAttributeRule());
                        	        }
                               		setWithLastConsumed(
                               			current, 
                               			"value",
                                		lv_value_2_0, 
                                		"STRING");
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleTargetSpecificAttribute"
  
  
      // $ANTLR start "entryRuleNamedMetadata"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:380:1: entryRuleNamedMetadata returns [EObject current=null] : iv_ruleNamedMetadata= ruleNamedMetadata EOF ;
      public final EObject entryRuleNamedMetadata() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleNamedMetadata = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:381:2: (iv_ruleNamedMetadata= ruleNamedMetadata EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:382:2: iv_ruleNamedMetadata= ruleNamedMetadata EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getNamedMetadataRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleNamedMetadata_in_entryRuleNamedMetadata778);
              iv_ruleNamedMetadata=ruleNamedMetadata();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleNamedMetadata; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNamedMetadata788); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleNamedMetadata"
  
  
      // $ANTLR start "ruleNamedMetadata"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:389:1: ruleNamedMetadata returns [EObject current=null] : ( ( ( (lv_name_0_0= RULE_META_INT ) ) otherlv_1= '=' otherlv_2= 'metadata' ( (lv_node_3_0= ruleMetadataNode ) ) ) | ( ( (lv_name_4_0= RULE_META_NAME ) ) otherlv_5= '=' ( (lv_node_6_0= ruleMetadataNode ) ) ) ) ;
      public final EObject ruleNamedMetadata() throws RecognitionException {
          EObject current = null;
  
          Token lv_name_0_0=null;
          Token otherlv_1=null;
          Token otherlv_2=null;
          Token lv_name_4_0=null;
          Token otherlv_5=null;
          EObject lv_node_3_0 = null;
  
          EObject lv_node_6_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:392:28: ( ( ( ( (lv_name_0_0= RULE_META_INT ) ) otherlv_1= '=' otherlv_2= 'metadata' ( (lv_node_3_0= ruleMetadataNode ) ) ) | ( ( (lv_name_4_0= RULE_META_NAME ) ) otherlv_5= '=' ( (lv_node_6_0= ruleMetadataNode ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:393:1: ( ( ( (lv_name_0_0= RULE_META_INT ) ) otherlv_1= '=' otherlv_2= 'metadata' ( (lv_node_3_0= ruleMetadataNode ) ) ) | ( ( (lv_name_4_0= RULE_META_NAME ) ) otherlv_5= '=' ( (lv_node_6_0= ruleMetadataNode ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:393:1: ( ( ( (lv_name_0_0= RULE_META_INT ) ) otherlv_1= '=' otherlv_2= 'metadata' ( (lv_node_3_0= ruleMetadataNode ) ) ) | ( ( (lv_name_4_0= RULE_META_NAME ) ) otherlv_5= '=' ( (lv_node_6_0= ruleMetadataNode ) ) ) )
              int alt5=2;
              int LA5_0 = input.LA(1);
  
              if ( (LA5_0==RULE_META_INT) ) {
                  alt5=1;
              }
              else if ( (LA5_0==RULE_META_NAME) ) {
                  alt5=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 5, 0, input);
  
                  throw nvae;
              }
              switch (alt5) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:393:2: ( ( (lv_name_0_0= RULE_META_INT ) ) otherlv_1= '=' otherlv_2= 'metadata' ( (lv_node_3_0= ruleMetadataNode ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:393:2: ( ( (lv_name_0_0= RULE_META_INT ) ) otherlv_1= '=' otherlv_2= 'metadata' ( (lv_node_3_0= ruleMetadataNode ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:393:3: ( (lv_name_0_0= RULE_META_INT ) ) otherlv_1= '=' otherlv_2= 'metadata' ( (lv_node_3_0= ruleMetadataNode ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:393:3: ( (lv_name_0_0= RULE_META_INT ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:394:1: (lv_name_0_0= RULE_META_INT )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:394:1: (lv_name_0_0= RULE_META_INT )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:395:3: lv_name_0_0= RULE_META_INT
                      {
                      lv_name_0_0=(Token)match(input,RULE_META_INT,FollowSets000.FOLLOW_RULE_META_INT_in_ruleNamedMetadata831); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(lv_name_0_0, grammarAccess.getNamedMetadataAccess().getNameMETA_INTTerminalRuleCall_0_0_0()); 
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getNamedMetadataRule());
                        	        }
                               		setWithLastConsumed(
                               			current, 
                               			"name",
                                		lv_name_0_0, 
                                		"META_INT");
                        	    
                      }
  
                      }
  
  
                      }
  
                      otherlv_1=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleNamedMetadata848); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getNamedMetadataAccess().getEqualsSignKeyword_0_1());
                            
                      }
                      otherlv_2=(Token)match(input,28,FollowSets000.FOLLOW_28_in_ruleNamedMetadata860); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_2, grammarAccess.getNamedMetadataAccess().getMetadataKeyword_0_2());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:419:1: ( (lv_node_3_0= ruleMetadataNode ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:420:1: (lv_node_3_0= ruleMetadataNode )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:420:1: (lv_node_3_0= ruleMetadataNode )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:421:3: lv_node_3_0= ruleMetadataNode
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMetadataAccess().getNodeMetadataNodeParserRuleCall_0_3_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleMetadataNode_in_ruleNamedMetadata881);
                      lv_node_3_0=ruleMetadataNode();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMetadataRule());
                        	        }
                               		set(
                               			current, 
                               			"node",
                                		lv_node_3_0, 
                                		"MetadataNode");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:438:6: ( ( (lv_name_4_0= RULE_META_NAME ) ) otherlv_5= '=' ( (lv_node_6_0= ruleMetadataNode ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:438:6: ( ( (lv_name_4_0= RULE_META_NAME ) ) otherlv_5= '=' ( (lv_node_6_0= ruleMetadataNode ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:438:7: ( (lv_name_4_0= RULE_META_NAME ) ) otherlv_5= '=' ( (lv_node_6_0= ruleMetadataNode ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:438:7: ( (lv_name_4_0= RULE_META_NAME ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:439:1: (lv_name_4_0= RULE_META_NAME )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:439:1: (lv_name_4_0= RULE_META_NAME )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:440:3: lv_name_4_0= RULE_META_NAME
                      {
                      lv_name_4_0=(Token)match(input,RULE_META_NAME,FollowSets000.FOLLOW_RULE_META_NAME_in_ruleNamedMetadata906); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(lv_name_4_0, grammarAccess.getNamedMetadataAccess().getNameMETA_NAMETerminalRuleCall_1_0_0()); 
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getNamedMetadataRule());
                        	        }
                               		setWithLastConsumed(
                               			current, 
                               			"name",
                                		lv_name_4_0, 
                                		"META_NAME");
                        	    
                      }
  
                      }
  
  
                      }
  
                      otherlv_5=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleNamedMetadata923); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_5, grammarAccess.getNamedMetadataAccess().getEqualsSignKeyword_1_1());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:460:1: ( (lv_node_6_0= ruleMetadataNode ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:461:1: (lv_node_6_0= ruleMetadataNode )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:461:1: (lv_node_6_0= ruleMetadataNode )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:462:3: lv_node_6_0= ruleMetadataNode
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMetadataAccess().getNodeMetadataNodeParserRuleCall_1_2_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleMetadataNode_in_ruleNamedMetadata944);
                      lv_node_6_0=ruleMetadataNode();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMetadataRule());
                        	        }
                               		set(
                               			current, 
                               			"node",
                                		lv_node_6_0, 
                                		"MetadataNode");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleNamedMetadata"
  
  
      // $ANTLR start "entryRuleMetadataRef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:486:1: entryRuleMetadataRef returns [EObject current=null] : iv_ruleMetadataRef= ruleMetadataRef EOF ;
      public final EObject entryRuleMetadataRef() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleMetadataRef = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:487:2: (iv_ruleMetadataRef= ruleMetadataRef EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:488:2: iv_ruleMetadataRef= ruleMetadataRef EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getMetadataRefRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleMetadataRef_in_entryRuleMetadataRef981);
              iv_ruleMetadataRef=ruleMetadataRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleMetadataRef; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMetadataRef991); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleMetadataRef"
  
  
      // $ANTLR start "ruleMetadataRef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:495:1: ruleMetadataRef returns [EObject current=null] : ( ( ruleMetadataIdentifier ) ) ;
      public final EObject ruleMetadataRef() throws RecognitionException {
          EObject current = null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:498:28: ( ( ( ruleMetadataIdentifier ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:499:1: ( ( ruleMetadataIdentifier ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:499:1: ( ( ruleMetadataIdentifier ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:500:1: ( ruleMetadataIdentifier )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:500:1: ( ruleMetadataIdentifier )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:501:3: ruleMetadataIdentifier
              {
              if ( state.backtracking==0 ) {
  
                			if (current==null) {
                	            current = createModelElement(grammarAccess.getMetadataRefRule());
                	        }
                        
              }
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getMetadataRefAccess().getRefNamedMetadataCrossReference_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleMetadataIdentifier_in_ruleMetadataRef1038);
              ruleMetadataIdentifier();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleMetadataRef"
  
  
      // $ANTLR start "entryRuleMetadataIdentifier"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:522:1: entryRuleMetadataIdentifier returns [String current=null] : iv_ruleMetadataIdentifier= ruleMetadataIdentifier EOF ;
      public final String entryRuleMetadataIdentifier() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleMetadataIdentifier = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:523:2: (iv_ruleMetadataIdentifier= ruleMetadataIdentifier EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:524:2: iv_ruleMetadataIdentifier= ruleMetadataIdentifier EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getMetadataIdentifierRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleMetadataIdentifier_in_entryRuleMetadataIdentifier1074);
              iv_ruleMetadataIdentifier=ruleMetadataIdentifier();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleMetadataIdentifier.getText(); 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMetadataIdentifier1085); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleMetadataIdentifier"
  
  
      // $ANTLR start "ruleMetadataIdentifier"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:531:1: ruleMetadataIdentifier returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_META_INT_0= RULE_META_INT | this_META_NAME_1= RULE_META_NAME ) ;
      public final AntlrDatatypeRuleToken ruleMetadataIdentifier() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token this_META_INT_0=null;
          Token this_META_NAME_1=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:534:28: ( (this_META_INT_0= RULE_META_INT | this_META_NAME_1= RULE_META_NAME ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:535:1: (this_META_INT_0= RULE_META_INT | this_META_NAME_1= RULE_META_NAME )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:535:1: (this_META_INT_0= RULE_META_INT | this_META_NAME_1= RULE_META_NAME )
              int alt6=2;
              int LA6_0 = input.LA(1);
  
              if ( (LA6_0==RULE_META_INT) ) {
                  alt6=1;
              }
              else if ( (LA6_0==RULE_META_NAME) ) {
                  alt6=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 6, 0, input);
  
                  throw nvae;
              }
              switch (alt6) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:535:6: this_META_INT_0= RULE_META_INT
                      {
                      this_META_INT_0=(Token)match(input,RULE_META_INT,FollowSets000.FOLLOW_RULE_META_INT_in_ruleMetadataIdentifier1125); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        		current.merge(this_META_INT_0);
                            
                      }
                      if ( state.backtracking==0 ) {
                         
                            newLeafNode(this_META_INT_0, grammarAccess.getMetadataIdentifierAccess().getMETA_INTTerminalRuleCall_0()); 
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:543:10: this_META_NAME_1= RULE_META_NAME
                      {
                      this_META_NAME_1=(Token)match(input,RULE_META_NAME,FollowSets000.FOLLOW_RULE_META_NAME_in_ruleMetadataIdentifier1151); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        		current.merge(this_META_NAME_1);
                            
                      }
                      if ( state.backtracking==0 ) {
                         
                            newLeafNode(this_META_NAME_1, grammarAccess.getMetadataIdentifierAccess().getMETA_NAMETerminalRuleCall_1()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleMetadataIdentifier"
  
  
      // $ANTLR start "entryRuleValueRef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:558:1: entryRuleValueRef returns [EObject current=null] : iv_ruleValueRef= ruleValueRef EOF ;
      public final EObject entryRuleValueRef() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleValueRef = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:559:2: (iv_ruleValueRef= ruleValueRef EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:560:2: iv_ruleValueRef= ruleValueRef EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getValueRefRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleValueRef_in_entryRuleValueRef1196);
              iv_ruleValueRef=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleValueRef; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleValueRef1206); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleValueRef"
  
  
      // $ANTLR start "ruleValueRef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:567:1: ruleValueRef returns [EObject current=null] : (this_GlobalValueRef_0= ruleGlobalValueRef | this_LocalValueRef_1= ruleLocalValueRef ) ;
      public final EObject ruleValueRef() throws RecognitionException {
          EObject current = null;
  
          EObject this_GlobalValueRef_0 = null;
  
          EObject this_LocalValueRef_1 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:570:28: ( (this_GlobalValueRef_0= ruleGlobalValueRef | this_LocalValueRef_1= ruleLocalValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:571:1: (this_GlobalValueRef_0= ruleGlobalValueRef | this_LocalValueRef_1= ruleLocalValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:571:1: (this_GlobalValueRef_0= ruleGlobalValueRef | this_LocalValueRef_1= ruleLocalValueRef )
              int alt7=2;
              int LA7_0 = input.LA(1);
  
              if ( (LA7_0==RULE_INTEGER||(LA7_0>=RULE_META_INT && LA7_0<=RULE_META_NAME)||(LA7_0>=RULE_GLOBAL_ID && LA7_0<=RULE_METADATA_STRING)||LA7_0==26||LA7_0==42||(LA7_0>=44 && LA7_0<=55)||(LA7_0>=58 && LA7_0<=61)||(LA7_0>=63 && LA7_0<=76)||LA7_0==78||LA7_0==80||(LA7_0>=157 && LA7_0<=169)) ) {
                  alt7=1;
              }
              else if ( (LA7_0==RULE_LOCAL_ID) ) {
                  alt7=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 7, 0, input);
  
                  throw nvae;
              }
              switch (alt7) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:572:5: this_GlobalValueRef_0= ruleGlobalValueRef
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getValueRefAccess().getGlobalValueRefParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleGlobalValueRef_in_ruleValueRef1253);
                      this_GlobalValueRef_0=ruleGlobalValueRef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_GlobalValueRef_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:582:5: this_LocalValueRef_1= ruleLocalValueRef
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getValueRefAccess().getLocalValueRefParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleLocalValueRef_in_ruleValueRef1280);
                      this_LocalValueRef_1=ruleLocalValueRef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_LocalValueRef_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleValueRef"
  
  
      // $ANTLR start "entryRuleGlobalValueRef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:598:1: entryRuleGlobalValueRef returns [EObject current=null] : iv_ruleGlobalValueRef= ruleGlobalValueRef EOF ;
      public final EObject entryRuleGlobalValueRef() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleGlobalValueRef = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:599:2: (iv_ruleGlobalValueRef= ruleGlobalValueRef EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:600:2: iv_ruleGlobalValueRef= ruleGlobalValueRef EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getGlobalValueRefRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleGlobalValueRef_in_entryRuleGlobalValueRef1315);
              iv_ruleGlobalValueRef=ruleGlobalValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleGlobalValueRef; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleGlobalValueRef1325); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleGlobalValueRef"
  
  
      // $ANTLR start "ruleGlobalValueRef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:607:1: ruleGlobalValueRef returns [EObject current=null] : ( ( (lv_constant_0_0= ruleConstant ) ) | ( (lv_metadata_1_0= ruleMetadataRef ) ) ) ;
      public final EObject ruleGlobalValueRef() throws RecognitionException {
          EObject current = null;
  
          EObject lv_constant_0_0 = null;
  
          EObject lv_metadata_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:610:28: ( ( ( (lv_constant_0_0= ruleConstant ) ) | ( (lv_metadata_1_0= ruleMetadataRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:611:1: ( ( (lv_constant_0_0= ruleConstant ) ) | ( (lv_metadata_1_0= ruleMetadataRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:611:1: ( ( (lv_constant_0_0= ruleConstant ) ) | ( (lv_metadata_1_0= ruleMetadataRef ) ) )
              int alt8=2;
              int LA8_0 = input.LA(1);
  
              if ( (LA8_0==RULE_INTEGER||(LA8_0>=RULE_GLOBAL_ID && LA8_0<=RULE_METADATA_STRING)||LA8_0==26||LA8_0==42||(LA8_0>=44 && LA8_0<=55)||(LA8_0>=58 && LA8_0<=61)||(LA8_0>=63 && LA8_0<=76)||LA8_0==78||LA8_0==80||(LA8_0>=157 && LA8_0<=169)) ) {
                  alt8=1;
              }
              else if ( ((LA8_0>=RULE_META_INT && LA8_0<=RULE_META_NAME)) ) {
                  alt8=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 8, 0, input);
  
                  throw nvae;
              }
              switch (alt8) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:611:2: ( (lv_constant_0_0= ruleConstant ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:611:2: ( (lv_constant_0_0= ruleConstant ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:612:1: (lv_constant_0_0= ruleConstant )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:612:1: (lv_constant_0_0= ruleConstant )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:613:3: lv_constant_0_0= ruleConstant
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getGlobalValueRefAccess().getConstantConstantParserRuleCall_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstant_in_ruleGlobalValueRef1371);
                      lv_constant_0_0=ruleConstant();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getGlobalValueRefRule());
                        	        }
                               		set(
                               			current, 
                               			"constant",
                                		lv_constant_0_0, 
                                		"Constant");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:630:6: ( (lv_metadata_1_0= ruleMetadataRef ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:630:6: ( (lv_metadata_1_0= ruleMetadataRef ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:631:1: (lv_metadata_1_0= ruleMetadataRef )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:631:1: (lv_metadata_1_0= ruleMetadataRef )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:632:3: lv_metadata_1_0= ruleMetadataRef
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getGlobalValueRefAccess().getMetadataMetadataRefParserRuleCall_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleMetadataRef_in_ruleGlobalValueRef1398);
                      lv_metadata_1_0=ruleMetadataRef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getGlobalValueRefRule());
                        	        }
                               		set(
                               			current, 
                               			"metadata",
                                		lv_metadata_1_0, 
                                		"MetadataRef");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleGlobalValueRef"
  
  
      // $ANTLR start "entryRuleLocalValueRef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:656:1: entryRuleLocalValueRef returns [EObject current=null] : iv_ruleLocalValueRef= ruleLocalValueRef EOF ;
      public final EObject entryRuleLocalValueRef() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleLocalValueRef = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:657:2: (iv_ruleLocalValueRef= ruleLocalValueRef EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:658:2: iv_ruleLocalValueRef= ruleLocalValueRef EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getLocalValueRefRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleLocalValueRef_in_entryRuleLocalValueRef1434);
              iv_ruleLocalValueRef=ruleLocalValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleLocalValueRef; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLocalValueRef1444); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleLocalValueRef"
  
  
      // $ANTLR start "ruleLocalValueRef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:665:1: ruleLocalValueRef returns [EObject current=null] : ( (otherlv_0= RULE_LOCAL_ID ) ) ;
      public final EObject ruleLocalValueRef() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:668:28: ( ( (otherlv_0= RULE_LOCAL_ID ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:669:1: ( (otherlv_0= RULE_LOCAL_ID ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:669:1: ( (otherlv_0= RULE_LOCAL_ID ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:670:1: (otherlv_0= RULE_LOCAL_ID )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:670:1: (otherlv_0= RULE_LOCAL_ID )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:671:3: otherlv_0= RULE_LOCAL_ID
              {
              if ( state.backtracking==0 ) {
  
                			if (current==null) {
                	            current = createModelElement(grammarAccess.getLocalValueRefRule());
                	        }
                        
              }
              otherlv_0=(Token)match(input,RULE_LOCAL_ID,FollowSets000.FOLLOW_RULE_LOCAL_ID_in_ruleLocalValueRef1488); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                		newLeafNode(otherlv_0, grammarAccess.getLocalValueRefAccess().getRefLocalValueCrossReference_0()); 
                	
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleLocalValueRef"
  
  
      // $ANTLR start "entryRuleGlobalValue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:690:1: entryRuleGlobalValue returns [EObject current=null] : iv_ruleGlobalValue= ruleGlobalValue EOF ;
      public final EObject entryRuleGlobalValue() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleGlobalValue = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:691:2: (iv_ruleGlobalValue= ruleGlobalValue EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:692:2: iv_ruleGlobalValue= ruleGlobalValue EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getGlobalValueRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleGlobalValue_in_entryRuleGlobalValue1523);
              iv_ruleGlobalValue=ruleGlobalValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleGlobalValue; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleGlobalValue1533); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleGlobalValue"
  
  
      // $ANTLR start "ruleGlobalValue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:699:1: ruleGlobalValue returns [EObject current=null] : (this_GlobalVariable_0= ruleGlobalVariable | this_Function_1= ruleFunction | this_Alias_2= ruleAlias ) ;
      public final EObject ruleGlobalValue() throws RecognitionException {
          EObject current = null;
  
          EObject this_GlobalVariable_0 = null;
  
          EObject this_Function_1 = null;
  
          EObject this_Alias_2 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:702:28: ( (this_GlobalVariable_0= ruleGlobalVariable | this_Function_1= ruleFunction | this_Alias_2= ruleAlias ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:703:1: (this_GlobalVariable_0= ruleGlobalVariable | this_Function_1= ruleFunction | this_Alias_2= ruleAlias )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:703:1: (this_GlobalVariable_0= ruleGlobalVariable | this_Function_1= ruleFunction | this_Alias_2= ruleAlias )
              int alt9=3;
              alt9 = dfa9.predict(input);
              switch (alt9) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:704:5: this_GlobalVariable_0= ruleGlobalVariable
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getGlobalValueAccess().getGlobalVariableParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleGlobalVariable_in_ruleGlobalValue1580);
                      this_GlobalVariable_0=ruleGlobalVariable();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_GlobalVariable_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:714:5: this_Function_1= ruleFunction
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getGlobalValueAccess().getFunctionParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleFunction_in_ruleGlobalValue1607);
                      this_Function_1=ruleFunction();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Function_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:724:5: this_Alias_2= ruleAlias
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getGlobalValueAccess().getAliasParserRuleCall_2()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleAlias_in_ruleGlobalValue1634);
                      this_Alias_2=ruleAlias();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Alias_2; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleGlobalValue"
  
  
      // $ANTLR start "entryRuleNamedInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:744:1: entryRuleNamedInstruction returns [EObject current=null] : iv_ruleNamedInstruction= ruleNamedInstruction EOF ;
      public final EObject entryRuleNamedInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleNamedInstruction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:745:2: (iv_ruleNamedInstruction= ruleNamedInstruction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:746:2: iv_ruleNamedInstruction= ruleNamedInstruction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getNamedInstructionRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleNamedInstruction_in_entryRuleNamedInstruction1673);
              iv_ruleNamedInstruction=ruleNamedInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleNamedInstruction; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNamedInstruction1683); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleNamedInstruction"
  
  
      // $ANTLR start "ruleNamedInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:753:1: ruleNamedInstruction returns [EObject current=null] : (this_StartingInstruction_0= ruleStartingInstruction | this_NamedMiddleInstruction_1= ruleNamedMiddleInstruction | this_NamedTerminatorInstruction_2= ruleNamedTerminatorInstruction ) ;
      public final EObject ruleNamedInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject this_StartingInstruction_0 = null;
  
          EObject this_NamedMiddleInstruction_1 = null;
  
          EObject this_NamedTerminatorInstruction_2 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:756:28: ( (this_StartingInstruction_0= ruleStartingInstruction | this_NamedMiddleInstruction_1= ruleNamedMiddleInstruction | this_NamedTerminatorInstruction_2= ruleNamedTerminatorInstruction ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:757:1: (this_StartingInstruction_0= ruleStartingInstruction | this_NamedMiddleInstruction_1= ruleNamedMiddleInstruction | this_NamedTerminatorInstruction_2= ruleNamedTerminatorInstruction )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:757:1: (this_StartingInstruction_0= ruleStartingInstruction | this_NamedMiddleInstruction_1= ruleNamedMiddleInstruction | this_NamedTerminatorInstruction_2= ruleNamedTerminatorInstruction )
              int alt10=3;
              alt10 = dfa10.predict(input);
              switch (alt10) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:758:5: this_StartingInstruction_0= ruleStartingInstruction
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getNamedInstructionAccess().getStartingInstructionParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleStartingInstruction_in_ruleNamedInstruction1730);
                      this_StartingInstruction_0=ruleStartingInstruction();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_StartingInstruction_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:768:5: this_NamedMiddleInstruction_1= ruleNamedMiddleInstruction
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getNamedInstructionAccess().getNamedMiddleInstructionParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleNamedMiddleInstruction_in_ruleNamedInstruction1757);
                      this_NamedMiddleInstruction_1=ruleNamedMiddleInstruction();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_NamedMiddleInstruction_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:778:5: this_NamedTerminatorInstruction_2= ruleNamedTerminatorInstruction
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getNamedInstructionAccess().getNamedTerminatorInstructionParserRuleCall_2()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleNamedTerminatorInstruction_in_ruleNamedInstruction1784);
                      this_NamedTerminatorInstruction_2=ruleNamedTerminatorInstruction();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_NamedTerminatorInstruction_2; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleNamedInstruction"
  
  
      // $ANTLR start "entryRuleAlias"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:796:1: entryRuleAlias returns [EObject current=null] : iv_ruleAlias= ruleAlias EOF ;
      public final EObject entryRuleAlias() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleAlias = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:797:2: (iv_ruleAlias= ruleAlias EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:798:2: iv_ruleAlias= ruleAlias EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getAliasRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleAlias_in_entryRuleAlias1821);
              iv_ruleAlias=ruleAlias();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleAlias; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAlias1831); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleAlias"
  
  
      // $ANTLR start "ruleAlias"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:805:1: ruleAlias returns [EObject current=null] : ( ( (lv_name_0_0= ruleGlobalName ) ) otherlv_1= 'alias' ( (lv_linkage_2_0= ruleLinkage ) )? ( (lv_visibility_3_0= ruleVisibility ) )? ( (lv_type_4_0= ruleType ) ) ( (lv_aliasee_5_0= ruleAliasee ) ) ) ;
      public final EObject ruleAlias() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          AntlrDatatypeRuleToken lv_name_0_0 = null;
  
          AntlrDatatypeRuleToken lv_linkage_2_0 = null;
  
          AntlrDatatypeRuleToken lv_visibility_3_0 = null;
  
          EObject lv_type_4_0 = null;
  
          EObject lv_aliasee_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:808:28: ( ( ( (lv_name_0_0= ruleGlobalName ) ) otherlv_1= 'alias' ( (lv_linkage_2_0= ruleLinkage ) )? ( (lv_visibility_3_0= ruleVisibility ) )? ( (lv_type_4_0= ruleType ) ) ( (lv_aliasee_5_0= ruleAliasee ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:809:1: ( ( (lv_name_0_0= ruleGlobalName ) ) otherlv_1= 'alias' ( (lv_linkage_2_0= ruleLinkage ) )? ( (lv_visibility_3_0= ruleVisibility ) )? ( (lv_type_4_0= ruleType ) ) ( (lv_aliasee_5_0= ruleAliasee ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:809:1: ( ( (lv_name_0_0= ruleGlobalName ) ) otherlv_1= 'alias' ( (lv_linkage_2_0= ruleLinkage ) )? ( (lv_visibility_3_0= ruleVisibility ) )? ( (lv_type_4_0= ruleType ) ) ( (lv_aliasee_5_0= ruleAliasee ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:809:2: ( (lv_name_0_0= ruleGlobalName ) ) otherlv_1= 'alias' ( (lv_linkage_2_0= ruleLinkage ) )? ( (lv_visibility_3_0= ruleVisibility ) )? ( (lv_type_4_0= ruleType ) ) ( (lv_aliasee_5_0= ruleAliasee ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:809:2: ( (lv_name_0_0= ruleGlobalName ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:810:1: (lv_name_0_0= ruleGlobalName )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:810:1: (lv_name_0_0= ruleGlobalName )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:811:3: lv_name_0_0= ruleGlobalName
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getAliasAccess().getNameGlobalNameParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleGlobalName_in_ruleAlias1877);
              lv_name_0_0=ruleGlobalName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getAliasRule());
                	        }
                       		set(
                       			current, 
                       			"name",
                        		lv_name_0_0, 
                        		"GlobalName");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_1=(Token)match(input,29,FollowSets000.FOLLOW_29_in_ruleAlias1889); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getAliasAccess().getAliasKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:831:1: ( (lv_linkage_2_0= ruleLinkage ) )?
              int alt11=2;
              int LA11_0 = input.LA(1);
  
              if ( ((LA11_0>=225 && LA11_0<=240)) ) {
                  alt11=1;
              }
              switch (alt11) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:832:1: (lv_linkage_2_0= ruleLinkage )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:832:1: (lv_linkage_2_0= ruleLinkage )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:833:3: lv_linkage_2_0= ruleLinkage
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getAliasAccess().getLinkageLinkageParserRuleCall_2_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleLinkage_in_ruleAlias1910);
                      lv_linkage_2_0=ruleLinkage();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getAliasRule());
                        	        }
                               		set(
                               			current, 
                               			"linkage",
                                		lv_linkage_2_0, 
                                		"Linkage");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:849:3: ( (lv_visibility_3_0= ruleVisibility ) )?
              int alt12=2;
              int LA12_0 = input.LA(1);
  
              if ( ((LA12_0>=263 && LA12_0<=265)) ) {
                  alt12=1;
              }
              switch (alt12) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:850:1: (lv_visibility_3_0= ruleVisibility )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:850:1: (lv_visibility_3_0= ruleVisibility )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:851:3: lv_visibility_3_0= ruleVisibility
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getAliasAccess().getVisibilityVisibilityParserRuleCall_3_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleVisibility_in_ruleAlias1932);
                      lv_visibility_3_0=ruleVisibility();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getAliasRule());
                        	        }
                               		set(
                               			current, 
                               			"visibility",
                                		lv_visibility_3_0, 
                                		"Visibility");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:867:3: ( (lv_type_4_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:868:1: (lv_type_4_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:868:1: (lv_type_4_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:869:3: lv_type_4_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getAliasAccess().getTypeTypeParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleType_in_ruleAlias1954);
              lv_type_4_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getAliasRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_4_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:885:2: ( (lv_aliasee_5_0= ruleAliasee ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:886:1: (lv_aliasee_5_0= ruleAliasee )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:886:1: (lv_aliasee_5_0= ruleAliasee )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:887:3: lv_aliasee_5_0= ruleAliasee
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getAliasAccess().getAliaseeAliaseeParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleAliasee_in_ruleAlias1975);
              lv_aliasee_5_0=ruleAliasee();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getAliasRule());
                	        }
                       		set(
                       			current, 
                       			"aliasee",
                        		lv_aliasee_5_0, 
                        		"Aliasee");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleAlias"
  
  
      // $ANTLR start "entryRuleAliasee"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:911:1: entryRuleAliasee returns [EObject current=null] : iv_ruleAliasee= ruleAliasee EOF ;
      public final EObject entryRuleAliasee() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleAliasee = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:912:2: (iv_ruleAliasee= ruleAliasee EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:913:2: iv_ruleAliasee= ruleAliasee EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getAliaseeRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleAliasee_in_entryRuleAliasee2011);
              iv_ruleAliasee=ruleAliasee();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleAliasee; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAliasee2021); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleAliasee"
  
  
      // $ANTLR start "ruleAliasee"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:920:1: ruleAliasee returns [EObject current=null] : ( ( (otherlv_0= RULE_GLOBAL_ID ) ) | ( (lv_bitcast_1_0= ruleConstantExpression_convert ) ) ) ;
      public final EObject ruleAliasee() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          EObject lv_bitcast_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:923:28: ( ( ( (otherlv_0= RULE_GLOBAL_ID ) ) | ( (lv_bitcast_1_0= ruleConstantExpression_convert ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:924:1: ( ( (otherlv_0= RULE_GLOBAL_ID ) ) | ( (lv_bitcast_1_0= ruleConstantExpression_convert ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:924:1: ( ( (otherlv_0= RULE_GLOBAL_ID ) ) | ( (lv_bitcast_1_0= ruleConstantExpression_convert ) ) )
              int alt13=2;
              int LA13_0 = input.LA(1);
  
              if ( (LA13_0==RULE_GLOBAL_ID) ) {
                  alt13=1;
              }
              else if ( ((LA13_0>=157 && LA13_0<=169)) ) {
                  alt13=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 13, 0, input);
  
                  throw nvae;
              }
              switch (alt13) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:924:2: ( (otherlv_0= RULE_GLOBAL_ID ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:924:2: ( (otherlv_0= RULE_GLOBAL_ID ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:925:1: (otherlv_0= RULE_GLOBAL_ID )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:925:1: (otherlv_0= RULE_GLOBAL_ID )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:926:3: otherlv_0= RULE_GLOBAL_ID
                      {
                      if ( state.backtracking==0 ) {
  
                        			if (current==null) {
                        	            current = createModelElement(grammarAccess.getAliaseeRule());
                        	        }
                                
                      }
                      otherlv_0=(Token)match(input,RULE_GLOBAL_ID,FollowSets000.FOLLOW_RULE_GLOBAL_ID_in_ruleAliasee2066); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        		newLeafNode(otherlv_0, grammarAccess.getAliaseeAccess().getRefGlobalValueDefCrossReference_0_0()); 
                        	
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:938:6: ( (lv_bitcast_1_0= ruleConstantExpression_convert ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:938:6: ( (lv_bitcast_1_0= ruleConstantExpression_convert ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:939:1: (lv_bitcast_1_0= ruleConstantExpression_convert )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:939:1: (lv_bitcast_1_0= ruleConstantExpression_convert )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:940:3: lv_bitcast_1_0= ruleConstantExpression_convert
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getAliaseeAccess().getBitcastConstantExpression_convertParserRuleCall_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_convert_in_ruleAliasee2093);
                      lv_bitcast_1_0=ruleConstantExpression_convert();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getAliaseeRule());
                        	        }
                               		set(
                               			current, 
                               			"bitcast",
                                		lv_bitcast_1_0, 
                                		"ConstantExpression_convert");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleAliasee"
  
  
      // $ANTLR start "entryRuleTargetInfo"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:964:1: entryRuleTargetInfo returns [EObject current=null] : iv_ruleTargetInfo= ruleTargetInfo EOF ;
      public final EObject entryRuleTargetInfo() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleTargetInfo = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:965:2: (iv_ruleTargetInfo= ruleTargetInfo EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:966:2: iv_ruleTargetInfo= ruleTargetInfo EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getTargetInfoRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleTargetInfo_in_entryRuleTargetInfo2129);
              iv_ruleTargetInfo=ruleTargetInfo();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleTargetInfo; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTargetInfo2139); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleTargetInfo"
  
  
      // $ANTLR start "ruleTargetInfo"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:973:1: ruleTargetInfo returns [EObject current=null] : (otherlv_0= 'target' ( ( (lv_infoType_1_1= 'datalayout' | lv_infoType_1_2= 'triple' ) ) ) otherlv_2= '=' ( (lv_layout_3_0= RULE_STRING ) ) ) ;
      public final EObject ruleTargetInfo() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token lv_infoType_1_1=null;
          Token lv_infoType_1_2=null;
          Token otherlv_2=null;
          Token lv_layout_3_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:976:28: ( (otherlv_0= 'target' ( ( (lv_infoType_1_1= 'datalayout' | lv_infoType_1_2= 'triple' ) ) ) otherlv_2= '=' ( (lv_layout_3_0= RULE_STRING ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:977:1: (otherlv_0= 'target' ( ( (lv_infoType_1_1= 'datalayout' | lv_infoType_1_2= 'triple' ) ) ) otherlv_2= '=' ( (lv_layout_3_0= RULE_STRING ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:977:1: (otherlv_0= 'target' ( ( (lv_infoType_1_1= 'datalayout' | lv_infoType_1_2= 'triple' ) ) ) otherlv_2= '=' ( (lv_layout_3_0= RULE_STRING ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:977:3: otherlv_0= 'target' ( ( (lv_infoType_1_1= 'datalayout' | lv_infoType_1_2= 'triple' ) ) ) otherlv_2= '=' ( (lv_layout_3_0= RULE_STRING ) )
              {
              otherlv_0=(Token)match(input,30,FollowSets000.FOLLOW_30_in_ruleTargetInfo2176); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getTargetInfoAccess().getTargetKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:981:1: ( ( (lv_infoType_1_1= 'datalayout' | lv_infoType_1_2= 'triple' ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:982:1: ( (lv_infoType_1_1= 'datalayout' | lv_infoType_1_2= 'triple' ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:982:1: ( (lv_infoType_1_1= 'datalayout' | lv_infoType_1_2= 'triple' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:983:1: (lv_infoType_1_1= 'datalayout' | lv_infoType_1_2= 'triple' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:983:1: (lv_infoType_1_1= 'datalayout' | lv_infoType_1_2= 'triple' )
              int alt14=2;
              int LA14_0 = input.LA(1);
  
              if ( (LA14_0==31) ) {
                  alt14=1;
              }
              else if ( (LA14_0==32) ) {
                  alt14=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 14, 0, input);
  
                  throw nvae;
              }
              switch (alt14) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:984:3: lv_infoType_1_1= 'datalayout'
                      {
                      lv_infoType_1_1=(Token)match(input,31,FollowSets000.FOLLOW_31_in_ruleTargetInfo2196); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_infoType_1_1, grammarAccess.getTargetInfoAccess().getInfoTypeDatalayoutKeyword_1_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getTargetInfoRule());
                        	        }
                               		setWithLastConsumed(current, "infoType", lv_infoType_1_1, null);
                        	    
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:996:8: lv_infoType_1_2= 'triple'
                      {
                      lv_infoType_1_2=(Token)match(input,32,FollowSets000.FOLLOW_32_in_ruleTargetInfo2225); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_infoType_1_2, grammarAccess.getTargetInfoAccess().getInfoTypeTripleKeyword_1_0_1());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getTargetInfoRule());
                        	        }
                               		setWithLastConsumed(current, "infoType", lv_infoType_1_2, null);
                        	    
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleTargetInfo2253); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getTargetInfoAccess().getEqualsSignKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1015:1: ( (lv_layout_3_0= RULE_STRING ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1016:1: (lv_layout_3_0= RULE_STRING )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1016:1: (lv_layout_3_0= RULE_STRING )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1017:3: lv_layout_3_0= RULE_STRING
              {
              lv_layout_3_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleTargetInfo2270); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_layout_3_0, grammarAccess.getTargetInfoAccess().getLayoutSTRINGTerminalRuleCall_3_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getTargetInfoRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"layout",
                        		lv_layout_3_0, 
                        		"STRING");
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleTargetInfo"
  
  
      // $ANTLR start "entryRuleInlineAsm"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1041:1: entryRuleInlineAsm returns [EObject current=null] : iv_ruleInlineAsm= ruleInlineAsm EOF ;
      public final EObject entryRuleInlineAsm() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInlineAsm = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1042:2: (iv_ruleInlineAsm= ruleInlineAsm EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1043:2: iv_ruleInlineAsm= ruleInlineAsm EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInlineAsmRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleInlineAsm_in_entryRuleInlineAsm2311);
              iv_ruleInlineAsm=ruleInlineAsm();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInlineAsm; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInlineAsm2321); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInlineAsm"
  
  
      // $ANTLR start "ruleInlineAsm"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1050:1: ruleInlineAsm returns [EObject current=null] : (otherlv_0= 'module' otherlv_1= 'asm' ( (lv_asmLine_2_0= RULE_STRING ) ) ) ;
      public final EObject ruleInlineAsm() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token otherlv_1=null;
          Token lv_asmLine_2_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1053:28: ( (otherlv_0= 'module' otherlv_1= 'asm' ( (lv_asmLine_2_0= RULE_STRING ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1054:1: (otherlv_0= 'module' otherlv_1= 'asm' ( (lv_asmLine_2_0= RULE_STRING ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1054:1: (otherlv_0= 'module' otherlv_1= 'asm' ( (lv_asmLine_2_0= RULE_STRING ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1054:3: otherlv_0= 'module' otherlv_1= 'asm' ( (lv_asmLine_2_0= RULE_STRING ) )
              {
              otherlv_0=(Token)match(input,33,FollowSets000.FOLLOW_33_in_ruleInlineAsm2358); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getInlineAsmAccess().getModuleKeyword_0());
                    
              }
              otherlv_1=(Token)match(input,34,FollowSets000.FOLLOW_34_in_ruleInlineAsm2370); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getInlineAsmAccess().getAsmKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1062:1: ( (lv_asmLine_2_0= RULE_STRING ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1063:1: (lv_asmLine_2_0= RULE_STRING )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1063:1: (lv_asmLine_2_0= RULE_STRING )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1064:3: lv_asmLine_2_0= RULE_STRING
              {
              lv_asmLine_2_0=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleInlineAsm2387); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_asmLine_2_0, grammarAccess.getInlineAsmAccess().getAsmLineSTRINGTerminalRuleCall_2_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInlineAsmRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"asmLine",
                        		lv_asmLine_2_0, 
                        		"STRING");
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInlineAsm"
  
  
      // $ANTLR start "entryRuleGlobalVariable"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1088:1: entryRuleGlobalVariable returns [EObject current=null] : iv_ruleGlobalVariable= ruleGlobalVariable EOF ;
      public final EObject entryRuleGlobalVariable() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleGlobalVariable = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1089:2: (iv_ruleGlobalVariable= ruleGlobalVariable EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1090:2: iv_ruleGlobalVariable= ruleGlobalVariable EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getGlobalVariableRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleGlobalVariable_in_entryRuleGlobalVariable2428);
              iv_ruleGlobalVariable=ruleGlobalVariable();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleGlobalVariable; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleGlobalVariable2438); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleGlobalVariable"
  
  
      // $ANTLR start "ruleGlobalVariable"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1097:1: ruleGlobalVariable returns [EObject current=null] : ( ( (lv_name_0_0= ruleGlobalName ) ) ( (lv_linkage_1_0= ruleLinkage ) )? ( (lv_addrspace_2_0= ruleAddressSpace ) )? ( (lv_tlsModel_3_0= ruleTLSmodel ) )? (otherlv_4= 'unnamed_addr' )? (otherlv_5= 'constant' | otherlv_6= 'global' ) ( (lv_type_7_0= ruleType ) ) ( (lv_initialValue_8_0= ruleConstant ) )? (otherlv_9= ',' ( (lv_section_10_0= ruleSection ) ) )? (otherlv_11= ',' ( (lv_align_12_0= ruleAlign ) ) )? ) ;
      public final EObject ruleGlobalVariable() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_4=null;
          Token otherlv_5=null;
          Token otherlv_6=null;
          Token otherlv_9=null;
          Token otherlv_11=null;
          AntlrDatatypeRuleToken lv_name_0_0 = null;
  
          AntlrDatatypeRuleToken lv_linkage_1_0 = null;
  
          EObject lv_addrspace_2_0 = null;
  
          AntlrDatatypeRuleToken lv_tlsModel_3_0 = null;
  
          EObject lv_type_7_0 = null;
  
          EObject lv_initialValue_8_0 = null;
  
          AntlrDatatypeRuleToken lv_section_10_0 = null;
  
          AntlrDatatypeRuleToken lv_align_12_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1100:28: ( ( ( (lv_name_0_0= ruleGlobalName ) ) ( (lv_linkage_1_0= ruleLinkage ) )? ( (lv_addrspace_2_0= ruleAddressSpace ) )? ( (lv_tlsModel_3_0= ruleTLSmodel ) )? (otherlv_4= 'unnamed_addr' )? (otherlv_5= 'constant' | otherlv_6= 'global' ) ( (lv_type_7_0= ruleType ) ) ( (lv_initialValue_8_0= ruleConstant ) )? (otherlv_9= ',' ( (lv_section_10_0= ruleSection ) ) )? (otherlv_11= ',' ( (lv_align_12_0= ruleAlign ) ) )? ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1101:1: ( ( (lv_name_0_0= ruleGlobalName ) ) ( (lv_linkage_1_0= ruleLinkage ) )? ( (lv_addrspace_2_0= ruleAddressSpace ) )? ( (lv_tlsModel_3_0= ruleTLSmodel ) )? (otherlv_4= 'unnamed_addr' )? (otherlv_5= 'constant' | otherlv_6= 'global' ) ( (lv_type_7_0= ruleType ) ) ( (lv_initialValue_8_0= ruleConstant ) )? (otherlv_9= ',' ( (lv_section_10_0= ruleSection ) ) )? (otherlv_11= ',' ( (lv_align_12_0= ruleAlign ) ) )? )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1101:1: ( ( (lv_name_0_0= ruleGlobalName ) ) ( (lv_linkage_1_0= ruleLinkage ) )? ( (lv_addrspace_2_0= ruleAddressSpace ) )? ( (lv_tlsModel_3_0= ruleTLSmodel ) )? (otherlv_4= 'unnamed_addr' )? (otherlv_5= 'constant' | otherlv_6= 'global' ) ( (lv_type_7_0= ruleType ) ) ( (lv_initialValue_8_0= ruleConstant ) )? (otherlv_9= ',' ( (lv_section_10_0= ruleSection ) ) )? (otherlv_11= ',' ( (lv_align_12_0= ruleAlign ) ) )? )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1101:2: ( (lv_name_0_0= ruleGlobalName ) ) ( (lv_linkage_1_0= ruleLinkage ) )? ( (lv_addrspace_2_0= ruleAddressSpace ) )? ( (lv_tlsModel_3_0= ruleTLSmodel ) )? (otherlv_4= 'unnamed_addr' )? (otherlv_5= 'constant' | otherlv_6= 'global' ) ( (lv_type_7_0= ruleType ) ) ( (lv_initialValue_8_0= ruleConstant ) )? (otherlv_9= ',' ( (lv_section_10_0= ruleSection ) ) )? (otherlv_11= ',' ( (lv_align_12_0= ruleAlign ) ) )?
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1101:2: ( (lv_name_0_0= ruleGlobalName ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1102:1: (lv_name_0_0= ruleGlobalName )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1102:1: (lv_name_0_0= ruleGlobalName )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1103:3: lv_name_0_0= ruleGlobalName
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getGlobalVariableAccess().getNameGlobalNameParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleGlobalName_in_ruleGlobalVariable2484);
              lv_name_0_0=ruleGlobalName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getGlobalVariableRule());
                	        }
                       		set(
                       			current, 
                       			"name",
                        		lv_name_0_0, 
                        		"GlobalName");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1119:2: ( (lv_linkage_1_0= ruleLinkage ) )?
              int alt15=2;
              int LA15_0 = input.LA(1);
  
              if ( ((LA15_0>=225 && LA15_0<=240)) ) {
                  alt15=1;
              }
              switch (alt15) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1120:1: (lv_linkage_1_0= ruleLinkage )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1120:1: (lv_linkage_1_0= ruleLinkage )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1121:3: lv_linkage_1_0= ruleLinkage
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getGlobalVariableAccess().getLinkageLinkageParserRuleCall_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleLinkage_in_ruleGlobalVariable2505);
                      lv_linkage_1_0=ruleLinkage();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getGlobalVariableRule());
                        	        }
                               		set(
                               			current, 
                               			"linkage",
                                		lv_linkage_1_0, 
                                		"Linkage");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1137:3: ( (lv_addrspace_2_0= ruleAddressSpace ) )?
              int alt16=2;
              int LA16_0 = input.LA(1);
  
              if ( (LA16_0==85) ) {
                  alt16=1;
              }
              switch (alt16) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1138:1: (lv_addrspace_2_0= ruleAddressSpace )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1138:1: (lv_addrspace_2_0= ruleAddressSpace )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1139:3: lv_addrspace_2_0= ruleAddressSpace
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getGlobalVariableAccess().getAddrspaceAddressSpaceParserRuleCall_2_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleAddressSpace_in_ruleGlobalVariable2527);
                      lv_addrspace_2_0=ruleAddressSpace();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getGlobalVariableRule());
                        	        }
                               		set(
                               			current, 
                               			"addrspace",
                                		lv_addrspace_2_0, 
                                		"AddressSpace");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1155:3: ( (lv_tlsModel_3_0= ruleTLSmodel ) )?
              int alt17=2;
              int LA17_0 = input.LA(1);
  
              if ( (LA17_0==81) ) {
                  alt17=1;
              }
              switch (alt17) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1156:1: (lv_tlsModel_3_0= ruleTLSmodel )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1156:1: (lv_tlsModel_3_0= ruleTLSmodel )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1157:3: lv_tlsModel_3_0= ruleTLSmodel
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getGlobalVariableAccess().getTlsModelTLSmodelParserRuleCall_3_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleTLSmodel_in_ruleGlobalVariable2549);
                      lv_tlsModel_3_0=ruleTLSmodel();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getGlobalVariableRule());
                        	        }
                               		set(
                               			current, 
                               			"tlsModel",
                                		lv_tlsModel_3_0, 
                                		"TLSmodel");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1173:3: (otherlv_4= 'unnamed_addr' )?
              int alt18=2;
              int LA18_0 = input.LA(1);
  
              if ( (LA18_0==35) ) {
                  alt18=1;
              }
              switch (alt18) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1173:5: otherlv_4= 'unnamed_addr'
                      {
                      otherlv_4=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleGlobalVariable2563); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_4, grammarAccess.getGlobalVariableAccess().getUnnamed_addrKeyword_4());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1177:3: (otherlv_5= 'constant' | otherlv_6= 'global' )
              int alt19=2;
              int LA19_0 = input.LA(1);
  
              if ( (LA19_0==36) ) {
                  alt19=1;
              }
              else if ( (LA19_0==37) ) {
                  alt19=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 19, 0, input);
  
                  throw nvae;
              }
              switch (alt19) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1177:5: otherlv_5= 'constant'
                      {
                      otherlv_5=(Token)match(input,36,FollowSets000.FOLLOW_36_in_ruleGlobalVariable2578); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_5, grammarAccess.getGlobalVariableAccess().getConstantKeyword_5_0());
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1182:7: otherlv_6= 'global'
                      {
                      otherlv_6=(Token)match(input,37,FollowSets000.FOLLOW_37_in_ruleGlobalVariable2596); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_6, grammarAccess.getGlobalVariableAccess().getGlobalKeyword_5_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1186:2: ( (lv_type_7_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1187:1: (lv_type_7_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1187:1: (lv_type_7_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1188:3: lv_type_7_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getGlobalVariableAccess().getTypeTypeParserRuleCall_6_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleType_in_ruleGlobalVariable2618);
              lv_type_7_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getGlobalVariableRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_7_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1204:2: ( (lv_initialValue_8_0= ruleConstant ) )?
              int alt20=2;
              int LA20_0 = input.LA(1);
  
              if ( (LA20_0==RULE_INTEGER||(LA20_0>=RULE_SIGNED_INT && LA20_0<=RULE_METADATA_STRING)||LA20_0==26||LA20_0==42||(LA20_0>=44 && LA20_0<=55)||(LA20_0>=58 && LA20_0<=61)||(LA20_0>=63 && LA20_0<=76)||LA20_0==78||LA20_0==80||(LA20_0>=157 && LA20_0<=169)) ) {
                  alt20=1;
              }
              else if ( (LA20_0==RULE_GLOBAL_ID) ) {
                  int LA20_2 = input.LA(2);
  
                  if ( (LA20_2==EOF||(LA20_2>=RULE_META_INT && LA20_2<=RULE_GLOBAL_ID)||LA20_2==24||(LA20_2>=29 && LA20_2<=30)||LA20_2==33||(LA20_2>=35 && LA20_2<=38)||LA20_2==81||LA20_2==85||(LA20_2>=89 && LA20_2<=90)||LA20_2==215||(LA20_2>=225 && LA20_2<=240)) ) {
                      alt20=1;
                  }
              }
              switch (alt20) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1205:1: (lv_initialValue_8_0= ruleConstant )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1205:1: (lv_initialValue_8_0= ruleConstant )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1206:3: lv_initialValue_8_0= ruleConstant
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getGlobalVariableAccess().getInitialValueConstantParserRuleCall_7_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstant_in_ruleGlobalVariable2639);
                      lv_initialValue_8_0=ruleConstant();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getGlobalVariableRule());
                        	        }
                               		set(
                               			current, 
                               			"initialValue",
                                		lv_initialValue_8_0, 
                                		"Constant");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1222:3: (otherlv_9= ',' ( (lv_section_10_0= ruleSection ) ) )?
              int alt21=2;
              int LA21_0 = input.LA(1);
  
              if ( (LA21_0==38) ) {
                  int LA21_1 = input.LA(2);
  
                  if ( (LA21_1==86) ) {
                      alt21=1;
                  }
              }
              switch (alt21) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1222:5: otherlv_9= ',' ( (lv_section_10_0= ruleSection ) )
                      {
                      otherlv_9=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleGlobalVariable2653); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_9, grammarAccess.getGlobalVariableAccess().getCommaKeyword_8_0());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1226:1: ( (lv_section_10_0= ruleSection ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1227:1: (lv_section_10_0= ruleSection )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1227:1: (lv_section_10_0= ruleSection )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1228:3: lv_section_10_0= ruleSection
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getGlobalVariableAccess().getSectionSectionParserRuleCall_8_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleSection_in_ruleGlobalVariable2674);
                      lv_section_10_0=ruleSection();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getGlobalVariableRule());
                        	        }
                               		set(
                               			current, 
                               			"section",
                                		lv_section_10_0, 
                                		"Section");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1244:4: (otherlv_11= ',' ( (lv_align_12_0= ruleAlign ) ) )?
              int alt22=2;
              int LA22_0 = input.LA(1);
  
              if ( (LA22_0==38) ) {
                  alt22=1;
              }
              switch (alt22) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1244:6: otherlv_11= ',' ( (lv_align_12_0= ruleAlign ) )
                      {
                      otherlv_11=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleGlobalVariable2689); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_11, grammarAccess.getGlobalVariableAccess().getCommaKeyword_9_0());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1248:1: ( (lv_align_12_0= ruleAlign ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1249:1: (lv_align_12_0= ruleAlign )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1249:1: (lv_align_12_0= ruleAlign )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1250:3: lv_align_12_0= ruleAlign
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getGlobalVariableAccess().getAlignAlignParserRuleCall_9_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleAlign_in_ruleGlobalVariable2710);
                      lv_align_12_0=ruleAlign();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getGlobalVariableRule());
                        	        }
                               		set(
                               			current, 
                               			"align",
                                		lv_align_12_0, 
                                		"Align");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleGlobalVariable"
  
  
      // $ANTLR start "entryRuleConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1274:1: entryRuleConstant returns [EObject current=null] : iv_ruleConstant= ruleConstant EOF ;
      public final EObject entryRuleConstant() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstant = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1275:2: (iv_ruleConstant= ruleConstant EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1276:2: iv_ruleConstant= ruleConstant EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstant_in_entryRuleConstant2748);
              iv_ruleConstant=ruleConstant();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstant; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstant2758); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstant"
  
  
      // $ANTLR start "ruleConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1283:1: ruleConstant returns [EObject current=null] : (this_SimpleConstant_0= ruleSimpleConstant | ( ( ruleStructureConstant )=>this_StructureConstant_1= ruleStructureConstant ) | this_ArrayConstant_2= ruleArrayConstant | this_VectorConstant_3= ruleVectorConstant | this_ZeroInitializer_4= ruleZeroInitializer | this_MetadataNode_5= ruleMetadataNode | this_MetadataString_6= ruleMetadataString | this_BlockAddress_7= ruleBlockAddress | this_Undef_8= ruleUndef | this_ConstantExpression_9= ruleConstantExpression | ( (otherlv_10= RULE_GLOBAL_ID ) ) ) ;
      public final EObject ruleConstant() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_10=null;
          EObject this_SimpleConstant_0 = null;
  
          EObject this_StructureConstant_1 = null;
  
          EObject this_ArrayConstant_2 = null;
  
          EObject this_VectorConstant_3 = null;
  
          EObject this_ZeroInitializer_4 = null;
  
          EObject this_MetadataNode_5 = null;
  
          EObject this_MetadataString_6 = null;
  
          EObject this_BlockAddress_7 = null;
  
          EObject this_Undef_8 = null;
  
          EObject this_ConstantExpression_9 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1286:28: ( (this_SimpleConstant_0= ruleSimpleConstant | ( ( ruleStructureConstant )=>this_StructureConstant_1= ruleStructureConstant ) | this_ArrayConstant_2= ruleArrayConstant | this_VectorConstant_3= ruleVectorConstant | this_ZeroInitializer_4= ruleZeroInitializer | this_MetadataNode_5= ruleMetadataNode | this_MetadataString_6= ruleMetadataString | this_BlockAddress_7= ruleBlockAddress | this_Undef_8= ruleUndef | this_ConstantExpression_9= ruleConstantExpression | ( (otherlv_10= RULE_GLOBAL_ID ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1287:1: (this_SimpleConstant_0= ruleSimpleConstant | ( ( ruleStructureConstant )=>this_StructureConstant_1= ruleStructureConstant ) | this_ArrayConstant_2= ruleArrayConstant | this_VectorConstant_3= ruleVectorConstant | this_ZeroInitializer_4= ruleZeroInitializer | this_MetadataNode_5= ruleMetadataNode | this_MetadataString_6= ruleMetadataString | this_BlockAddress_7= ruleBlockAddress | this_Undef_8= ruleUndef | this_ConstantExpression_9= ruleConstantExpression | ( (otherlv_10= RULE_GLOBAL_ID ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1287:1: (this_SimpleConstant_0= ruleSimpleConstant | ( ( ruleStructureConstant )=>this_StructureConstant_1= ruleStructureConstant ) | this_ArrayConstant_2= ruleArrayConstant | this_VectorConstant_3= ruleVectorConstant | this_ZeroInitializer_4= ruleZeroInitializer | this_MetadataNode_5= ruleMetadataNode | this_MetadataString_6= ruleMetadataString | this_BlockAddress_7= ruleBlockAddress | this_Undef_8= ruleUndef | this_ConstantExpression_9= ruleConstantExpression | ( (otherlv_10= RULE_GLOBAL_ID ) ) )
              int alt23=11;
              alt23 = dfa23.predict(input);
              switch (alt23) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1288:5: this_SimpleConstant_0= ruleSimpleConstant
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantAccess().getSimpleConstantParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleSimpleConstant_in_ruleConstant2805);
                      this_SimpleConstant_0=ruleSimpleConstant();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_SimpleConstant_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1297:6: ( ( ruleStructureConstant )=>this_StructureConstant_1= ruleStructureConstant )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1297:6: ( ( ruleStructureConstant )=>this_StructureConstant_1= ruleStructureConstant )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1297:7: ( ruleStructureConstant )=>this_StructureConstant_1= ruleStructureConstant
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantAccess().getStructureConstantParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleStructureConstant_in_ruleConstant2838);
                      this_StructureConstant_1=ruleStructureConstant();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_StructureConstant_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
  
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1308:5: this_ArrayConstant_2= ruleArrayConstant
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantAccess().getArrayConstantParserRuleCall_2()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleArrayConstant_in_ruleConstant2866);
                      this_ArrayConstant_2=ruleArrayConstant();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ArrayConstant_2; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1318:5: this_VectorConstant_3= ruleVectorConstant
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantAccess().getVectorConstantParserRuleCall_3()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleVectorConstant_in_ruleConstant2893);
                      this_VectorConstant_3=ruleVectorConstant();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_VectorConstant_3; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1328:5: this_ZeroInitializer_4= ruleZeroInitializer
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantAccess().getZeroInitializerParserRuleCall_4()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleZeroInitializer_in_ruleConstant2920);
                      this_ZeroInitializer_4=ruleZeroInitializer();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ZeroInitializer_4; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1338:5: this_MetadataNode_5= ruleMetadataNode
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantAccess().getMetadataNodeParserRuleCall_5()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleMetadataNode_in_ruleConstant2947);
                      this_MetadataNode_5=ruleMetadataNode();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_MetadataNode_5; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1348:5: this_MetadataString_6= ruleMetadataString
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantAccess().getMetadataStringParserRuleCall_6()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleMetadataString_in_ruleConstant2974);
                      this_MetadataString_6=ruleMetadataString();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_MetadataString_6; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1358:5: this_BlockAddress_7= ruleBlockAddress
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantAccess().getBlockAddressParserRuleCall_7()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleBlockAddress_in_ruleConstant3001);
                      this_BlockAddress_7=ruleBlockAddress();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_BlockAddress_7; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 9 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1368:5: this_Undef_8= ruleUndef
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantAccess().getUndefParserRuleCall_8()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleUndef_in_ruleConstant3028);
                      this_Undef_8=ruleUndef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Undef_8; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 10 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1378:5: this_ConstantExpression_9= ruleConstantExpression
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantAccess().getConstantExpressionParserRuleCall_9()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_in_ruleConstant3055);
                      this_ConstantExpression_9=ruleConstantExpression();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ConstantExpression_9; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 11 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1387:6: ( (otherlv_10= RULE_GLOBAL_ID ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1387:6: ( (otherlv_10= RULE_GLOBAL_ID ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1388:1: (otherlv_10= RULE_GLOBAL_ID )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1388:1: (otherlv_10= RULE_GLOBAL_ID )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1389:3: otherlv_10= RULE_GLOBAL_ID
                      {
                      if ( state.backtracking==0 ) {
  
                        			if (current==null) {
                        	            current = createModelElement(grammarAccess.getConstantRule());
                        	        }
                                
                      }
                      otherlv_10=(Token)match(input,RULE_GLOBAL_ID,FollowSets000.FOLLOW_RULE_GLOBAL_ID_in_ruleConstant3080); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        		newLeafNode(otherlv_10, grammarAccess.getConstantAccess().getRefGlobalValueDefCrossReference_10_0()); 
                        	
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstant"
  
  
      // $ANTLR start "entryRuleConstantExpression"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1408:1: entryRuleConstantExpression returns [EObject current=null] : iv_ruleConstantExpression= ruleConstantExpression EOF ;
      public final EObject entryRuleConstantExpression() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantExpression = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1409:2: (iv_ruleConstantExpression= ruleConstantExpression EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1410:2: iv_ruleConstantExpression= ruleConstantExpression EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantExpressionRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_in_entryRuleConstantExpression3116);
              iv_ruleConstantExpression=ruleConstantExpression();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantExpression; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantExpression3126); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantExpression"
  
  
      // $ANTLR start "ruleConstantExpression"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1417:1: ruleConstantExpression returns [EObject current=null] : (this_ConstantExpression_convert_0= ruleConstantExpression_convert | this_ConstantExpression_getelementptr_1= ruleConstantExpression_getelementptr | this_ConstantExpression_select_2= ruleConstantExpression_select | this_ConstantExpression_compare_3= ruleConstantExpression_compare | this_ConstantExpression_extractelement_4= ruleConstantExpression_extractelement | this_ConstantExpression_insertelement_5= ruleConstantExpression_insertelement | this_ConstantExpression_shufflevector_6= ruleConstantExpression_shufflevector | this_ConstantExpression_extractvalue_7= ruleConstantExpression_extractvalue | this_ConstantExpression_insertvalue_8= ruleConstantExpression_insertvalue | this_ConstantExpression_binary_9= ruleConstantExpression_binary ) ;
      public final EObject ruleConstantExpression() throws RecognitionException {
          EObject current = null;
  
          EObject this_ConstantExpression_convert_0 = null;
  
          EObject this_ConstantExpression_getelementptr_1 = null;
  
          EObject this_ConstantExpression_select_2 = null;
  
          EObject this_ConstantExpression_compare_3 = null;
  
          EObject this_ConstantExpression_extractelement_4 = null;
  
          EObject this_ConstantExpression_insertelement_5 = null;
  
          EObject this_ConstantExpression_shufflevector_6 = null;
  
          EObject this_ConstantExpression_extractvalue_7 = null;
  
          EObject this_ConstantExpression_insertvalue_8 = null;
  
          EObject this_ConstantExpression_binary_9 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1420:28: ( (this_ConstantExpression_convert_0= ruleConstantExpression_convert | this_ConstantExpression_getelementptr_1= ruleConstantExpression_getelementptr | this_ConstantExpression_select_2= ruleConstantExpression_select | this_ConstantExpression_compare_3= ruleConstantExpression_compare | this_ConstantExpression_extractelement_4= ruleConstantExpression_extractelement | this_ConstantExpression_insertelement_5= ruleConstantExpression_insertelement | this_ConstantExpression_shufflevector_6= ruleConstantExpression_shufflevector | this_ConstantExpression_extractvalue_7= ruleConstantExpression_extractvalue | this_ConstantExpression_insertvalue_8= ruleConstantExpression_insertvalue | this_ConstantExpression_binary_9= ruleConstantExpression_binary ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1421:1: (this_ConstantExpression_convert_0= ruleConstantExpression_convert | this_ConstantExpression_getelementptr_1= ruleConstantExpression_getelementptr | this_ConstantExpression_select_2= ruleConstantExpression_select | this_ConstantExpression_compare_3= ruleConstantExpression_compare | this_ConstantExpression_extractelement_4= ruleConstantExpression_extractelement | this_ConstantExpression_insertelement_5= ruleConstantExpression_insertelement | this_ConstantExpression_shufflevector_6= ruleConstantExpression_shufflevector | this_ConstantExpression_extractvalue_7= ruleConstantExpression_extractvalue | this_ConstantExpression_insertvalue_8= ruleConstantExpression_insertvalue | this_ConstantExpression_binary_9= ruleConstantExpression_binary )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1421:1: (this_ConstantExpression_convert_0= ruleConstantExpression_convert | this_ConstantExpression_getelementptr_1= ruleConstantExpression_getelementptr | this_ConstantExpression_select_2= ruleConstantExpression_select | this_ConstantExpression_compare_3= ruleConstantExpression_compare | this_ConstantExpression_extractelement_4= ruleConstantExpression_extractelement | this_ConstantExpression_insertelement_5= ruleConstantExpression_insertelement | this_ConstantExpression_shufflevector_6= ruleConstantExpression_shufflevector | this_ConstantExpression_extractvalue_7= ruleConstantExpression_extractvalue | this_ConstantExpression_insertvalue_8= ruleConstantExpression_insertvalue | this_ConstantExpression_binary_9= ruleConstantExpression_binary )
              int alt24=10;
              switch ( input.LA(1) ) {
              case 157:
              case 158:
              case 159:
              case 160:
              case 161:
              case 162:
              case 163:
              case 164:
              case 165:
              case 166:
              case 167:
              case 168:
              case 169:
                  {
                  alt24=1;
                  }
                  break;
              case 42:
                  {
                  alt24=2;
                  }
                  break;
              case 44:
                  {
                  alt24=3;
                  }
                  break;
              case 45:
              case 46:
                  {
                  alt24=4;
                  }
                  break;
              case 47:
                  {
                  alt24=5;
                  }
                  break;
              case 48:
                  {
                  alt24=6;
                  }
                  break;
              case 49:
                  {
                  alt24=7;
                  }
                  break;
              case 50:
                  {
                  alt24=8;
                  }
                  break;
              case 51:
                  {
                  alt24=9;
                  }
                  break;
              case 52:
              case 53:
              case 54:
              case 55:
              case 58:
              case 59:
              case 60:
              case 61:
              case 63:
              case 64:
              case 65:
              case 66:
              case 67:
              case 68:
              case 69:
              case 70:
              case 71:
              case 72:
                  {
                  alt24=10;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 24, 0, input);
  
                  throw nvae;
              }
  
              switch (alt24) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1422:5: this_ConstantExpression_convert_0= ruleConstantExpression_convert
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantExpressionAccess().getConstantExpression_convertParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_convert_in_ruleConstantExpression3173);
                      this_ConstantExpression_convert_0=ruleConstantExpression_convert();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ConstantExpression_convert_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1432:5: this_ConstantExpression_getelementptr_1= ruleConstantExpression_getelementptr
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantExpressionAccess().getConstantExpression_getelementptrParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_getelementptr_in_ruleConstantExpression3200);
                      this_ConstantExpression_getelementptr_1=ruleConstantExpression_getelementptr();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ConstantExpression_getelementptr_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1442:5: this_ConstantExpression_select_2= ruleConstantExpression_select
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantExpressionAccess().getConstantExpression_selectParserRuleCall_2()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_select_in_ruleConstantExpression3227);
                      this_ConstantExpression_select_2=ruleConstantExpression_select();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ConstantExpression_select_2; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1452:5: this_ConstantExpression_compare_3= ruleConstantExpression_compare
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantExpressionAccess().getConstantExpression_compareParserRuleCall_3()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_compare_in_ruleConstantExpression3254);
                      this_ConstantExpression_compare_3=ruleConstantExpression_compare();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ConstantExpression_compare_3; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1462:5: this_ConstantExpression_extractelement_4= ruleConstantExpression_extractelement
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantExpressionAccess().getConstantExpression_extractelementParserRuleCall_4()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_extractelement_in_ruleConstantExpression3281);
                      this_ConstantExpression_extractelement_4=ruleConstantExpression_extractelement();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ConstantExpression_extractelement_4; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1472:5: this_ConstantExpression_insertelement_5= ruleConstantExpression_insertelement
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantExpressionAccess().getConstantExpression_insertelementParserRuleCall_5()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_insertelement_in_ruleConstantExpression3308);
                      this_ConstantExpression_insertelement_5=ruleConstantExpression_insertelement();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ConstantExpression_insertelement_5; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1482:5: this_ConstantExpression_shufflevector_6= ruleConstantExpression_shufflevector
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantExpressionAccess().getConstantExpression_shufflevectorParserRuleCall_6()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_shufflevector_in_ruleConstantExpression3335);
                      this_ConstantExpression_shufflevector_6=ruleConstantExpression_shufflevector();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ConstantExpression_shufflevector_6; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1492:5: this_ConstantExpression_extractvalue_7= ruleConstantExpression_extractvalue
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantExpressionAccess().getConstantExpression_extractvalueParserRuleCall_7()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_extractvalue_in_ruleConstantExpression3362);
                      this_ConstantExpression_extractvalue_7=ruleConstantExpression_extractvalue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ConstantExpression_extractvalue_7; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 9 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1502:5: this_ConstantExpression_insertvalue_8= ruleConstantExpression_insertvalue
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantExpressionAccess().getConstantExpression_insertvalueParserRuleCall_8()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_insertvalue_in_ruleConstantExpression3389);
                      this_ConstantExpression_insertvalue_8=ruleConstantExpression_insertvalue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ConstantExpression_insertvalue_8; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 10 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1512:5: this_ConstantExpression_binary_9= ruleConstantExpression_binary
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getConstantExpressionAccess().getConstantExpression_binaryParserRuleCall_9()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_binary_in_ruleConstantExpression3416);
                      this_ConstantExpression_binary_9=ruleConstantExpression_binary();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ConstantExpression_binary_9; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantExpression"
  
  
      // $ANTLR start "entryRuleConstantExpression_convert"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1528:1: entryRuleConstantExpression_convert returns [EObject current=null] : iv_ruleConstantExpression_convert= ruleConstantExpression_convert EOF ;
      public final EObject entryRuleConstantExpression_convert() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantExpression_convert = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1529:2: (iv_ruleConstantExpression_convert= ruleConstantExpression_convert EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1530:2: iv_ruleConstantExpression_convert= ruleConstantExpression_convert EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantExpression_convertRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_convert_in_entryRuleConstantExpression_convert3451);
              iv_ruleConstantExpression_convert=ruleConstantExpression_convert();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantExpression_convert; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantExpression_convert3461); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantExpression_convert"
  
  
      // $ANTLR start "ruleConstantExpression_convert"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1537:1: ruleConstantExpression_convert returns [EObject current=null] : ( ( (lv_opcode_0_0= ruleConvertionOpcode ) ) otherlv_1= '(' ( (lv_fromType_2_0= ruleType ) ) ( (lv_constant_3_0= ruleGlobalValueRef ) ) otherlv_4= 'to' ( (lv_targetType_5_0= ruleType ) ) otherlv_6= ')' ) ;
      public final EObject ruleConstantExpression_convert() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          Token otherlv_4=null;
          Token otherlv_6=null;
          AntlrDatatypeRuleToken lv_opcode_0_0 = null;
  
          EObject lv_fromType_2_0 = null;
  
          EObject lv_constant_3_0 = null;
  
          EObject lv_targetType_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1540:28: ( ( ( (lv_opcode_0_0= ruleConvertionOpcode ) ) otherlv_1= '(' ( (lv_fromType_2_0= ruleType ) ) ( (lv_constant_3_0= ruleGlobalValueRef ) ) otherlv_4= 'to' ( (lv_targetType_5_0= ruleType ) ) otherlv_6= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1541:1: ( ( (lv_opcode_0_0= ruleConvertionOpcode ) ) otherlv_1= '(' ( (lv_fromType_2_0= ruleType ) ) ( (lv_constant_3_0= ruleGlobalValueRef ) ) otherlv_4= 'to' ( (lv_targetType_5_0= ruleType ) ) otherlv_6= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1541:1: ( ( (lv_opcode_0_0= ruleConvertionOpcode ) ) otherlv_1= '(' ( (lv_fromType_2_0= ruleType ) ) ( (lv_constant_3_0= ruleGlobalValueRef ) ) otherlv_4= 'to' ( (lv_targetType_5_0= ruleType ) ) otherlv_6= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1541:2: ( (lv_opcode_0_0= ruleConvertionOpcode ) ) otherlv_1= '(' ( (lv_fromType_2_0= ruleType ) ) ( (lv_constant_3_0= ruleGlobalValueRef ) ) otherlv_4= 'to' ( (lv_targetType_5_0= ruleType ) ) otherlv_6= ')'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1541:2: ( (lv_opcode_0_0= ruleConvertionOpcode ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1542:1: (lv_opcode_0_0= ruleConvertionOpcode )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1542:1: (lv_opcode_0_0= ruleConvertionOpcode )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1543:3: lv_opcode_0_0= ruleConvertionOpcode
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_convertAccess().getOpcodeConvertionOpcodeParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleConvertionOpcode_in_ruleConstantExpression_convert3507);
              lv_opcode_0_0=ruleConvertionOpcode();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_convertRule());
                	        }
                       		set(
                       			current, 
                       			"opcode",
                        		lv_opcode_0_0, 
                        		"ConvertionOpcode");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_1=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleConstantExpression_convert3519); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getConstantExpression_convertAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1563:1: ( (lv_fromType_2_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1564:1: (lv_fromType_2_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1564:1: (lv_fromType_2_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1565:3: lv_fromType_2_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_convertAccess().getFromTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleType_in_ruleConstantExpression_convert3540);
              lv_fromType_2_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_convertRule());
                	        }
                       		set(
                       			current, 
                       			"fromType",
                        		lv_fromType_2_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1581:2: ( (lv_constant_3_0= ruleGlobalValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1582:1: (lv_constant_3_0= ruleGlobalValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1582:1: (lv_constant_3_0= ruleGlobalValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1583:3: lv_constant_3_0= ruleGlobalValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_convertAccess().getConstantGlobalValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleGlobalValueRef_in_ruleConstantExpression_convert3561);
              lv_constant_3_0=ruleGlobalValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_convertRule());
                	        }
                       		set(
                       			current, 
                       			"constant",
                        		lv_constant_3_0, 
                        		"GlobalValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,40,FollowSets000.FOLLOW_40_in_ruleConstantExpression_convert3573); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getConstantExpression_convertAccess().getToKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1603:1: ( (lv_targetType_5_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1604:1: (lv_targetType_5_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1604:1: (lv_targetType_5_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1605:3: lv_targetType_5_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_convertAccess().getTargetTypeTypeParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleType_in_ruleConstantExpression_convert3594);
              lv_targetType_5_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_convertRule());
                	        }
                       		set(
                       			current, 
                       			"targetType",
                        		lv_targetType_5_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_6=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleConstantExpression_convert3606); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_6, grammarAccess.getConstantExpression_convertAccess().getRightParenthesisKeyword_6());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantExpression_convert"
  
  
      // $ANTLR start "entryRuleConstantExpression_getelementptr"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1633:1: entryRuleConstantExpression_getelementptr returns [EObject current=null] : iv_ruleConstantExpression_getelementptr= ruleConstantExpression_getelementptr EOF ;
      public final EObject entryRuleConstantExpression_getelementptr() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantExpression_getelementptr = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1634:2: (iv_ruleConstantExpression_getelementptr= ruleConstantExpression_getelementptr EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1635:2: iv_ruleConstantExpression_getelementptr= ruleConstantExpression_getelementptr EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantExpression_getelementptrRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_getelementptr_in_entryRuleConstantExpression_getelementptr3642);
              iv_ruleConstantExpression_getelementptr=ruleConstantExpression_getelementptr();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantExpression_getelementptr; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantExpression_getelementptr3652); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantExpression_getelementptr"
  
  
      // $ANTLR start "ruleConstantExpression_getelementptr"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1642:1: ruleConstantExpression_getelementptr returns [EObject current=null] : ( ( (lv_opcode_0_0= 'getelementptr' ) ) (otherlv_1= 'inbounds' )? otherlv_2= '(' ( (lv_constantType_3_0= ruleType ) ) ( (lv_constant_4_0= ruleGlobalValueRef ) ) (otherlv_5= ',' ( (lv_indexTypes_6_0= ruleType ) ) ( (lv_indices_7_0= ruleConstant ) ) )* otherlv_8= ')' ) ;
      public final EObject ruleConstantExpression_getelementptr() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_2=null;
          Token otherlv_5=null;
          Token otherlv_8=null;
          EObject lv_constantType_3_0 = null;
  
          EObject lv_constant_4_0 = null;
  
          EObject lv_indexTypes_6_0 = null;
  
          EObject lv_indices_7_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1645:28: ( ( ( (lv_opcode_0_0= 'getelementptr' ) ) (otherlv_1= 'inbounds' )? otherlv_2= '(' ( (lv_constantType_3_0= ruleType ) ) ( (lv_constant_4_0= ruleGlobalValueRef ) ) (otherlv_5= ',' ( (lv_indexTypes_6_0= ruleType ) ) ( (lv_indices_7_0= ruleConstant ) ) )* otherlv_8= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1646:1: ( ( (lv_opcode_0_0= 'getelementptr' ) ) (otherlv_1= 'inbounds' )? otherlv_2= '(' ( (lv_constantType_3_0= ruleType ) ) ( (lv_constant_4_0= ruleGlobalValueRef ) ) (otherlv_5= ',' ( (lv_indexTypes_6_0= ruleType ) ) ( (lv_indices_7_0= ruleConstant ) ) )* otherlv_8= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1646:1: ( ( (lv_opcode_0_0= 'getelementptr' ) ) (otherlv_1= 'inbounds' )? otherlv_2= '(' ( (lv_constantType_3_0= ruleType ) ) ( (lv_constant_4_0= ruleGlobalValueRef ) ) (otherlv_5= ',' ( (lv_indexTypes_6_0= ruleType ) ) ( (lv_indices_7_0= ruleConstant ) ) )* otherlv_8= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1646:2: ( (lv_opcode_0_0= 'getelementptr' ) ) (otherlv_1= 'inbounds' )? otherlv_2= '(' ( (lv_constantType_3_0= ruleType ) ) ( (lv_constant_4_0= ruleGlobalValueRef ) ) (otherlv_5= ',' ( (lv_indexTypes_6_0= ruleType ) ) ( (lv_indices_7_0= ruleConstant ) ) )* otherlv_8= ')'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1646:2: ( (lv_opcode_0_0= 'getelementptr' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1647:1: (lv_opcode_0_0= 'getelementptr' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1647:1: (lv_opcode_0_0= 'getelementptr' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1648:3: lv_opcode_0_0= 'getelementptr'
              {
              lv_opcode_0_0=(Token)match(input,42,FollowSets000.FOLLOW_42_in_ruleConstantExpression_getelementptr3695); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getConstantExpression_getelementptrAccess().getOpcodeGetelementptrKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getConstantExpression_getelementptrRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "getelementptr");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1661:2: (otherlv_1= 'inbounds' )?
              int alt25=2;
              int LA25_0 = input.LA(1);
  
              if ( (LA25_0==43) ) {
                  alt25=1;
              }
              switch (alt25) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1661:4: otherlv_1= 'inbounds'
                      {
                      otherlv_1=(Token)match(input,43,FollowSets000.FOLLOW_43_in_ruleConstantExpression_getelementptr3721); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getConstantExpression_getelementptrAccess().getInboundsKeyword_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              otherlv_2=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleConstantExpression_getelementptr3735); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getConstantExpression_getelementptrAccess().getLeftParenthesisKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1669:1: ( (lv_constantType_3_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1670:1: (lv_constantType_3_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1670:1: (lv_constantType_3_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1671:3: lv_constantType_3_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_getelementptrAccess().getConstantTypeTypeParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleType_in_ruleConstantExpression_getelementptr3756);
              lv_constantType_3_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_getelementptrRule());
                	        }
                       		set(
                       			current, 
                       			"constantType",
                        		lv_constantType_3_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1687:2: ( (lv_constant_4_0= ruleGlobalValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1688:1: (lv_constant_4_0= ruleGlobalValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1688:1: (lv_constant_4_0= ruleGlobalValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1689:3: lv_constant_4_0= ruleGlobalValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_getelementptrAccess().getConstantGlobalValueRefParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleGlobalValueRef_in_ruleConstantExpression_getelementptr3777);
              lv_constant_4_0=ruleGlobalValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_getelementptrRule());
                	        }
                       		set(
                       			current, 
                       			"constant",
                        		lv_constant_4_0, 
                        		"GlobalValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1705:2: (otherlv_5= ',' ( (lv_indexTypes_6_0= ruleType ) ) ( (lv_indices_7_0= ruleConstant ) ) )*
              loop26:
              do {
                  int alt26=2;
                  int LA26_0 = input.LA(1);
  
                  if ( (LA26_0==38) ) {
                      alt26=1;
                  }
  
  
                  switch (alt26) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1705:4: otherlv_5= ',' ( (lv_indexTypes_6_0= ruleType ) ) ( (lv_indices_7_0= ruleConstant ) )
              	    {
              	    otherlv_5=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_getelementptr3790); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_5, grammarAccess.getConstantExpression_getelementptrAccess().getCommaKeyword_5_0());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1709:1: ( (lv_indexTypes_6_0= ruleType ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1710:1: (lv_indexTypes_6_0= ruleType )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1710:1: (lv_indexTypes_6_0= ruleType )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1711:3: lv_indexTypes_6_0= ruleType
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getConstantExpression_getelementptrAccess().getIndexTypesTypeParserRuleCall_5_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleType_in_ruleConstantExpression_getelementptr3811);
              	    lv_indexTypes_6_0=ruleType();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getConstantExpression_getelementptrRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"indexTypes",
              	              		lv_indexTypes_6_0, 
              	              		"Type");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1727:2: ( (lv_indices_7_0= ruleConstant ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1728:1: (lv_indices_7_0= ruleConstant )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1728:1: (lv_indices_7_0= ruleConstant )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1729:3: lv_indices_7_0= ruleConstant
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getConstantExpression_getelementptrAccess().getIndicesConstantParserRuleCall_5_2_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleConstant_in_ruleConstantExpression_getelementptr3832);
              	    lv_indices_7_0=ruleConstant();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getConstantExpression_getelementptrRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"indices",
              	              		lv_indices_7_0, 
              	              		"Constant");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop26;
                  }
              } while (true);
  
              otherlv_8=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleConstantExpression_getelementptr3846); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_8, grammarAccess.getConstantExpression_getelementptrAccess().getRightParenthesisKeyword_6());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantExpression_getelementptr"
  
  
      // $ANTLR start "entryRuleConstantExpression_select"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1757:1: entryRuleConstantExpression_select returns [EObject current=null] : iv_ruleConstantExpression_select= ruleConstantExpression_select EOF ;
      public final EObject entryRuleConstantExpression_select() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantExpression_select = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1758:2: (iv_ruleConstantExpression_select= ruleConstantExpression_select EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1759:2: iv_ruleConstantExpression_select= ruleConstantExpression_select EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantExpression_selectRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_select_in_entryRuleConstantExpression_select3882);
              iv_ruleConstantExpression_select=ruleConstantExpression_select();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantExpression_select; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantExpression_select3892); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantExpression_select"
  
  
      // $ANTLR start "ruleConstantExpression_select"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1766:1: ruleConstantExpression_select returns [EObject current=null] : ( ( (lv_opcode_0_0= 'select' ) ) otherlv_1= '(' ( (lv_condition_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_op1_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_op2_6_0= ruleTypedValue ) ) otherlv_7= ')' ) ;
      public final EObject ruleConstantExpression_select() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token otherlv_7=null;
          EObject lv_condition_2_0 = null;
  
          EObject lv_op1_4_0 = null;
  
          EObject lv_op2_6_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1769:28: ( ( ( (lv_opcode_0_0= 'select' ) ) otherlv_1= '(' ( (lv_condition_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_op1_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_op2_6_0= ruleTypedValue ) ) otherlv_7= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1770:1: ( ( (lv_opcode_0_0= 'select' ) ) otherlv_1= '(' ( (lv_condition_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_op1_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_op2_6_0= ruleTypedValue ) ) otherlv_7= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1770:1: ( ( (lv_opcode_0_0= 'select' ) ) otherlv_1= '(' ( (lv_condition_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_op1_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_op2_6_0= ruleTypedValue ) ) otherlv_7= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1770:2: ( (lv_opcode_0_0= 'select' ) ) otherlv_1= '(' ( (lv_condition_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_op1_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_op2_6_0= ruleTypedValue ) ) otherlv_7= ')'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1770:2: ( (lv_opcode_0_0= 'select' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1771:1: (lv_opcode_0_0= 'select' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1771:1: (lv_opcode_0_0= 'select' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1772:3: lv_opcode_0_0= 'select'
              {
              lv_opcode_0_0=(Token)match(input,44,FollowSets000.FOLLOW_44_in_ruleConstantExpression_select3935); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getConstantExpression_selectAccess().getOpcodeSelectKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getConstantExpression_selectRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "select");
                	    
              }
  
              }
  
  
              }
  
              otherlv_1=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleConstantExpression_select3960); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getConstantExpression_selectAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1789:1: ( (lv_condition_2_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1790:1: (lv_condition_2_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1790:1: (lv_condition_2_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1791:3: lv_condition_2_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_selectAccess().getConditionTypedValueParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_select3981);
              lv_condition_2_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_selectRule());
                	        }
                       		set(
                       			current, 
                       			"condition",
                        		lv_condition_2_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_select3993); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getConstantExpression_selectAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1811:1: ( (lv_op1_4_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1812:1: (lv_op1_4_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1812:1: (lv_op1_4_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1813:3: lv_op1_4_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_selectAccess().getOp1TypedValueParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_select4014);
              lv_op1_4_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_selectRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_4_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_5=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_select4026); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_5, grammarAccess.getConstantExpression_selectAccess().getCommaKeyword_5());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1833:1: ( (lv_op2_6_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1834:1: (lv_op2_6_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1834:1: (lv_op2_6_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1835:3: lv_op2_6_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_selectAccess().getOp2TypedValueParserRuleCall_6_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_select4047);
              lv_op2_6_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_selectRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_6_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_7=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleConstantExpression_select4059); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_7, grammarAccess.getConstantExpression_selectAccess().getRightParenthesisKeyword_7());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantExpression_select"
  
  
      // $ANTLR start "entryRuleConstantExpression_compare"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1863:1: entryRuleConstantExpression_compare returns [EObject current=null] : iv_ruleConstantExpression_compare= ruleConstantExpression_compare EOF ;
      public final EObject entryRuleConstantExpression_compare() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantExpression_compare = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1864:2: (iv_ruleConstantExpression_compare= ruleConstantExpression_compare EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1865:2: iv_ruleConstantExpression_compare= ruleConstantExpression_compare EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantExpression_compareRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_compare_in_entryRuleConstantExpression_compare4095);
              iv_ruleConstantExpression_compare=ruleConstantExpression_compare();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantExpression_compare; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantExpression_compare4105); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantExpression_compare"
  
  
      // $ANTLR start "ruleConstantExpression_compare"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1872:1: ruleConstantExpression_compare returns [EObject current=null] : ( ( ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) ) | ( ( (lv_opcode_2_0= 'fcmp' ) ) ( (lv_condition_3_0= ruleFcmpCondition ) ) ) ) otherlv_4= '(' ( (lv_op1_5_0= ruleTypedValue ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleTypedValue ) ) otherlv_8= ')' ) ;
      public final EObject ruleConstantExpression_compare() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token lv_opcode_2_0=null;
          Token otherlv_4=null;
          Token otherlv_6=null;
          Token otherlv_8=null;
          AntlrDatatypeRuleToken lv_condition_1_0 = null;
  
          AntlrDatatypeRuleToken lv_condition_3_0 = null;
  
          EObject lv_op1_5_0 = null;
  
          EObject lv_op2_7_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1875:28: ( ( ( ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) ) | ( ( (lv_opcode_2_0= 'fcmp' ) ) ( (lv_condition_3_0= ruleFcmpCondition ) ) ) ) otherlv_4= '(' ( (lv_op1_5_0= ruleTypedValue ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleTypedValue ) ) otherlv_8= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1876:1: ( ( ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) ) | ( ( (lv_opcode_2_0= 'fcmp' ) ) ( (lv_condition_3_0= ruleFcmpCondition ) ) ) ) otherlv_4= '(' ( (lv_op1_5_0= ruleTypedValue ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleTypedValue ) ) otherlv_8= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1876:1: ( ( ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) ) | ( ( (lv_opcode_2_0= 'fcmp' ) ) ( (lv_condition_3_0= ruleFcmpCondition ) ) ) ) otherlv_4= '(' ( (lv_op1_5_0= ruleTypedValue ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleTypedValue ) ) otherlv_8= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1876:2: ( ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) ) | ( ( (lv_opcode_2_0= 'fcmp' ) ) ( (lv_condition_3_0= ruleFcmpCondition ) ) ) ) otherlv_4= '(' ( (lv_op1_5_0= ruleTypedValue ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleTypedValue ) ) otherlv_8= ')'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1876:2: ( ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) ) | ( ( (lv_opcode_2_0= 'fcmp' ) ) ( (lv_condition_3_0= ruleFcmpCondition ) ) ) )
              int alt27=2;
              int LA27_0 = input.LA(1);
  
              if ( (LA27_0==45) ) {
                  alt27=1;
              }
              else if ( (LA27_0==46) ) {
                  alt27=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 27, 0, input);
  
                  throw nvae;
              }
              switch (alt27) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1876:3: ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1876:3: ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1876:4: ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1876:4: ( (lv_opcode_0_0= 'icmp' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1877:1: (lv_opcode_0_0= 'icmp' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1877:1: (lv_opcode_0_0= 'icmp' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1878:3: lv_opcode_0_0= 'icmp'
                      {
                      lv_opcode_0_0=(Token)match(input,45,FollowSets000.FOLLOW_45_in_ruleConstantExpression_compare4150); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_opcode_0_0, grammarAccess.getConstantExpression_compareAccess().getOpcodeIcmpKeyword_0_0_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getConstantExpression_compareRule());
                        	        }
                               		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "icmp");
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1891:2: ( (lv_condition_1_0= ruleIcmpCondition ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1892:1: (lv_condition_1_0= ruleIcmpCondition )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1892:1: (lv_condition_1_0= ruleIcmpCondition )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1893:3: lv_condition_1_0= ruleIcmpCondition
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getConstantExpression_compareAccess().getConditionIcmpConditionParserRuleCall_0_0_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleIcmpCondition_in_ruleConstantExpression_compare4184);
                      lv_condition_1_0=ruleIcmpCondition();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getConstantExpression_compareRule());
                        	        }
                               		set(
                               			current, 
                               			"condition",
                                		lv_condition_1_0, 
                                		"IcmpCondition");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1910:6: ( ( (lv_opcode_2_0= 'fcmp' ) ) ( (lv_condition_3_0= ruleFcmpCondition ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1910:6: ( ( (lv_opcode_2_0= 'fcmp' ) ) ( (lv_condition_3_0= ruleFcmpCondition ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1910:7: ( (lv_opcode_2_0= 'fcmp' ) ) ( (lv_condition_3_0= ruleFcmpCondition ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1910:7: ( (lv_opcode_2_0= 'fcmp' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1911:1: (lv_opcode_2_0= 'fcmp' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1911:1: (lv_opcode_2_0= 'fcmp' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1912:3: lv_opcode_2_0= 'fcmp'
                      {
                      lv_opcode_2_0=(Token)match(input,46,FollowSets000.FOLLOW_46_in_ruleConstantExpression_compare4210); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_opcode_2_0, grammarAccess.getConstantExpression_compareAccess().getOpcodeFcmpKeyword_0_1_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getConstantExpression_compareRule());
                        	        }
                               		setWithLastConsumed(current, "opcode", lv_opcode_2_0, "fcmp");
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1925:2: ( (lv_condition_3_0= ruleFcmpCondition ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1926:1: (lv_condition_3_0= ruleFcmpCondition )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1926:1: (lv_condition_3_0= ruleFcmpCondition )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1927:3: lv_condition_3_0= ruleFcmpCondition
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getConstantExpression_compareAccess().getConditionFcmpConditionParserRuleCall_0_1_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleFcmpCondition_in_ruleConstantExpression_compare4244);
                      lv_condition_3_0=ruleFcmpCondition();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getConstantExpression_compareRule());
                        	        }
                               		set(
                               			current, 
                               			"condition",
                                		lv_condition_3_0, 
                                		"FcmpCondition");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
              otherlv_4=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleConstantExpression_compare4258); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getConstantExpression_compareAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1947:1: ( (lv_op1_5_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1948:1: (lv_op1_5_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1948:1: (lv_op1_5_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1949:3: lv_op1_5_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_compareAccess().getOp1TypedValueParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_compare4279);
              lv_op1_5_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_compareRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_5_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_6=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_compare4291); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_6, grammarAccess.getConstantExpression_compareAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1969:1: ( (lv_op2_7_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1970:1: (lv_op2_7_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1970:1: (lv_op2_7_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1971:3: lv_op2_7_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_compareAccess().getOp2TypedValueParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_compare4312);
              lv_op2_7_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_compareRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_7_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_8=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleConstantExpression_compare4324); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_8, grammarAccess.getConstantExpression_compareAccess().getRightParenthesisKeyword_5());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantExpression_compare"
  
  
      // $ANTLR start "entryRuleConstantExpression_extractelement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1999:1: entryRuleConstantExpression_extractelement returns [EObject current=null] : iv_ruleConstantExpression_extractelement= ruleConstantExpression_extractelement EOF ;
      public final EObject entryRuleConstantExpression_extractelement() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantExpression_extractelement = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2000:2: (iv_ruleConstantExpression_extractelement= ruleConstantExpression_extractelement EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2001:2: iv_ruleConstantExpression_extractelement= ruleConstantExpression_extractelement EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantExpression_extractelementRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_extractelement_in_entryRuleConstantExpression_extractelement4360);
              iv_ruleConstantExpression_extractelement=ruleConstantExpression_extractelement();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantExpression_extractelement; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantExpression_extractelement4370); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantExpression_extractelement"
  
  
      // $ANTLR start "ruleConstantExpression_extractelement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2008:1: ruleConstantExpression_extractelement returns [EObject current=null] : ( ( (lv_opcode_0_0= 'extractelement' ) ) otherlv_1= '(' ( (lv_vector_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_index_4_0= ruleTypedValue ) ) otherlv_5= ')' ) ;
      public final EObject ruleConstantExpression_extractelement() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          EObject lv_vector_2_0 = null;
  
          EObject lv_index_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2011:28: ( ( ( (lv_opcode_0_0= 'extractelement' ) ) otherlv_1= '(' ( (lv_vector_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_index_4_0= ruleTypedValue ) ) otherlv_5= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2012:1: ( ( (lv_opcode_0_0= 'extractelement' ) ) otherlv_1= '(' ( (lv_vector_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_index_4_0= ruleTypedValue ) ) otherlv_5= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2012:1: ( ( (lv_opcode_0_0= 'extractelement' ) ) otherlv_1= '(' ( (lv_vector_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_index_4_0= ruleTypedValue ) ) otherlv_5= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2012:2: ( (lv_opcode_0_0= 'extractelement' ) ) otherlv_1= '(' ( (lv_vector_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_index_4_0= ruleTypedValue ) ) otherlv_5= ')'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2012:2: ( (lv_opcode_0_0= 'extractelement' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2013:1: (lv_opcode_0_0= 'extractelement' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2013:1: (lv_opcode_0_0= 'extractelement' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2014:3: lv_opcode_0_0= 'extractelement'
              {
              lv_opcode_0_0=(Token)match(input,47,FollowSets000.FOLLOW_47_in_ruleConstantExpression_extractelement4413); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getConstantExpression_extractelementAccess().getOpcodeExtractelementKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getConstantExpression_extractelementRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "extractelement");
                	    
              }
  
              }
  
  
              }
  
              otherlv_1=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleConstantExpression_extractelement4438); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getConstantExpression_extractelementAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2031:1: ( (lv_vector_2_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2032:1: (lv_vector_2_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2032:1: (lv_vector_2_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2033:3: lv_vector_2_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_extractelementAccess().getVectorTypedValueParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_extractelement4459);
              lv_vector_2_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_extractelementRule());
                	        }
                       		set(
                       			current, 
                       			"vector",
                        		lv_vector_2_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_extractelement4471); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getConstantExpression_extractelementAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2053:1: ( (lv_index_4_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2054:1: (lv_index_4_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2054:1: (lv_index_4_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2055:3: lv_index_4_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_extractelementAccess().getIndexTypedValueParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_extractelement4492);
              lv_index_4_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_extractelementRule());
                	        }
                       		set(
                       			current, 
                       			"index",
                        		lv_index_4_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_5=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleConstantExpression_extractelement4504); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_5, grammarAccess.getConstantExpression_extractelementAccess().getRightParenthesisKeyword_5());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantExpression_extractelement"
  
  
      // $ANTLR start "entryRuleConstantExpression_insertelement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2083:1: entryRuleConstantExpression_insertelement returns [EObject current=null] : iv_ruleConstantExpression_insertelement= ruleConstantExpression_insertelement EOF ;
      public final EObject entryRuleConstantExpression_insertelement() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantExpression_insertelement = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2084:2: (iv_ruleConstantExpression_insertelement= ruleConstantExpression_insertelement EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2085:2: iv_ruleConstantExpression_insertelement= ruleConstantExpression_insertelement EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantExpression_insertelementRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_insertelement_in_entryRuleConstantExpression_insertelement4540);
              iv_ruleConstantExpression_insertelement=ruleConstantExpression_insertelement();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantExpression_insertelement; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantExpression_insertelement4550); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantExpression_insertelement"
  
  
      // $ANTLR start "ruleConstantExpression_insertelement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2092:1: ruleConstantExpression_insertelement returns [EObject current=null] : ( ( (lv_opcode_0_0= 'insertelement' ) ) otherlv_1= '(' ( (lv_vectorType_2_0= ruleVectorType ) ) ( (lv_vector_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_element_5_0= ruleTypedValue ) ) otherlv_6= ',' ( (lv_index_7_0= ruleTypedValue ) ) otherlv_8= ')' ) ;
      public final EObject ruleConstantExpression_insertelement() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_4=null;
          Token otherlv_6=null;
          Token otherlv_8=null;
          EObject lv_vectorType_2_0 = null;
  
          EObject lv_vector_3_0 = null;
  
          EObject lv_element_5_0 = null;
  
          EObject lv_index_7_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2095:28: ( ( ( (lv_opcode_0_0= 'insertelement' ) ) otherlv_1= '(' ( (lv_vectorType_2_0= ruleVectorType ) ) ( (lv_vector_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_element_5_0= ruleTypedValue ) ) otherlv_6= ',' ( (lv_index_7_0= ruleTypedValue ) ) otherlv_8= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2096:1: ( ( (lv_opcode_0_0= 'insertelement' ) ) otherlv_1= '(' ( (lv_vectorType_2_0= ruleVectorType ) ) ( (lv_vector_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_element_5_0= ruleTypedValue ) ) otherlv_6= ',' ( (lv_index_7_0= ruleTypedValue ) ) otherlv_8= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2096:1: ( ( (lv_opcode_0_0= 'insertelement' ) ) otherlv_1= '(' ( (lv_vectorType_2_0= ruleVectorType ) ) ( (lv_vector_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_element_5_0= ruleTypedValue ) ) otherlv_6= ',' ( (lv_index_7_0= ruleTypedValue ) ) otherlv_8= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2096:2: ( (lv_opcode_0_0= 'insertelement' ) ) otherlv_1= '(' ( (lv_vectorType_2_0= ruleVectorType ) ) ( (lv_vector_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_element_5_0= ruleTypedValue ) ) otherlv_6= ',' ( (lv_index_7_0= ruleTypedValue ) ) otherlv_8= ')'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2096:2: ( (lv_opcode_0_0= 'insertelement' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2097:1: (lv_opcode_0_0= 'insertelement' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2097:1: (lv_opcode_0_0= 'insertelement' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2098:3: lv_opcode_0_0= 'insertelement'
              {
              lv_opcode_0_0=(Token)match(input,48,FollowSets000.FOLLOW_48_in_ruleConstantExpression_insertelement4593); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getConstantExpression_insertelementAccess().getOpcodeInsertelementKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getConstantExpression_insertelementRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "insertelement");
                	    
              }
  
              }
  
  
              }
  
              otherlv_1=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleConstantExpression_insertelement4618); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getConstantExpression_insertelementAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2115:1: ( (lv_vectorType_2_0= ruleVectorType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2116:1: (lv_vectorType_2_0= ruleVectorType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2116:1: (lv_vectorType_2_0= ruleVectorType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2117:3: lv_vectorType_2_0= ruleVectorType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_insertelementAccess().getVectorTypeVectorTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleVectorType_in_ruleConstantExpression_insertelement4639);
              lv_vectorType_2_0=ruleVectorType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_insertelementRule());
                	        }
                       		set(
                       			current, 
                       			"vectorType",
                        		lv_vectorType_2_0, 
                        		"VectorType");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2133:2: ( (lv_vector_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2134:1: (lv_vector_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2134:1: (lv_vector_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2135:3: lv_vector_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_insertelementAccess().getVectorValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleValueRef_in_ruleConstantExpression_insertelement4660);
              lv_vector_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_insertelementRule());
                	        }
                       		set(
                       			current, 
                       			"vector",
                        		lv_vector_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_insertelement4672); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getConstantExpression_insertelementAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2155:1: ( (lv_element_5_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2156:1: (lv_element_5_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2156:1: (lv_element_5_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2157:3: lv_element_5_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_insertelementAccess().getElementTypedValueParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_insertelement4693);
              lv_element_5_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_insertelementRule());
                	        }
                       		set(
                       			current, 
                       			"element",
                        		lv_element_5_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_6=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_insertelement4705); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_6, grammarAccess.getConstantExpression_insertelementAccess().getCommaKeyword_6());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2177:1: ( (lv_index_7_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2178:1: (lv_index_7_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2178:1: (lv_index_7_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2179:3: lv_index_7_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_insertelementAccess().getIndexTypedValueParserRuleCall_7_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_insertelement4726);
              lv_index_7_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_insertelementRule());
                	        }
                       		set(
                       			current, 
                       			"index",
                        		lv_index_7_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_8=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleConstantExpression_insertelement4738); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_8, grammarAccess.getConstantExpression_insertelementAccess().getRightParenthesisKeyword_8());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantExpression_insertelement"
  
  
      // $ANTLR start "entryRuleConstantExpression_shufflevector"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2207:1: entryRuleConstantExpression_shufflevector returns [EObject current=null] : iv_ruleConstantExpression_shufflevector= ruleConstantExpression_shufflevector EOF ;
      public final EObject entryRuleConstantExpression_shufflevector() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantExpression_shufflevector = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2208:2: (iv_ruleConstantExpression_shufflevector= ruleConstantExpression_shufflevector EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2209:2: iv_ruleConstantExpression_shufflevector= ruleConstantExpression_shufflevector EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantExpression_shufflevectorRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_shufflevector_in_entryRuleConstantExpression_shufflevector4774);
              iv_ruleConstantExpression_shufflevector=ruleConstantExpression_shufflevector();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantExpression_shufflevector; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantExpression_shufflevector4784); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantExpression_shufflevector"
  
  
      // $ANTLR start "ruleConstantExpression_shufflevector"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2216:1: ruleConstantExpression_shufflevector returns [EObject current=null] : ( ( (lv_opcode_0_0= 'shufflevector' ) ) otherlv_1= '(' ( (lv_vector1_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_vector2_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_mask_6_0= ruleTypedValue ) ) otherlv_7= ')' ) ;
      public final EObject ruleConstantExpression_shufflevector() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token otherlv_7=null;
          EObject lv_vector1_2_0 = null;
  
          EObject lv_vector2_4_0 = null;
  
          EObject lv_mask_6_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2219:28: ( ( ( (lv_opcode_0_0= 'shufflevector' ) ) otherlv_1= '(' ( (lv_vector1_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_vector2_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_mask_6_0= ruleTypedValue ) ) otherlv_7= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2220:1: ( ( (lv_opcode_0_0= 'shufflevector' ) ) otherlv_1= '(' ( (lv_vector1_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_vector2_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_mask_6_0= ruleTypedValue ) ) otherlv_7= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2220:1: ( ( (lv_opcode_0_0= 'shufflevector' ) ) otherlv_1= '(' ( (lv_vector1_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_vector2_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_mask_6_0= ruleTypedValue ) ) otherlv_7= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2220:2: ( (lv_opcode_0_0= 'shufflevector' ) ) otherlv_1= '(' ( (lv_vector1_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_vector2_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_mask_6_0= ruleTypedValue ) ) otherlv_7= ')'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2220:2: ( (lv_opcode_0_0= 'shufflevector' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2221:1: (lv_opcode_0_0= 'shufflevector' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2221:1: (lv_opcode_0_0= 'shufflevector' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2222:3: lv_opcode_0_0= 'shufflevector'
              {
              lv_opcode_0_0=(Token)match(input,49,FollowSets000.FOLLOW_49_in_ruleConstantExpression_shufflevector4827); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getConstantExpression_shufflevectorAccess().getOpcodeShufflevectorKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getConstantExpression_shufflevectorRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "shufflevector");
                	    
              }
  
              }
  
  
              }
  
              otherlv_1=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleConstantExpression_shufflevector4852); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getConstantExpression_shufflevectorAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2239:1: ( (lv_vector1_2_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2240:1: (lv_vector1_2_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2240:1: (lv_vector1_2_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2241:3: lv_vector1_2_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_shufflevectorAccess().getVector1TypedValueParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_shufflevector4873);
              lv_vector1_2_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_shufflevectorRule());
                	        }
                       		set(
                       			current, 
                       			"vector1",
                        		lv_vector1_2_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_shufflevector4885); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getConstantExpression_shufflevectorAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2261:1: ( (lv_vector2_4_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2262:1: (lv_vector2_4_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2262:1: (lv_vector2_4_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2263:3: lv_vector2_4_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_shufflevectorAccess().getVector2TypedValueParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_shufflevector4906);
              lv_vector2_4_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_shufflevectorRule());
                	        }
                       		set(
                       			current, 
                       			"vector2",
                        		lv_vector2_4_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_5=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_shufflevector4918); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_5, grammarAccess.getConstantExpression_shufflevectorAccess().getCommaKeyword_5());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2283:1: ( (lv_mask_6_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2284:1: (lv_mask_6_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2284:1: (lv_mask_6_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2285:3: lv_mask_6_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_shufflevectorAccess().getMaskTypedValueParserRuleCall_6_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_shufflevector4939);
              lv_mask_6_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_shufflevectorRule());
                	        }
                       		set(
                       			current, 
                       			"mask",
                        		lv_mask_6_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_7=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleConstantExpression_shufflevector4951); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_7, grammarAccess.getConstantExpression_shufflevectorAccess().getRightParenthesisKeyword_7());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantExpression_shufflevector"
  
  
      // $ANTLR start "entryRuleConstantExpression_extractvalue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2313:1: entryRuleConstantExpression_extractvalue returns [EObject current=null] : iv_ruleConstantExpression_extractvalue= ruleConstantExpression_extractvalue EOF ;
      public final EObject entryRuleConstantExpression_extractvalue() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantExpression_extractvalue = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2314:2: (iv_ruleConstantExpression_extractvalue= ruleConstantExpression_extractvalue EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2315:2: iv_ruleConstantExpression_extractvalue= ruleConstantExpression_extractvalue EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantExpression_extractvalueRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_extractvalue_in_entryRuleConstantExpression_extractvalue4987);
              iv_ruleConstantExpression_extractvalue=ruleConstantExpression_extractvalue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantExpression_extractvalue; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantExpression_extractvalue4997); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantExpression_extractvalue"
  
  
      // $ANTLR start "ruleConstantExpression_extractvalue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2322:1: ruleConstantExpression_extractvalue returns [EObject current=null] : ( ( (lv_opcode_0_0= 'extractvalue' ) ) otherlv_1= '(' ( (lv_value_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_indices_4_0= RULE_INTEGER ) ) )+ otherlv_5= ')' ) ;
      public final EObject ruleConstantExpression_extractvalue() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token lv_indices_4_0=null;
          Token otherlv_5=null;
          EObject lv_value_2_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2325:28: ( ( ( (lv_opcode_0_0= 'extractvalue' ) ) otherlv_1= '(' ( (lv_value_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_indices_4_0= RULE_INTEGER ) ) )+ otherlv_5= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2326:1: ( ( (lv_opcode_0_0= 'extractvalue' ) ) otherlv_1= '(' ( (lv_value_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_indices_4_0= RULE_INTEGER ) ) )+ otherlv_5= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2326:1: ( ( (lv_opcode_0_0= 'extractvalue' ) ) otherlv_1= '(' ( (lv_value_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_indices_4_0= RULE_INTEGER ) ) )+ otherlv_5= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2326:2: ( (lv_opcode_0_0= 'extractvalue' ) ) otherlv_1= '(' ( (lv_value_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_indices_4_0= RULE_INTEGER ) ) )+ otherlv_5= ')'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2326:2: ( (lv_opcode_0_0= 'extractvalue' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2327:1: (lv_opcode_0_0= 'extractvalue' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2327:1: (lv_opcode_0_0= 'extractvalue' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2328:3: lv_opcode_0_0= 'extractvalue'
              {
              lv_opcode_0_0=(Token)match(input,50,FollowSets000.FOLLOW_50_in_ruleConstantExpression_extractvalue5040); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getConstantExpression_extractvalueAccess().getOpcodeExtractvalueKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getConstantExpression_extractvalueRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "extractvalue");
                	    
              }
  
              }
  
  
              }
  
              otherlv_1=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleConstantExpression_extractvalue5065); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getConstantExpression_extractvalueAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2345:1: ( (lv_value_2_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2346:1: (lv_value_2_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2346:1: (lv_value_2_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2347:3: lv_value_2_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_extractvalueAccess().getValueTypedValueParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_extractvalue5086);
              lv_value_2_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_extractvalueRule());
                	        }
                       		set(
                       			current, 
                       			"value",
                        		lv_value_2_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2363:2: (otherlv_3= ',' ( (lv_indices_4_0= RULE_INTEGER ) ) )+
              int cnt28=0;
              loop28:
              do {
                  int alt28=2;
                  int LA28_0 = input.LA(1);
  
                  if ( (LA28_0==38) ) {
                      alt28=1;
                  }
  
  
                  switch (alt28) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2363:4: otherlv_3= ',' ( (lv_indices_4_0= RULE_INTEGER ) )
              	    {
              	    otherlv_3=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_extractvalue5099); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_3, grammarAccess.getConstantExpression_extractvalueAccess().getCommaKeyword_3_0());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2367:1: ( (lv_indices_4_0= RULE_INTEGER ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2368:1: (lv_indices_4_0= RULE_INTEGER )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2368:1: (lv_indices_4_0= RULE_INTEGER )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2369:3: lv_indices_4_0= RULE_INTEGER
              	    {
              	    lv_indices_4_0=(Token)match(input,RULE_INTEGER,FollowSets000.FOLLOW_RULE_INTEGER_in_ruleConstantExpression_extractvalue5116); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      			newLeafNode(lv_indices_4_0, grammarAccess.getConstantExpression_extractvalueAccess().getIndicesINTEGERTerminalRuleCall_3_1_0()); 
              	      		
              	    }
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElement(grammarAccess.getConstantExpression_extractvalueRule());
              	      	        }
              	             		addWithLastConsumed(
              	             			current, 
              	             			"indices",
              	              		lv_indices_4_0, 
              	              		"INTEGER");
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    if ( cnt28 >= 1 ) break loop28;
              	    if (state.backtracking>0) {state.failed=true; return current;}
                          EarlyExitException eee =
                              new EarlyExitException(28, input);
                          throw eee;
                  }
                  cnt28++;
              } while (true);
  
              otherlv_5=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleConstantExpression_extractvalue5135); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_5, grammarAccess.getConstantExpression_extractvalueAccess().getRightParenthesisKeyword_4());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantExpression_extractvalue"
  
  
      // $ANTLR start "entryRuleConstantExpression_insertvalue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2397:1: entryRuleConstantExpression_insertvalue returns [EObject current=null] : iv_ruleConstantExpression_insertvalue= ruleConstantExpression_insertvalue EOF ;
      public final EObject entryRuleConstantExpression_insertvalue() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantExpression_insertvalue = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2398:2: (iv_ruleConstantExpression_insertvalue= ruleConstantExpression_insertvalue EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2399:2: iv_ruleConstantExpression_insertvalue= ruleConstantExpression_insertvalue EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantExpression_insertvalueRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_insertvalue_in_entryRuleConstantExpression_insertvalue5171);
              iv_ruleConstantExpression_insertvalue=ruleConstantExpression_insertvalue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantExpression_insertvalue; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantExpression_insertvalue5181); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantExpression_insertvalue"
  
  
      // $ANTLR start "ruleConstantExpression_insertvalue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2406:1: ruleConstantExpression_insertvalue returns [EObject current=null] : ( ( (lv_opcode_0_0= 'insertvalue' ) ) otherlv_1= '(' ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_element_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_indices_6_0= RULE_INTEGER ) ) )+ otherlv_7= ')' ) ;
      public final EObject ruleConstantExpression_insertvalue() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token lv_indices_6_0=null;
          Token otherlv_7=null;
          EObject lv_value_2_0 = null;
  
          EObject lv_element_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2409:28: ( ( ( (lv_opcode_0_0= 'insertvalue' ) ) otherlv_1= '(' ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_element_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_indices_6_0= RULE_INTEGER ) ) )+ otherlv_7= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2410:1: ( ( (lv_opcode_0_0= 'insertvalue' ) ) otherlv_1= '(' ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_element_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_indices_6_0= RULE_INTEGER ) ) )+ otherlv_7= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2410:1: ( ( (lv_opcode_0_0= 'insertvalue' ) ) otherlv_1= '(' ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_element_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_indices_6_0= RULE_INTEGER ) ) )+ otherlv_7= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2410:2: ( (lv_opcode_0_0= 'insertvalue' ) ) otherlv_1= '(' ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_element_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_indices_6_0= RULE_INTEGER ) ) )+ otherlv_7= ')'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2410:2: ( (lv_opcode_0_0= 'insertvalue' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2411:1: (lv_opcode_0_0= 'insertvalue' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2411:1: (lv_opcode_0_0= 'insertvalue' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2412:3: lv_opcode_0_0= 'insertvalue'
              {
              lv_opcode_0_0=(Token)match(input,51,FollowSets000.FOLLOW_51_in_ruleConstantExpression_insertvalue5224); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getConstantExpression_insertvalueAccess().getOpcodeInsertvalueKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getConstantExpression_insertvalueRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "insertvalue");
                	    
              }
  
              }
  
  
              }
  
              otherlv_1=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleConstantExpression_insertvalue5249); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getConstantExpression_insertvalueAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2429:1: ( (lv_value_2_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2430:1: (lv_value_2_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2430:1: (lv_value_2_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2431:3: lv_value_2_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_insertvalueAccess().getValueTypedValueParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_insertvalue5270);
              lv_value_2_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_insertvalueRule());
                	        }
                       		set(
                       			current, 
                       			"value",
                        		lv_value_2_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_insertvalue5282); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getConstantExpression_insertvalueAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2451:1: ( (lv_element_4_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2452:1: (lv_element_4_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2452:1: (lv_element_4_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2453:3: lv_element_4_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_insertvalueAccess().getElementTypedValueParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_insertvalue5303);
              lv_element_4_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_insertvalueRule());
                	        }
                       		set(
                       			current, 
                       			"element",
                        		lv_element_4_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2469:2: (otherlv_5= ',' ( (lv_indices_6_0= RULE_INTEGER ) ) )+
              int cnt29=0;
              loop29:
              do {
                  int alt29=2;
                  int LA29_0 = input.LA(1);
  
                  if ( (LA29_0==38) ) {
                      alt29=1;
                  }
  
  
                  switch (alt29) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2469:4: otherlv_5= ',' ( (lv_indices_6_0= RULE_INTEGER ) )
              	    {
              	    otherlv_5=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_insertvalue5316); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_5, grammarAccess.getConstantExpression_insertvalueAccess().getCommaKeyword_5_0());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2473:1: ( (lv_indices_6_0= RULE_INTEGER ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2474:1: (lv_indices_6_0= RULE_INTEGER )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2474:1: (lv_indices_6_0= RULE_INTEGER )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2475:3: lv_indices_6_0= RULE_INTEGER
              	    {
              	    lv_indices_6_0=(Token)match(input,RULE_INTEGER,FollowSets000.FOLLOW_RULE_INTEGER_in_ruleConstantExpression_insertvalue5333); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      			newLeafNode(lv_indices_6_0, grammarAccess.getConstantExpression_insertvalueAccess().getIndicesINTEGERTerminalRuleCall_5_1_0()); 
              	      		
              	    }
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElement(grammarAccess.getConstantExpression_insertvalueRule());
              	      	        }
              	             		addWithLastConsumed(
              	             			current, 
              	             			"indices",
              	              		lv_indices_6_0, 
              	              		"INTEGER");
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    if ( cnt29 >= 1 ) break loop29;
              	    if (state.backtracking>0) {state.failed=true; return current;}
                          EarlyExitException eee =
                              new EarlyExitException(29, input);
                          throw eee;
                  }
                  cnt29++;
              } while (true);
  
              otherlv_7=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleConstantExpression_insertvalue5352); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_7, grammarAccess.getConstantExpression_insertvalueAccess().getRightParenthesisKeyword_6());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantExpression_insertvalue"
  
  
      // $ANTLR start "entryRuleConstantExpression_binary"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2503:1: entryRuleConstantExpression_binary returns [EObject current=null] : iv_ruleConstantExpression_binary= ruleConstantExpression_binary EOF ;
      public final EObject entryRuleConstantExpression_binary() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantExpression_binary = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2504:2: (iv_ruleConstantExpression_binary= ruleConstantExpression_binary EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2505:2: iv_ruleConstantExpression_binary= ruleConstantExpression_binary EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantExpression_binaryRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantExpression_binary_in_entryRuleConstantExpression_binary5388);
              iv_ruleConstantExpression_binary=ruleConstantExpression_binary();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantExpression_binary; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantExpression_binary5398); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantExpression_binary"
  
  
      // $ANTLR start "ruleConstantExpression_binary"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2512:1: ruleConstantExpression_binary returns [EObject current=null] : ( ( ( ( ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ) | ( ( ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) ) ) (otherlv_5= 'exact' )? ) | ( ( (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' ) ) ) ) otherlv_7= '(' ( (lv_op1_8_0= ruleTypedValue ) ) otherlv_9= ',' ( (lv_op2_10_0= ruleTypedValue ) ) otherlv_11= ')' ) ;
      public final EObject ruleConstantExpression_binary() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_1=null;
          Token lv_opcode_0_2=null;
          Token lv_opcode_0_3=null;
          Token lv_opcode_0_4=null;
          Token otherlv_2=null;
          Token otherlv_3=null;
          Token lv_opcode_4_1=null;
          Token lv_opcode_4_2=null;
          Token lv_opcode_4_3=null;
          Token lv_opcode_4_4=null;
          Token otherlv_5=null;
          Token lv_opcode_6_1=null;
          Token lv_opcode_6_2=null;
          Token lv_opcode_6_3=null;
          Token lv_opcode_6_4=null;
          Token lv_opcode_6_5=null;
          Token lv_opcode_6_6=null;
          Token lv_opcode_6_7=null;
          Token lv_opcode_6_8=null;
          Token lv_opcode_6_9=null;
          Token lv_opcode_6_10=null;
          Token otherlv_7=null;
          Token otherlv_9=null;
          Token otherlv_11=null;
          EObject lv_op1_8_0 = null;
  
          EObject lv_op2_10_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2515:28: ( ( ( ( ( ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ) | ( ( ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) ) ) (otherlv_5= 'exact' )? ) | ( ( (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' ) ) ) ) otherlv_7= '(' ( (lv_op1_8_0= ruleTypedValue ) ) otherlv_9= ',' ( (lv_op2_10_0= ruleTypedValue ) ) otherlv_11= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2516:1: ( ( ( ( ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ) | ( ( ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) ) ) (otherlv_5= 'exact' )? ) | ( ( (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' ) ) ) ) otherlv_7= '(' ( (lv_op1_8_0= ruleTypedValue ) ) otherlv_9= ',' ( (lv_op2_10_0= ruleTypedValue ) ) otherlv_11= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2516:1: ( ( ( ( ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ) | ( ( ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) ) ) (otherlv_5= 'exact' )? ) | ( ( (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' ) ) ) ) otherlv_7= '(' ( (lv_op1_8_0= ruleTypedValue ) ) otherlv_9= ',' ( (lv_op2_10_0= ruleTypedValue ) ) otherlv_11= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2516:2: ( ( ( ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ) | ( ( ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) ) ) (otherlv_5= 'exact' )? ) | ( ( (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' ) ) ) ) otherlv_7= '(' ( (lv_op1_8_0= ruleTypedValue ) ) otherlv_9= ',' ( (lv_op2_10_0= ruleTypedValue ) ) otherlv_11= ')'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2516:2: ( ( ( ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ) | ( ( ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) ) ) (otherlv_5= 'exact' )? ) | ( ( (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' ) ) ) )
              int alt35=3;
              switch ( input.LA(1) ) {
              case 52:
              case 53:
              case 54:
              case 55:
                  {
                  alt35=1;
                  }
                  break;
              case 58:
              case 59:
              case 60:
              case 61:
                  {
                  alt35=2;
                  }
                  break;
              case 63:
              case 64:
              case 65:
              case 66:
              case 67:
              case 68:
              case 69:
              case 70:
              case 71:
              case 72:
                  {
                  alt35=3;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 35, 0, input);
  
                  throw nvae;
              }
  
              switch (alt35) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2516:3: ( ( ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2516:3: ( ( ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2516:4: ( ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2516:4: ( ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2517:1: ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2517:1: ( (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2518:1: (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2518:1: (lv_opcode_0_1= 'add' | lv_opcode_0_2= 'sub' | lv_opcode_0_3= 'mul' | lv_opcode_0_4= 'shl' )
                      int alt30=4;
                      switch ( input.LA(1) ) {
                      case 52:
                          {
                          alt30=1;
                          }
                          break;
                      case 53:
                          {
                          alt30=2;
                          }
                          break;
                      case 54:
                          {
                          alt30=3;
                          }
                          break;
                      case 55:
                          {
                          alt30=4;
                          }
                          break;
                      default:
                          if (state.backtracking>0) {state.failed=true; return current;}
                          NoViableAltException nvae =
                              new NoViableAltException("", 30, 0, input);
  
                          throw nvae;
                      }
  
                      switch (alt30) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2519:3: lv_opcode_0_1= 'add'
                              {
                              lv_opcode_0_1=(Token)match(input,52,FollowSets000.FOLLOW_52_in_ruleConstantExpression_binary5445); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_0_1, grammarAccess.getConstantExpression_binaryAccess().getOpcodeAddKeyword_0_0_0_0_0());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_0_1, null);
                                	    
                              }
  
                              }
                              break;
                          case 2 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2531:8: lv_opcode_0_2= 'sub'
                              {
                              lv_opcode_0_2=(Token)match(input,53,FollowSets000.FOLLOW_53_in_ruleConstantExpression_binary5474); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_0_2, grammarAccess.getConstantExpression_binaryAccess().getOpcodeSubKeyword_0_0_0_0_1());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_0_2, null);
                                	    
                              }
  
                              }
                              break;
                          case 3 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2543:8: lv_opcode_0_3= 'mul'
                              {
                              lv_opcode_0_3=(Token)match(input,54,FollowSets000.FOLLOW_54_in_ruleConstantExpression_binary5503); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_0_3, grammarAccess.getConstantExpression_binaryAccess().getOpcodeMulKeyword_0_0_0_0_2());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_0_3, null);
                                	    
                              }
  
                              }
                              break;
                          case 4 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2555:8: lv_opcode_0_4= 'shl'
                              {
                              lv_opcode_0_4=(Token)match(input,55,FollowSets000.FOLLOW_55_in_ruleConstantExpression_binary5532); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_0_4, grammarAccess.getConstantExpression_binaryAccess().getOpcodeShlKeyword_0_0_0_0_3());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_0_4, null);
                                	    
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2570:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2572:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2572:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2573:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* )
                      {
                      getUnorderedGroupHelper().enter(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1());
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2576:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2577:3: ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )*
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2577:3: ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )*
                      loop31:
                      do {
                          int alt31=3;
                          int LA31_0 = input.LA(1);
  
                          if ( LA31_0 ==56 && getUnorderedGroupHelper().canSelect(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1(), 0) ) {
                              alt31=1;
                          }
                          else if ( LA31_0 ==57 && getUnorderedGroupHelper().canSelect(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1(), 1) ) {
                              alt31=2;
                          }
  
  
                          switch (alt31) {
                      	case 1 :
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2579:4: ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) )
                      	    {
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2579:4: ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2580:5: {...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) )
                      	    {
                      	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1(), 0) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleConstantExpression_binary", "getUnorderedGroupHelper().canSelect(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1(), 0)");
                      	    }
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2580:126: ( ({...}? => (otherlv_2= 'nuw' ) ) )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2581:6: ({...}? => (otherlv_2= 'nuw' ) )
                      	    {
                      	    getUnorderedGroupHelper().select(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1(), 0);
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2584:6: ({...}? => (otherlv_2= 'nuw' ) )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2584:7: {...}? => (otherlv_2= 'nuw' )
                      	    {
                      	    if ( !((true)) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleConstantExpression_binary", "true");
                      	    }
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2584:16: (otherlv_2= 'nuw' )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2584:18: otherlv_2= 'nuw'
                      	    {
                      	    otherlv_2=(Token)match(input,56,FollowSets000.FOLLOW_56_in_ruleConstantExpression_binary5606); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	          	newLeafNode(otherlv_2, grammarAccess.getConstantExpression_binaryAccess().getNuwKeyword_0_0_1_0());
                      	          
                      	    }
  
                      	    }
  
  
                      	    }
  
                      	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1());
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
                      	case 2 :
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2595:4: ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) )
                      	    {
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2595:4: ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2596:5: {...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) )
                      	    {
                      	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1(), 1) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleConstantExpression_binary", "getUnorderedGroupHelper().canSelect(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1(), 1)");
                      	    }
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2596:126: ( ({...}? => (otherlv_3= 'nsw' ) ) )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2597:6: ({...}? => (otherlv_3= 'nsw' ) )
                      	    {
                      	    getUnorderedGroupHelper().select(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1(), 1);
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2600:6: ({...}? => (otherlv_3= 'nsw' ) )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2600:7: {...}? => (otherlv_3= 'nsw' )
                      	    {
                      	    if ( !((true)) ) {
                      	        if (state.backtracking>0) {state.failed=true; return current;}
                      	        throw new FailedPredicateException(input, "ruleConstantExpression_binary", "true");
                      	    }
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2600:16: (otherlv_3= 'nsw' )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2600:18: otherlv_3= 'nsw'
                      	    {
                      	    otherlv_3=(Token)match(input,57,FollowSets000.FOLLOW_57_in_ruleConstantExpression_binary5674); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	          	newLeafNode(otherlv_3, grammarAccess.getConstantExpression_binaryAccess().getNswKeyword_0_0_1_1());
                      	          
                      	    }
  
                      	    }
  
  
                      	    }
  
                      	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1());
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop31;
                          }
                      } while (true);
  
  
                      }
  
  
                      }
  
                      getUnorderedGroupHelper().leave(grammarAccess.getConstantExpression_binaryAccess().getUnorderedGroup_0_0_1());
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2619:6: ( ( ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) ) ) (otherlv_5= 'exact' )? )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2619:6: ( ( ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) ) ) (otherlv_5= 'exact' )? )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2619:7: ( ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) ) ) (otherlv_5= 'exact' )?
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2619:7: ( ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2620:1: ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2620:1: ( (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2621:1: (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2621:1: (lv_opcode_4_1= 'sdiv' | lv_opcode_4_2= 'udiv' | lv_opcode_4_3= 'lshr' | lv_opcode_4_4= 'ashr' )
                      int alt32=4;
                      switch ( input.LA(1) ) {
                      case 58:
                          {
                          alt32=1;
                          }
                          break;
                      case 59:
                          {
                          alt32=2;
                          }
                          break;
                      case 60:
                          {
                          alt32=3;
                          }
                          break;
                      case 61:
                          {
                          alt32=4;
                          }
                          break;
                      default:
                          if (state.backtracking>0) {state.failed=true; return current;}
                          NoViableAltException nvae =
                              new NoViableAltException("", 32, 0, input);
  
                          throw nvae;
                      }
  
                      switch (alt32) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2622:3: lv_opcode_4_1= 'sdiv'
                              {
                              lv_opcode_4_1=(Token)match(input,58,FollowSets000.FOLLOW_58_in_ruleConstantExpression_binary5743); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_4_1, grammarAccess.getConstantExpression_binaryAccess().getOpcodeSdivKeyword_0_1_0_0_0());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_4_1, null);
                                	    
                              }
  
                              }
                              break;
                          case 2 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2634:8: lv_opcode_4_2= 'udiv'
                              {
                              lv_opcode_4_2=(Token)match(input,59,FollowSets000.FOLLOW_59_in_ruleConstantExpression_binary5772); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_4_2, grammarAccess.getConstantExpression_binaryAccess().getOpcodeUdivKeyword_0_1_0_0_1());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_4_2, null);
                                	    
                              }
  
                              }
                              break;
                          case 3 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2646:8: lv_opcode_4_3= 'lshr'
                              {
                              lv_opcode_4_3=(Token)match(input,60,FollowSets000.FOLLOW_60_in_ruleConstantExpression_binary5801); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_4_3, grammarAccess.getConstantExpression_binaryAccess().getOpcodeLshrKeyword_0_1_0_0_2());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_4_3, null);
                                	    
                              }
  
                              }
                              break;
                          case 4 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2658:8: lv_opcode_4_4= 'ashr'
                              {
                              lv_opcode_4_4=(Token)match(input,61,FollowSets000.FOLLOW_61_in_ruleConstantExpression_binary5830); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_4_4, grammarAccess.getConstantExpression_binaryAccess().getOpcodeAshrKeyword_0_1_0_0_3());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_4_4, null);
                                	    
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2673:2: (otherlv_5= 'exact' )?
                      int alt33=2;
                      int LA33_0 = input.LA(1);
  
                      if ( (LA33_0==62) ) {
                          alt33=1;
                      }
                      switch (alt33) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2673:4: otherlv_5= 'exact'
                              {
                              otherlv_5=(Token)match(input,62,FollowSets000.FOLLOW_62_in_ruleConstantExpression_binary5859); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_5, grammarAccess.getConstantExpression_binaryAccess().getExactKeyword_0_1_1());
                                    
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2678:6: ( ( (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2678:6: ( ( (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2679:1: ( (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2679:1: ( (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2680:1: (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2680:1: (lv_opcode_6_1= 'fadd' | lv_opcode_6_2= 'fsub' | lv_opcode_6_3= 'fmul' | lv_opcode_6_4= 'fdiv' | lv_opcode_6_5= 'urem' | lv_opcode_6_6= 'srem' | lv_opcode_6_7= 'frem' | lv_opcode_6_8= 'and' | lv_opcode_6_9= 'or' | lv_opcode_6_10= 'xor' )
                      int alt34=10;
                      switch ( input.LA(1) ) {
                      case 63:
                          {
                          alt34=1;
                          }
                          break;
                      case 64:
                          {
                          alt34=2;
                          }
                          break;
                      case 65:
                          {
                          alt34=3;
                          }
                          break;
                      case 66:
                          {
                          alt34=4;
                          }
                          break;
                      case 67:
                          {
                          alt34=5;
                          }
                          break;
                      case 68:
                          {
                          alt34=6;
                          }
                          break;
                      case 69:
                          {
                          alt34=7;
                          }
                          break;
                      case 70:
                          {
                          alt34=8;
                          }
                          break;
                      case 71:
                          {
                          alt34=9;
                          }
                          break;
                      case 72:
                          {
                          alt34=10;
                          }
                          break;
                      default:
                          if (state.backtracking>0) {state.failed=true; return current;}
                          NoViableAltException nvae =
                              new NoViableAltException("", 34, 0, input);
  
                          throw nvae;
                      }
  
                      switch (alt34) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2681:3: lv_opcode_6_1= 'fadd'
                              {
                              lv_opcode_6_1=(Token)match(input,63,FollowSets000.FOLLOW_63_in_ruleConstantExpression_binary5888); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_6_1, grammarAccess.getConstantExpression_binaryAccess().getOpcodeFaddKeyword_0_2_0_0());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_6_1, null);
                                	    
                              }
  
                              }
                              break;
                          case 2 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2693:8: lv_opcode_6_2= 'fsub'
                              {
                              lv_opcode_6_2=(Token)match(input,64,FollowSets000.FOLLOW_64_in_ruleConstantExpression_binary5917); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_6_2, grammarAccess.getConstantExpression_binaryAccess().getOpcodeFsubKeyword_0_2_0_1());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_6_2, null);
                                	    
                              }
  
                              }
                              break;
                          case 3 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2705:8: lv_opcode_6_3= 'fmul'
                              {
                              lv_opcode_6_3=(Token)match(input,65,FollowSets000.FOLLOW_65_in_ruleConstantExpression_binary5946); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_6_3, grammarAccess.getConstantExpression_binaryAccess().getOpcodeFmulKeyword_0_2_0_2());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_6_3, null);
                                	    
                              }
  
                              }
                              break;
                          case 4 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2717:8: lv_opcode_6_4= 'fdiv'
                              {
                              lv_opcode_6_4=(Token)match(input,66,FollowSets000.FOLLOW_66_in_ruleConstantExpression_binary5975); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_6_4, grammarAccess.getConstantExpression_binaryAccess().getOpcodeFdivKeyword_0_2_0_3());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_6_4, null);
                                	    
                              }
  
                              }
                              break;
                          case 5 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2729:8: lv_opcode_6_5= 'urem'
                              {
                              lv_opcode_6_5=(Token)match(input,67,FollowSets000.FOLLOW_67_in_ruleConstantExpression_binary6004); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_6_5, grammarAccess.getConstantExpression_binaryAccess().getOpcodeUremKeyword_0_2_0_4());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_6_5, null);
                                	    
                              }
  
                              }
                              break;
                          case 6 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2741:8: lv_opcode_6_6= 'srem'
                              {
                              lv_opcode_6_6=(Token)match(input,68,FollowSets000.FOLLOW_68_in_ruleConstantExpression_binary6033); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_6_6, grammarAccess.getConstantExpression_binaryAccess().getOpcodeSremKeyword_0_2_0_5());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_6_6, null);
                                	    
                              }
  
                              }
                              break;
                          case 7 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2753:8: lv_opcode_6_7= 'frem'
                              {
                              lv_opcode_6_7=(Token)match(input,69,FollowSets000.FOLLOW_69_in_ruleConstantExpression_binary6062); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_6_7, grammarAccess.getConstantExpression_binaryAccess().getOpcodeFremKeyword_0_2_0_6());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_6_7, null);
                                	    
                              }
  
                              }
                              break;
                          case 8 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2765:8: lv_opcode_6_8= 'and'
                              {
                              lv_opcode_6_8=(Token)match(input,70,FollowSets000.FOLLOW_70_in_ruleConstantExpression_binary6091); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_6_8, grammarAccess.getConstantExpression_binaryAccess().getOpcodeAndKeyword_0_2_0_7());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_6_8, null);
                                	    
                              }
  
                              }
                              break;
                          case 9 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2777:8: lv_opcode_6_9= 'or'
                              {
                              lv_opcode_6_9=(Token)match(input,71,FollowSets000.FOLLOW_71_in_ruleConstantExpression_binary6120); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_6_9, grammarAccess.getConstantExpression_binaryAccess().getOpcodeOrKeyword_0_2_0_8());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_6_9, null);
                                	    
                              }
  
                              }
                              break;
                          case 10 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2789:8: lv_opcode_6_10= 'xor'
                              {
                              lv_opcode_6_10=(Token)match(input,72,FollowSets000.FOLLOW_72_in_ruleConstantExpression_binary6149); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_opcode_6_10, grammarAccess.getConstantExpression_binaryAccess().getOpcodeXorKeyword_0_2_0_9());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getConstantExpression_binaryRule());
                                	        }
                                       		setWithLastConsumed(current, "opcode", lv_opcode_6_10, null);
                                	    
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
              otherlv_7=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleConstantExpression_binary6178); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_7, grammarAccess.getConstantExpression_binaryAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2808:1: ( (lv_op1_8_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2809:1: (lv_op1_8_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2809:1: (lv_op1_8_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2810:3: lv_op1_8_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_binaryAccess().getOp1TypedValueParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_binary6199);
              lv_op1_8_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_binaryRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_8_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_9=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantExpression_binary6211); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_9, grammarAccess.getConstantExpression_binaryAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2830:1: ( (lv_op2_10_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2831:1: (lv_op2_10_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2831:1: (lv_op2_10_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2832:3: lv_op2_10_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantExpression_binaryAccess().getOp2TypedValueParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleConstantExpression_binary6232);
              lv_op2_10_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantExpression_binaryRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_10_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_11=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleConstantExpression_binary6244); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_11, grammarAccess.getConstantExpression_binaryAccess().getRightParenthesisKeyword_5());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantExpression_binary"
  
  
      // $ANTLR start "entryRuleUndef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2860:1: entryRuleUndef returns [EObject current=null] : iv_ruleUndef= ruleUndef EOF ;
      public final EObject entryRuleUndef() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleUndef = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2861:2: (iv_ruleUndef= ruleUndef EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2862:2: iv_ruleUndef= ruleUndef EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getUndefRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleUndef_in_entryRuleUndef6280);
              iv_ruleUndef=ruleUndef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleUndef; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleUndef6290); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleUndef"
  
  
      // $ANTLR start "ruleUndef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2869:1: ruleUndef returns [EObject current=null] : (otherlv_0= 'undef' () ) ;
      public final EObject ruleUndef() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2872:28: ( (otherlv_0= 'undef' () ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2873:1: (otherlv_0= 'undef' () )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2873:1: (otherlv_0= 'undef' () )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2873:3: otherlv_0= 'undef' ()
              {
              otherlv_0=(Token)match(input,73,FollowSets000.FOLLOW_73_in_ruleUndef6327); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getUndefAccess().getUndefKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2877:1: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2878:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getUndefAccess().getUndefAction_1(),
                            current);
                    
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleUndef"
  
  
      // $ANTLR start "entryRuleBlockAddress"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2891:1: entryRuleBlockAddress returns [EObject current=null] : iv_ruleBlockAddress= ruleBlockAddress EOF ;
      public final EObject entryRuleBlockAddress() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleBlockAddress = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2892:2: (iv_ruleBlockAddress= ruleBlockAddress EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2893:2: iv_ruleBlockAddress= ruleBlockAddress EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getBlockAddressRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleBlockAddress_in_entryRuleBlockAddress6372);
              iv_ruleBlockAddress=ruleBlockAddress();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleBlockAddress; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBlockAddress6382); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleBlockAddress"
  
  
      // $ANTLR start "ruleBlockAddress"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2900:1: ruleBlockAddress returns [EObject current=null] : (otherlv_0= 'blockaddress' otherlv_1= '(' ( (lv_function_2_0= ruleGlobalValueRef ) ) otherlv_3= ',' ( (lv_basicBlock_4_0= ruleBasicBlockRef ) ) otherlv_5= ')' ) ;
      public final EObject ruleBlockAddress() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          EObject lv_function_2_0 = null;
  
          EObject lv_basicBlock_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2903:28: ( (otherlv_0= 'blockaddress' otherlv_1= '(' ( (lv_function_2_0= ruleGlobalValueRef ) ) otherlv_3= ',' ( (lv_basicBlock_4_0= ruleBasicBlockRef ) ) otherlv_5= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2904:1: (otherlv_0= 'blockaddress' otherlv_1= '(' ( (lv_function_2_0= ruleGlobalValueRef ) ) otherlv_3= ',' ( (lv_basicBlock_4_0= ruleBasicBlockRef ) ) otherlv_5= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2904:1: (otherlv_0= 'blockaddress' otherlv_1= '(' ( (lv_function_2_0= ruleGlobalValueRef ) ) otherlv_3= ',' ( (lv_basicBlock_4_0= ruleBasicBlockRef ) ) otherlv_5= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2904:3: otherlv_0= 'blockaddress' otherlv_1= '(' ( (lv_function_2_0= ruleGlobalValueRef ) ) otherlv_3= ',' ( (lv_basicBlock_4_0= ruleBasicBlockRef ) ) otherlv_5= ')'
              {
              otherlv_0=(Token)match(input,74,FollowSets000.FOLLOW_74_in_ruleBlockAddress6419); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getBlockAddressAccess().getBlockaddressKeyword_0());
                    
              }
              otherlv_1=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleBlockAddress6431); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getBlockAddressAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2912:1: ( (lv_function_2_0= ruleGlobalValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2913:1: (lv_function_2_0= ruleGlobalValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2913:1: (lv_function_2_0= ruleGlobalValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2914:3: lv_function_2_0= ruleGlobalValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getBlockAddressAccess().getFunctionGlobalValueRefParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleGlobalValueRef_in_ruleBlockAddress6452);
              lv_function_2_0=ruleGlobalValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getBlockAddressRule());
                	        }
                       		set(
                       			current, 
                       			"function",
                        		lv_function_2_0, 
                        		"GlobalValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleBlockAddress6464); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getBlockAddressAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2934:1: ( (lv_basicBlock_4_0= ruleBasicBlockRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2935:1: (lv_basicBlock_4_0= ruleBasicBlockRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2935:1: (lv_basicBlock_4_0= ruleBasicBlockRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2936:3: lv_basicBlock_4_0= ruleBasicBlockRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getBlockAddressAccess().getBasicBlockBasicBlockRefParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleBasicBlockRef_in_ruleBlockAddress6485);
              lv_basicBlock_4_0=ruleBasicBlockRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getBlockAddressRule());
                	        }
                       		set(
                       			current, 
                       			"basicBlock",
                        		lv_basicBlock_4_0, 
                        		"BasicBlockRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_5=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleBlockAddress6497); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_5, grammarAccess.getBlockAddressAccess().getRightParenthesisKeyword_5());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleBlockAddress"
  
  
      // $ANTLR start "entryRuleZeroInitializer"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2964:1: entryRuleZeroInitializer returns [EObject current=null] : iv_ruleZeroInitializer= ruleZeroInitializer EOF ;
      public final EObject entryRuleZeroInitializer() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleZeroInitializer = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2965:2: (iv_ruleZeroInitializer= ruleZeroInitializer EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2966:2: iv_ruleZeroInitializer= ruleZeroInitializer EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getZeroInitializerRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleZeroInitializer_in_entryRuleZeroInitializer6533);
              iv_ruleZeroInitializer=ruleZeroInitializer();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleZeroInitializer; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleZeroInitializer6543); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleZeroInitializer"
  
  
      // $ANTLR start "ruleZeroInitializer"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2973:1: ruleZeroInitializer returns [EObject current=null] : (otherlv_0= 'zeroinitializer' () ) ;
      public final EObject ruleZeroInitializer() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2976:28: ( (otherlv_0= 'zeroinitializer' () ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2977:1: (otherlv_0= 'zeroinitializer' () )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2977:1: (otherlv_0= 'zeroinitializer' () )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2977:3: otherlv_0= 'zeroinitializer' ()
              {
              otherlv_0=(Token)match(input,75,FollowSets000.FOLLOW_75_in_ruleZeroInitializer6580); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getZeroInitializerAccess().getZeroinitializerKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2981:1: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2982:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getZeroInitializerAccess().getZeroInitializerAction_1(),
                            current);
                    
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleZeroInitializer"
  
  
      // $ANTLR start "entryRuleStructureConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2995:1: entryRuleStructureConstant returns [EObject current=null] : iv_ruleStructureConstant= ruleStructureConstant EOF ;
      public final EObject entryRuleStructureConstant() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleStructureConstant = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2996:2: (iv_ruleStructureConstant= ruleStructureConstant EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:2997:2: iv_ruleStructureConstant= ruleStructureConstant EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getStructureConstantRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleStructureConstant_in_entryRuleStructureConstant6625);
              iv_ruleStructureConstant=ruleStructureConstant();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleStructureConstant; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStructureConstant6635); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleStructureConstant"
  
  
      // $ANTLR start "ruleStructureConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3004:1: ruleStructureConstant returns [EObject current=null] : ( () ( (otherlv_1= '{' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '}' ) | ( ( (lv_packed_4_0= '<' ) ) otherlv_5= '{' ( (lv_list_6_0= ruleConstantList ) )? otherlv_7= '}' otherlv_8= '>' ) ) ) ;
      public final EObject ruleStructureConstant() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token lv_packed_4_0=null;
          Token otherlv_5=null;
          Token otherlv_7=null;
          Token otherlv_8=null;
          EObject lv_list_2_0 = null;
  
          EObject lv_list_6_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3007:28: ( ( () ( (otherlv_1= '{' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '}' ) | ( ( (lv_packed_4_0= '<' ) ) otherlv_5= '{' ( (lv_list_6_0= ruleConstantList ) )? otherlv_7= '}' otherlv_8= '>' ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3008:1: ( () ( (otherlv_1= '{' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '}' ) | ( ( (lv_packed_4_0= '<' ) ) otherlv_5= '{' ( (lv_list_6_0= ruleConstantList ) )? otherlv_7= '}' otherlv_8= '>' ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3008:1: ( () ( (otherlv_1= '{' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '}' ) | ( ( (lv_packed_4_0= '<' ) ) otherlv_5= '{' ( (lv_list_6_0= ruleConstantList ) )? otherlv_7= '}' otherlv_8= '>' ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3008:2: () ( (otherlv_1= '{' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '}' ) | ( ( (lv_packed_4_0= '<' ) ) otherlv_5= '{' ( (lv_list_6_0= ruleConstantList ) )? otherlv_7= '}' otherlv_8= '>' ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3008:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3009:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getStructureConstantAccess().getStructureConstantAction_0(),
                            current);
                    
              }
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3014:2: ( (otherlv_1= '{' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '}' ) | ( ( (lv_packed_4_0= '<' ) ) otherlv_5= '{' ( (lv_list_6_0= ruleConstantList ) )? otherlv_7= '}' otherlv_8= '>' ) )
              int alt38=2;
              int LA38_0 = input.LA(1);
  
              if ( (LA38_0==26) ) {
                  alt38=1;
              }
              else if ( (LA38_0==76) ) {
                  alt38=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 38, 0, input);
  
                  throw nvae;
              }
              switch (alt38) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3014:3: (otherlv_1= '{' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '}' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3014:3: (otherlv_1= '{' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '}' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3014:5: otherlv_1= '{' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '}'
                      {
                      otherlv_1=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleStructureConstant6683); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getStructureConstantAccess().getLeftCurlyBracketKeyword_1_0_0());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3018:1: ( (lv_list_2_0= ruleConstantList ) )?
                      int alt36=2;
                      int LA36_0 = input.LA(1);
  
                      if ( (LA36_0==RULE_LOCAL_ID||LA36_0==RULE_INT_TYPE||LA36_0==26||LA36_0==28||LA36_0==76||LA36_0==78||LA36_0==123||LA36_0==216||(LA36_0>=218 && LA36_0<=224)) ) {
                          alt36=1;
                      }
                      switch (alt36) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3019:1: (lv_list_2_0= ruleConstantList )
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3019:1: (lv_list_2_0= ruleConstantList )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3020:3: lv_list_2_0= ruleConstantList
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getStructureConstantAccess().getListConstantListParserRuleCall_1_0_1_0()); 
                                	    
                              }
                              pushFollow(FollowSets000.FOLLOW_ruleConstantList_in_ruleStructureConstant6704);
                              lv_list_2_0=ruleConstantList();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getStructureConstantRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"list",
                                        		lv_list_2_0, 
                                        		"ConstantList");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
  
  
                              }
                              break;
  
                      }
  
                      otherlv_3=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleStructureConstant6717); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_3, grammarAccess.getStructureConstantAccess().getRightCurlyBracketKeyword_1_0_2());
                            
                      }
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3041:6: ( ( (lv_packed_4_0= '<' ) ) otherlv_5= '{' ( (lv_list_6_0= ruleConstantList ) )? otherlv_7= '}' otherlv_8= '>' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3041:6: ( ( (lv_packed_4_0= '<' ) ) otherlv_5= '{' ( (lv_list_6_0= ruleConstantList ) )? otherlv_7= '}' otherlv_8= '>' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3041:7: ( (lv_packed_4_0= '<' ) ) otherlv_5= '{' ( (lv_list_6_0= ruleConstantList ) )? otherlv_7= '}' otherlv_8= '>'
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3041:7: ( (lv_packed_4_0= '<' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3042:1: (lv_packed_4_0= '<' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3042:1: (lv_packed_4_0= '<' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3043:3: lv_packed_4_0= '<'
                      {
                      lv_packed_4_0=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleStructureConstant6743); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_packed_4_0, grammarAccess.getStructureConstantAccess().getPackedLessThanSignKeyword_1_1_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getStructureConstantRule());
                        	        }
                               		setWithLastConsumed(current, "packed", lv_packed_4_0, "<");
                        	    
                      }
  
                      }
  
  
                      }
  
                      otherlv_5=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleStructureConstant6768); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_5, grammarAccess.getStructureConstantAccess().getLeftCurlyBracketKeyword_1_1_1());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3060:1: ( (lv_list_6_0= ruleConstantList ) )?
                      int alt37=2;
                      int LA37_0 = input.LA(1);
  
                      if ( (LA37_0==RULE_LOCAL_ID||LA37_0==RULE_INT_TYPE||LA37_0==26||LA37_0==28||LA37_0==76||LA37_0==78||LA37_0==123||LA37_0==216||(LA37_0>=218 && LA37_0<=224)) ) {
                          alt37=1;
                      }
                      switch (alt37) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3061:1: (lv_list_6_0= ruleConstantList )
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3061:1: (lv_list_6_0= ruleConstantList )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3062:3: lv_list_6_0= ruleConstantList
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getStructureConstantAccess().getListConstantListParserRuleCall_1_1_2_0()); 
                                	    
                              }
                              pushFollow(FollowSets000.FOLLOW_ruleConstantList_in_ruleStructureConstant6789);
                              lv_list_6_0=ruleConstantList();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getStructureConstantRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"list",
                                        		lv_list_6_0, 
                                        		"ConstantList");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
  
  
                              }
                              break;
  
                      }
  
                      otherlv_7=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleStructureConstant6802); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_7, grammarAccess.getStructureConstantAccess().getRightCurlyBracketKeyword_1_1_3());
                            
                      }
                      otherlv_8=(Token)match(input,77,FollowSets000.FOLLOW_77_in_ruleStructureConstant6814); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_8, grammarAccess.getStructureConstantAccess().getGreaterThanSignKeyword_1_1_4());
                            
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleStructureConstant"
  
  
      // $ANTLR start "entryRuleArrayConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3094:1: entryRuleArrayConstant returns [EObject current=null] : iv_ruleArrayConstant= ruleArrayConstant EOF ;
      public final EObject entryRuleArrayConstant() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleArrayConstant = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3095:2: (iv_ruleArrayConstant= ruleArrayConstant EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3096:2: iv_ruleArrayConstant= ruleArrayConstant EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getArrayConstantRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleArrayConstant_in_entryRuleArrayConstant6852);
              iv_ruleArrayConstant=ruleArrayConstant();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleArrayConstant; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleArrayConstant6862); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleArrayConstant"
  
  
      // $ANTLR start "ruleArrayConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3103:1: ruleArrayConstant returns [EObject current=null] : ( () otherlv_1= '[' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= ']' ) ;
      public final EObject ruleArrayConstant() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          Token otherlv_3=null;
          EObject lv_list_2_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3106:28: ( ( () otherlv_1= '[' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= ']' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3107:1: ( () otherlv_1= '[' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= ']' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3107:1: ( () otherlv_1= '[' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= ']' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3107:2: () otherlv_1= '[' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= ']'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3107:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3108:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getArrayConstantAccess().getArrayConstantAction_0(),
                            current);
                    
              }
  
              }
  
              otherlv_1=(Token)match(input,78,FollowSets000.FOLLOW_78_in_ruleArrayConstant6908); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getArrayConstantAccess().getLeftSquareBracketKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3117:1: ( (lv_list_2_0= ruleConstantList ) )?
              int alt39=2;
              int LA39_0 = input.LA(1);
  
              if ( (LA39_0==RULE_LOCAL_ID||LA39_0==RULE_INT_TYPE||LA39_0==26||LA39_0==28||LA39_0==76||LA39_0==78||LA39_0==123||LA39_0==216||(LA39_0>=218 && LA39_0<=224)) ) {
                  alt39=1;
              }
              switch (alt39) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3118:1: (lv_list_2_0= ruleConstantList )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3118:1: (lv_list_2_0= ruleConstantList )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3119:3: lv_list_2_0= ruleConstantList
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getArrayConstantAccess().getListConstantListParserRuleCall_2_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantList_in_ruleArrayConstant6929);
                      lv_list_2_0=ruleConstantList();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getArrayConstantRule());
                        	        }
                               		set(
                               			current, 
                               			"list",
                                		lv_list_2_0, 
                                		"ConstantList");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              otherlv_3=(Token)match(input,79,FollowSets000.FOLLOW_79_in_ruleArrayConstant6942); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getArrayConstantAccess().getRightSquareBracketKeyword_3());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleArrayConstant"
  
  
      // $ANTLR start "entryRuleVectorConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3147:1: entryRuleVectorConstant returns [EObject current=null] : iv_ruleVectorConstant= ruleVectorConstant EOF ;
      public final EObject entryRuleVectorConstant() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleVectorConstant = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3148:2: (iv_ruleVectorConstant= ruleVectorConstant EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3149:2: iv_ruleVectorConstant= ruleVectorConstant EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getVectorConstantRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleVectorConstant_in_entryRuleVectorConstant6978);
              iv_ruleVectorConstant=ruleVectorConstant();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleVectorConstant; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleVectorConstant6988); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleVectorConstant"
  
  
      // $ANTLR start "ruleVectorConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3156:1: ruleVectorConstant returns [EObject current=null] : ( () otherlv_1= '<' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '>' ) ;
      public final EObject ruleVectorConstant() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          Token otherlv_3=null;
          EObject lv_list_2_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3159:28: ( ( () otherlv_1= '<' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '>' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3160:1: ( () otherlv_1= '<' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '>' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3160:1: ( () otherlv_1= '<' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '>' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3160:2: () otherlv_1= '<' ( (lv_list_2_0= ruleConstantList ) )? otherlv_3= '>'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3160:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3161:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getVectorConstantAccess().getVectorConstantAction_0(),
                            current);
                    
              }
  
              }
  
              otherlv_1=(Token)match(input,76,FollowSets000.FOLLOW_76_in_ruleVectorConstant7034); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getVectorConstantAccess().getLessThanSignKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3170:1: ( (lv_list_2_0= ruleConstantList ) )?
              int alt40=2;
              int LA40_0 = input.LA(1);
  
              if ( (LA40_0==RULE_LOCAL_ID||LA40_0==RULE_INT_TYPE||LA40_0==26||LA40_0==28||LA40_0==76||LA40_0==78||LA40_0==123||LA40_0==216||(LA40_0>=218 && LA40_0<=224)) ) {
                  alt40=1;
              }
              switch (alt40) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3171:1: (lv_list_2_0= ruleConstantList )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3171:1: (lv_list_2_0= ruleConstantList )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3172:3: lv_list_2_0= ruleConstantList
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getVectorConstantAccess().getListConstantListParserRuleCall_2_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConstantList_in_ruleVectorConstant7055);
                      lv_list_2_0=ruleConstantList();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getVectorConstantRule());
                        	        }
                               		set(
                               			current, 
                               			"list",
                                		lv_list_2_0, 
                                		"ConstantList");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              otherlv_3=(Token)match(input,77,FollowSets000.FOLLOW_77_in_ruleVectorConstant7068); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getVectorConstantAccess().getGreaterThanSignKeyword_3());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleVectorConstant"
  
  
      // $ANTLR start "entryRuleConstantList"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3200:1: entryRuleConstantList returns [EObject current=null] : iv_ruleConstantList= ruleConstantList EOF ;
      public final EObject entryRuleConstantList() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConstantList = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3201:2: (iv_ruleConstantList= ruleConstantList EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3202:2: iv_ruleConstantList= ruleConstantList EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConstantListRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstantList_in_entryRuleConstantList7104);
              iv_ruleConstantList=ruleConstantList();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConstantList; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleConstantList7114); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConstantList"
  
  
      // $ANTLR start "ruleConstantList"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3209:1: ruleConstantList returns [EObject current=null] : ( ( (lv_typedConstants_0_0= ruleTypedConstant ) ) (otherlv_1= ',' ( (lv_typedConstants_2_0= ruleTypedConstant ) ) )* ) ;
      public final EObject ruleConstantList() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          EObject lv_typedConstants_0_0 = null;
  
          EObject lv_typedConstants_2_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3212:28: ( ( ( (lv_typedConstants_0_0= ruleTypedConstant ) ) (otherlv_1= ',' ( (lv_typedConstants_2_0= ruleTypedConstant ) ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3213:1: ( ( (lv_typedConstants_0_0= ruleTypedConstant ) ) (otherlv_1= ',' ( (lv_typedConstants_2_0= ruleTypedConstant ) ) )* )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3213:1: ( ( (lv_typedConstants_0_0= ruleTypedConstant ) ) (otherlv_1= ',' ( (lv_typedConstants_2_0= ruleTypedConstant ) ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3213:2: ( (lv_typedConstants_0_0= ruleTypedConstant ) ) (otherlv_1= ',' ( (lv_typedConstants_2_0= ruleTypedConstant ) ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3213:2: ( (lv_typedConstants_0_0= ruleTypedConstant ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3214:1: (lv_typedConstants_0_0= ruleTypedConstant )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3214:1: (lv_typedConstants_0_0= ruleTypedConstant )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3215:3: lv_typedConstants_0_0= ruleTypedConstant
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConstantListAccess().getTypedConstantsTypedConstantParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedConstant_in_ruleConstantList7160);
              lv_typedConstants_0_0=ruleTypedConstant();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConstantListRule());
                	        }
                       		add(
                       			current, 
                       			"typedConstants",
                        		lv_typedConstants_0_0, 
                        		"TypedConstant");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3231:2: (otherlv_1= ',' ( (lv_typedConstants_2_0= ruleTypedConstant ) ) )*
              loop41:
              do {
                  int alt41=2;
                  int LA41_0 = input.LA(1);
  
                  if ( (LA41_0==38) ) {
                      alt41=1;
                  }
  
  
                  switch (alt41) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3231:4: otherlv_1= ',' ( (lv_typedConstants_2_0= ruleTypedConstant ) )
              	    {
              	    otherlv_1=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleConstantList7173); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_1, grammarAccess.getConstantListAccess().getCommaKeyword_1_0());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3235:1: ( (lv_typedConstants_2_0= ruleTypedConstant ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3236:1: (lv_typedConstants_2_0= ruleTypedConstant )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3236:1: (lv_typedConstants_2_0= ruleTypedConstant )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3237:3: lv_typedConstants_2_0= ruleTypedConstant
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getConstantListAccess().getTypedConstantsTypedConstantParserRuleCall_1_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleTypedConstant_in_ruleConstantList7194);
              	    lv_typedConstants_2_0=ruleTypedConstant();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getConstantListRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"typedConstants",
              	              		lv_typedConstants_2_0, 
              	              		"TypedConstant");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop41;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConstantList"
  
  
      // $ANTLR start "entryRuleTypedConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3261:1: entryRuleTypedConstant returns [EObject current=null] : iv_ruleTypedConstant= ruleTypedConstant EOF ;
      public final EObject entryRuleTypedConstant() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleTypedConstant = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3262:2: (iv_ruleTypedConstant= ruleTypedConstant EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3263:2: iv_ruleTypedConstant= ruleTypedConstant EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getTypedConstantRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedConstant_in_entryRuleTypedConstant7232);
              iv_ruleTypedConstant=ruleTypedConstant();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleTypedConstant; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTypedConstant7242); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleTypedConstant"
  
  
      // $ANTLR start "ruleTypedConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3270:1: ruleTypedConstant returns [EObject current=null] : ( ( (lv_type_0_0= ruleType ) ) ( (lv_value_1_0= ruleConstant ) ) ) ;
      public final EObject ruleTypedConstant() throws RecognitionException {
          EObject current = null;
  
          EObject lv_type_0_0 = null;
  
          EObject lv_value_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3273:28: ( ( ( (lv_type_0_0= ruleType ) ) ( (lv_value_1_0= ruleConstant ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3274:1: ( ( (lv_type_0_0= ruleType ) ) ( (lv_value_1_0= ruleConstant ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3274:1: ( ( (lv_type_0_0= ruleType ) ) ( (lv_value_1_0= ruleConstant ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3274:2: ( (lv_type_0_0= ruleType ) ) ( (lv_value_1_0= ruleConstant ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3274:2: ( (lv_type_0_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3275:1: (lv_type_0_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3275:1: (lv_type_0_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3276:3: lv_type_0_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getTypedConstantAccess().getTypeTypeParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleType_in_ruleTypedConstant7288);
              lv_type_0_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getTypedConstantRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_0_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3292:2: ( (lv_value_1_0= ruleConstant ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3293:1: (lv_value_1_0= ruleConstant )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3293:1: (lv_value_1_0= ruleConstant )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3294:3: lv_value_1_0= ruleConstant
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getTypedConstantAccess().getValueConstantParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleConstant_in_ruleTypedConstant7309);
              lv_value_1_0=ruleConstant();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getTypedConstantRule());
                	        }
                       		set(
                       			current, 
                       			"value",
                        		lv_value_1_0, 
                        		"Constant");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleTypedConstant"
  
  
      // $ANTLR start "entryRuleSimpleConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3318:1: entryRuleSimpleConstant returns [EObject current=null] : iv_ruleSimpleConstant= ruleSimpleConstant EOF ;
      public final EObject entryRuleSimpleConstant() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleSimpleConstant = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3319:2: (iv_ruleSimpleConstant= ruleSimpleConstant EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3320:2: iv_ruleSimpleConstant= ruleSimpleConstant EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getSimpleConstantRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleSimpleConstant_in_entryRuleSimpleConstant7345);
              iv_ruleSimpleConstant=ruleSimpleConstant();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleSimpleConstant; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSimpleConstant7355); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleSimpleConstant"
  
  
      // $ANTLR start "ruleSimpleConstant"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3327:1: ruleSimpleConstant returns [EObject current=null] : ( ( (lv_value_0_1= RULE_INTEGER | lv_value_0_2= RULE_SIGNED_INT | lv_value_0_3= RULE_FLOAT | lv_value_0_4= RULE_BOOLEAN | lv_value_0_5= RULE_NULL | lv_value_0_6= RULE_CSTRING ) ) ) ;
      public final EObject ruleSimpleConstant() throws RecognitionException {
          EObject current = null;
  
          Token lv_value_0_1=null;
          Token lv_value_0_2=null;
          Token lv_value_0_3=null;
          Token lv_value_0_4=null;
          Token lv_value_0_5=null;
          Token lv_value_0_6=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3330:28: ( ( ( (lv_value_0_1= RULE_INTEGER | lv_value_0_2= RULE_SIGNED_INT | lv_value_0_3= RULE_FLOAT | lv_value_0_4= RULE_BOOLEAN | lv_value_0_5= RULE_NULL | lv_value_0_6= RULE_CSTRING ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3331:1: ( ( (lv_value_0_1= RULE_INTEGER | lv_value_0_2= RULE_SIGNED_INT | lv_value_0_3= RULE_FLOAT | lv_value_0_4= RULE_BOOLEAN | lv_value_0_5= RULE_NULL | lv_value_0_6= RULE_CSTRING ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3331:1: ( ( (lv_value_0_1= RULE_INTEGER | lv_value_0_2= RULE_SIGNED_INT | lv_value_0_3= RULE_FLOAT | lv_value_0_4= RULE_BOOLEAN | lv_value_0_5= RULE_NULL | lv_value_0_6= RULE_CSTRING ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3332:1: ( (lv_value_0_1= RULE_INTEGER | lv_value_0_2= RULE_SIGNED_INT | lv_value_0_3= RULE_FLOAT | lv_value_0_4= RULE_BOOLEAN | lv_value_0_5= RULE_NULL | lv_value_0_6= RULE_CSTRING ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3332:1: ( (lv_value_0_1= RULE_INTEGER | lv_value_0_2= RULE_SIGNED_INT | lv_value_0_3= RULE_FLOAT | lv_value_0_4= RULE_BOOLEAN | lv_value_0_5= RULE_NULL | lv_value_0_6= RULE_CSTRING ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3333:1: (lv_value_0_1= RULE_INTEGER | lv_value_0_2= RULE_SIGNED_INT | lv_value_0_3= RULE_FLOAT | lv_value_0_4= RULE_BOOLEAN | lv_value_0_5= RULE_NULL | lv_value_0_6= RULE_CSTRING )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3333:1: (lv_value_0_1= RULE_INTEGER | lv_value_0_2= RULE_SIGNED_INT | lv_value_0_3= RULE_FLOAT | lv_value_0_4= RULE_BOOLEAN | lv_value_0_5= RULE_NULL | lv_value_0_6= RULE_CSTRING )
              int alt42=6;
              switch ( input.LA(1) ) {
              case RULE_INTEGER:
                  {
                  alt42=1;
                  }
                  break;
              case RULE_SIGNED_INT:
                  {
                  alt42=2;
                  }
                  break;
              case RULE_FLOAT:
                  {
                  alt42=3;
                  }
                  break;
              case RULE_BOOLEAN:
                  {
                  alt42=4;
                  }
                  break;
              case RULE_NULL:
                  {
                  alt42=5;
                  }
                  break;
              case RULE_CSTRING:
                  {
                  alt42=6;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 42, 0, input);
  
                  throw nvae;
              }
  
              switch (alt42) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3334:3: lv_value_0_1= RULE_INTEGER
                      {
                      lv_value_0_1=(Token)match(input,RULE_INTEGER,FollowSets000.FOLLOW_RULE_INTEGER_in_ruleSimpleConstant7398); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(lv_value_0_1, grammarAccess.getSimpleConstantAccess().getValueINTEGERTerminalRuleCall_0_0()); 
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getSimpleConstantRule());
                        	        }
                               		setWithLastConsumed(
                               			current, 
                               			"value",
                                		lv_value_0_1, 
                                		"INTEGER");
                        	    
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3349:8: lv_value_0_2= RULE_SIGNED_INT
                      {
                      lv_value_0_2=(Token)match(input,RULE_SIGNED_INT,FollowSets000.FOLLOW_RULE_SIGNED_INT_in_ruleSimpleConstant7418); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(lv_value_0_2, grammarAccess.getSimpleConstantAccess().getValueSIGNED_INTTerminalRuleCall_0_1()); 
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getSimpleConstantRule());
                        	        }
                               		setWithLastConsumed(
                               			current, 
                               			"value",
                                		lv_value_0_2, 
                                		"SIGNED_INT");
                        	    
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3364:8: lv_value_0_3= RULE_FLOAT
                      {
                      lv_value_0_3=(Token)match(input,RULE_FLOAT,FollowSets000.FOLLOW_RULE_FLOAT_in_ruleSimpleConstant7438); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(lv_value_0_3, grammarAccess.getSimpleConstantAccess().getValueFLOATTerminalRuleCall_0_2()); 
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getSimpleConstantRule());
                        	        }
                               		setWithLastConsumed(
                               			current, 
                               			"value",
                                		lv_value_0_3, 
                                		"FLOAT");
                        	    
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3379:8: lv_value_0_4= RULE_BOOLEAN
                      {
                      lv_value_0_4=(Token)match(input,RULE_BOOLEAN,FollowSets000.FOLLOW_RULE_BOOLEAN_in_ruleSimpleConstant7458); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(lv_value_0_4, grammarAccess.getSimpleConstantAccess().getValueBOOLEANTerminalRuleCall_0_3()); 
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getSimpleConstantRule());
                        	        }
                               		setWithLastConsumed(
                               			current, 
                               			"value",
                                		lv_value_0_4, 
                                		"BOOLEAN");
                        	    
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3394:8: lv_value_0_5= RULE_NULL
                      {
                      lv_value_0_5=(Token)match(input,RULE_NULL,FollowSets000.FOLLOW_RULE_NULL_in_ruleSimpleConstant7478); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(lv_value_0_5, grammarAccess.getSimpleConstantAccess().getValueNULLTerminalRuleCall_0_4()); 
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getSimpleConstantRule());
                        	        }
                               		setWithLastConsumed(
                               			current, 
                               			"value",
                                		lv_value_0_5, 
                                		"NULL");
                        	    
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3409:8: lv_value_0_6= RULE_CSTRING
                      {
                      lv_value_0_6=(Token)match(input,RULE_CSTRING,FollowSets000.FOLLOW_RULE_CSTRING_in_ruleSimpleConstant7498); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(lv_value_0_6, grammarAccess.getSimpleConstantAccess().getValueCSTRINGTerminalRuleCall_0_5()); 
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getSimpleConstantRule());
                        	        }
                               		setWithLastConsumed(
                               			current, 
                               			"value",
                                		lv_value_0_6, 
                                		"CSTRING");
                        	    
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleSimpleConstant"
  
  
      // $ANTLR start "entryRuleMetadataNode"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3435:1: entryRuleMetadataNode returns [EObject current=null] : iv_ruleMetadataNode= ruleMetadataNode EOF ;
      public final EObject entryRuleMetadataNode() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleMetadataNode = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3436:2: (iv_ruleMetadataNode= ruleMetadataNode EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3437:2: iv_ruleMetadataNode= ruleMetadataNode EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getMetadataNodeRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleMetadataNode_in_entryRuleMetadataNode7541);
              iv_ruleMetadataNode=ruleMetadataNode();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleMetadataNode; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMetadataNode7551); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleMetadataNode"
  
  
      // $ANTLR start "ruleMetadataNode"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3444:1: ruleMetadataNode returns [EObject current=null] : ( () otherlv_1= '!' otherlv_2= '{' ( ( (lv_elements_3_0= ruleMetadataNodeElement ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleMetadataNodeElement ) ) )* )? otherlv_6= '}' ) ;
      public final EObject ruleMetadataNode() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          Token otherlv_6=null;
          EObject lv_elements_3_0 = null;
  
          EObject lv_elements_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3447:28: ( ( () otherlv_1= '!' otherlv_2= '{' ( ( (lv_elements_3_0= ruleMetadataNodeElement ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleMetadataNodeElement ) ) )* )? otherlv_6= '}' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3448:1: ( () otherlv_1= '!' otherlv_2= '{' ( ( (lv_elements_3_0= ruleMetadataNodeElement ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleMetadataNodeElement ) ) )* )? otherlv_6= '}' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3448:1: ( () otherlv_1= '!' otherlv_2= '{' ( ( (lv_elements_3_0= ruleMetadataNodeElement ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleMetadataNodeElement ) ) )* )? otherlv_6= '}' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3448:2: () otherlv_1= '!' otherlv_2= '{' ( ( (lv_elements_3_0= ruleMetadataNodeElement ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleMetadataNodeElement ) ) )* )? otherlv_6= '}'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3448:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3449:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getMetadataNodeAccess().getMetadataNodeAction_0(),
                            current);
                    
              }
  
              }
  
              otherlv_1=(Token)match(input,80,FollowSets000.FOLLOW_80_in_ruleMetadataNode7597); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getMetadataNodeAccess().getExclamationMarkKeyword_1());
                    
              }
              otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleMetadataNode7609); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getMetadataNodeAccess().getLeftCurlyBracketKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3462:1: ( ( (lv_elements_3_0= ruleMetadataNodeElement ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleMetadataNodeElement ) ) )* )?
              int alt44=2;
              int LA44_0 = input.LA(1);
  
              if ( ((LA44_0>=RULE_META_INT && LA44_0<=RULE_LOCAL_ID)||LA44_0==RULE_NULL||LA44_0==RULE_INT_TYPE||LA44_0==26||LA44_0==28||LA44_0==76||LA44_0==78||LA44_0==123||LA44_0==216||(LA44_0>=218 && LA44_0<=224)) ) {
                  alt44=1;
              }
              switch (alt44) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3462:2: ( (lv_elements_3_0= ruleMetadataNodeElement ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleMetadataNodeElement ) ) )*
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3462:2: ( (lv_elements_3_0= ruleMetadataNodeElement ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3463:1: (lv_elements_3_0= ruleMetadataNodeElement )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3463:1: (lv_elements_3_0= ruleMetadataNodeElement )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3464:3: lv_elements_3_0= ruleMetadataNodeElement
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getMetadataNodeAccess().getElementsMetadataNodeElementParserRuleCall_3_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleMetadataNodeElement_in_ruleMetadataNode7631);
                      lv_elements_3_0=ruleMetadataNodeElement();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getMetadataNodeRule());
                        	        }
                               		add(
                               			current, 
                               			"elements",
                                		lv_elements_3_0, 
                                		"MetadataNodeElement");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3480:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleMetadataNodeElement ) ) )*
                      loop43:
                      do {
                          int alt43=2;
                          int LA43_0 = input.LA(1);
  
                          if ( (LA43_0==38) ) {
                              alt43=1;
                          }
  
  
                          switch (alt43) {
                      	case 1 :
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3480:4: otherlv_4= ',' ( (lv_elements_5_0= ruleMetadataNodeElement ) )
                      	    {
                      	    otherlv_4=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleMetadataNode7644); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	          	newLeafNode(otherlv_4, grammarAccess.getMetadataNodeAccess().getCommaKeyword_3_1_0());
                      	          
                      	    }
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3484:1: ( (lv_elements_5_0= ruleMetadataNodeElement ) )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3485:1: (lv_elements_5_0= ruleMetadataNodeElement )
                      	    {
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3485:1: (lv_elements_5_0= ruleMetadataNodeElement )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3486:3: lv_elements_5_0= ruleMetadataNodeElement
                      	    {
                      	    if ( state.backtracking==0 ) {
                      	       
                      	      	        newCompositeNode(grammarAccess.getMetadataNodeAccess().getElementsMetadataNodeElementParserRuleCall_3_1_1_0()); 
                      	      	    
                      	    }
                      	    pushFollow(FollowSets000.FOLLOW_ruleMetadataNodeElement_in_ruleMetadataNode7665);
                      	    lv_elements_5_0=ruleMetadataNodeElement();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      	        if (current==null) {
                      	      	            current = createModelElementForParent(grammarAccess.getMetadataNodeRule());
                      	      	        }
                      	             		add(
                      	             			current, 
                      	             			"elements",
                      	              		lv_elements_5_0, 
                      	              		"MetadataNodeElement");
                      	      	        afterParserOrEnumRuleCall();
                      	      	    
                      	    }
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop43;
                          }
                      } while (true);
  
  
                      }
                      break;
  
              }
  
              otherlv_6=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleMetadataNode7681); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_6, grammarAccess.getMetadataNodeAccess().getRightCurlyBracketKeyword_4());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleMetadataNode"
  
  
      // $ANTLR start "entryRuleMetadataNodeElement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3514:1: entryRuleMetadataNodeElement returns [EObject current=null] : iv_ruleMetadataNodeElement= ruleMetadataNodeElement EOF ;
      public final EObject entryRuleMetadataNodeElement() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleMetadataNodeElement = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3515:2: (iv_ruleMetadataNodeElement= ruleMetadataNodeElement EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3516:2: iv_ruleMetadataNodeElement= ruleMetadataNodeElement EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getMetadataNodeElementRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleMetadataNodeElement_in_entryRuleMetadataNodeElement7717);
              iv_ruleMetadataNodeElement=ruleMetadataNodeElement();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleMetadataNodeElement; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMetadataNodeElement7727); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleMetadataNodeElement"
  
  
      // $ANTLR start "ruleMetadataNodeElement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3523:1: ruleMetadataNodeElement returns [EObject current=null] : ( ( (lv_value_0_0= ruleTypedValue ) ) | ( (lv_metadataRef_1_0= ruleMetadataRef ) ) | ( (lv_null_2_0= RULE_NULL ) ) ) ;
      public final EObject ruleMetadataNodeElement() throws RecognitionException {
          EObject current = null;
  
          Token lv_null_2_0=null;
          EObject lv_value_0_0 = null;
  
          EObject lv_metadataRef_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3526:28: ( ( ( (lv_value_0_0= ruleTypedValue ) ) | ( (lv_metadataRef_1_0= ruleMetadataRef ) ) | ( (lv_null_2_0= RULE_NULL ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3527:1: ( ( (lv_value_0_0= ruleTypedValue ) ) | ( (lv_metadataRef_1_0= ruleMetadataRef ) ) | ( (lv_null_2_0= RULE_NULL ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3527:1: ( ( (lv_value_0_0= ruleTypedValue ) ) | ( (lv_metadataRef_1_0= ruleMetadataRef ) ) | ( (lv_null_2_0= RULE_NULL ) ) )
              int alt45=3;
              switch ( input.LA(1) ) {
              case RULE_LOCAL_ID:
              case RULE_INT_TYPE:
              case 26:
              case 28:
              case 76:
              case 78:
              case 123:
              case 216:
              case 218:
              case 219:
              case 220:
              case 221:
              case 222:
              case 223:
              case 224:
                  {
                  alt45=1;
                  }
                  break;
              case RULE_META_INT:
              case RULE_META_NAME:
                  {
                  alt45=2;
                  }
                  break;
              case RULE_NULL:
                  {
                  alt45=3;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 45, 0, input);
  
                  throw nvae;
              }
  
              switch (alt45) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3527:2: ( (lv_value_0_0= ruleTypedValue ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3527:2: ( (lv_value_0_0= ruleTypedValue ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3528:1: (lv_value_0_0= ruleTypedValue )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3528:1: (lv_value_0_0= ruleTypedValue )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3529:3: lv_value_0_0= ruleTypedValue
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getMetadataNodeElementAccess().getValueTypedValueParserRuleCall_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleMetadataNodeElement7773);
                      lv_value_0_0=ruleTypedValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getMetadataNodeElementRule());
                        	        }
                               		set(
                               			current, 
                               			"value",
                                		lv_value_0_0, 
                                		"TypedValue");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3546:6: ( (lv_metadataRef_1_0= ruleMetadataRef ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3546:6: ( (lv_metadataRef_1_0= ruleMetadataRef ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3547:1: (lv_metadataRef_1_0= ruleMetadataRef )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3547:1: (lv_metadataRef_1_0= ruleMetadataRef )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3548:3: lv_metadataRef_1_0= ruleMetadataRef
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getMetadataNodeElementAccess().getMetadataRefMetadataRefParserRuleCall_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleMetadataRef_in_ruleMetadataNodeElement7800);
                      lv_metadataRef_1_0=ruleMetadataRef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getMetadataNodeElementRule());
                        	        }
                               		set(
                               			current, 
                               			"metadataRef",
                                		lv_metadataRef_1_0, 
                                		"MetadataRef");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3565:6: ( (lv_null_2_0= RULE_NULL ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3565:6: ( (lv_null_2_0= RULE_NULL ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3566:1: (lv_null_2_0= RULE_NULL )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3566:1: (lv_null_2_0= RULE_NULL )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3567:3: lv_null_2_0= RULE_NULL
                      {
                      lv_null_2_0=(Token)match(input,RULE_NULL,FollowSets000.FOLLOW_RULE_NULL_in_ruleMetadataNodeElement7823); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(lv_null_2_0, grammarAccess.getMetadataNodeElementAccess().getNullNULLTerminalRuleCall_2_0()); 
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getMetadataNodeElementRule());
                        	        }
                               		setWithLastConsumed(
                               			current, 
                               			"null",
                                		lv_null_2_0, 
                                		"NULL");
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleMetadataNodeElement"
  
  
      // $ANTLR start "entryRuleMetadataString"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3591:1: entryRuleMetadataString returns [EObject current=null] : iv_ruleMetadataString= ruleMetadataString EOF ;
      public final EObject entryRuleMetadataString() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleMetadataString = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3592:2: (iv_ruleMetadataString= ruleMetadataString EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3593:2: iv_ruleMetadataString= ruleMetadataString EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getMetadataStringRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleMetadataString_in_entryRuleMetadataString7864);
              iv_ruleMetadataString=ruleMetadataString();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleMetadataString; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMetadataString7874); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleMetadataString"
  
  
      // $ANTLR start "ruleMetadataString"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3600:1: ruleMetadataString returns [EObject current=null] : ( (lv_name_0_0= RULE_METADATA_STRING ) ) ;
      public final EObject ruleMetadataString() throws RecognitionException {
          EObject current = null;
  
          Token lv_name_0_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3603:28: ( ( (lv_name_0_0= RULE_METADATA_STRING ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3604:1: ( (lv_name_0_0= RULE_METADATA_STRING ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3604:1: ( (lv_name_0_0= RULE_METADATA_STRING ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3605:1: (lv_name_0_0= RULE_METADATA_STRING )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3605:1: (lv_name_0_0= RULE_METADATA_STRING )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3606:3: lv_name_0_0= RULE_METADATA_STRING
              {
              lv_name_0_0=(Token)match(input,RULE_METADATA_STRING,FollowSets000.FOLLOW_RULE_METADATA_STRING_in_ruleMetadataString7915); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_name_0_0, grammarAccess.getMetadataStringAccess().getNameMETADATA_STRINGTerminalRuleCall_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getMetadataStringRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"name",
                        		lv_name_0_0, 
                        		"METADATA_STRING");
                	    
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleMetadataString"
  
  
      // $ANTLR start "entryRuleTLSmodel"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3630:1: entryRuleTLSmodel returns [String current=null] : iv_ruleTLSmodel= ruleTLSmodel EOF ;
      public final String entryRuleTLSmodel() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleTLSmodel = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3631:2: (iv_ruleTLSmodel= ruleTLSmodel EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3632:2: iv_ruleTLSmodel= ruleTLSmodel EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getTLSmodelRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleTLSmodel_in_entryRuleTLSmodel7956);
              iv_ruleTLSmodel=ruleTLSmodel();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleTLSmodel.getText(); 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTLSmodel7967); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleTLSmodel"
  
  
      // $ANTLR start "ruleTLSmodel"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3639:1: ruleTLSmodel returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'thread_local' kw= '(' this_TLSoption_2= ruleTLSoption kw= ')' ) ;
      public final AntlrDatatypeRuleToken ruleTLSmodel() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
          AntlrDatatypeRuleToken this_TLSoption_2 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3642:28: ( (kw= 'thread_local' kw= '(' this_TLSoption_2= ruleTLSoption kw= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3643:1: (kw= 'thread_local' kw= '(' this_TLSoption_2= ruleTLSoption kw= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3643:1: (kw= 'thread_local' kw= '(' this_TLSoption_2= ruleTLSoption kw= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3644:2: kw= 'thread_local' kw= '(' this_TLSoption_2= ruleTLSoption kw= ')'
              {
              kw=(Token)match(input,81,FollowSets000.FOLLOW_81_in_ruleTLSmodel8005); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        current.merge(kw);
                        newLeafNode(kw, grammarAccess.getTLSmodelAccess().getThread_localKeyword_0()); 
                    
              }
              kw=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleTLSmodel8018); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        current.merge(kw);
                        newLeafNode(kw, grammarAccess.getTLSmodelAccess().getLeftParenthesisKeyword_1()); 
                    
              }
              if ( state.backtracking==0 ) {
                 
                        newCompositeNode(grammarAccess.getTLSmodelAccess().getTLSoptionParserRuleCall_2()); 
                    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTLSoption_in_ruleTLSmodel8040);
              this_TLSoption_2=ruleTLSoption();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                		current.merge(this_TLSoption_2);
                    
              }
              if ( state.backtracking==0 ) {
                 
                        afterParserOrEnumRuleCall();
                    
              }
              kw=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleTLSmodel8058); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        current.merge(kw);
                        newLeafNode(kw, grammarAccess.getTLSmodelAccess().getRightParenthesisKeyword_3()); 
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleTLSmodel"
  
  
      // $ANTLR start "entryRuleTLSoption"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3680:1: entryRuleTLSoption returns [String current=null] : iv_ruleTLSoption= ruleTLSoption EOF ;
      public final String entryRuleTLSoption() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleTLSoption = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3681:2: (iv_ruleTLSoption= ruleTLSoption EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3682:2: iv_ruleTLSoption= ruleTLSoption EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getTLSoptionRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleTLSoption_in_entryRuleTLSoption8099);
              iv_ruleTLSoption=ruleTLSoption();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleTLSoption.getText(); 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTLSoption8110); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleTLSoption"
  
  
      // $ANTLR start "ruleTLSoption"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3689:1: ruleTLSoption returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'localdynamic' | kw= 'initialexec' | kw= 'localexec' ) ;
      public final AntlrDatatypeRuleToken ruleTLSoption() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3692:28: ( (kw= 'localdynamic' | kw= 'initialexec' | kw= 'localexec' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3693:1: (kw= 'localdynamic' | kw= 'initialexec' | kw= 'localexec' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3693:1: (kw= 'localdynamic' | kw= 'initialexec' | kw= 'localexec' )
              int alt46=3;
              switch ( input.LA(1) ) {
              case 82:
                  {
                  alt46=1;
                  }
                  break;
              case 83:
                  {
                  alt46=2;
                  }
                  break;
              case 84:
                  {
                  alt46=3;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 46, 0, input);
  
                  throw nvae;
              }
  
              switch (alt46) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3694:2: kw= 'localdynamic'
                      {
                      kw=(Token)match(input,82,FollowSets000.FOLLOW_82_in_ruleTLSoption8148); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getTLSoptionAccess().getLocaldynamicKeyword_0()); 
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3701:2: kw= 'initialexec'
                      {
                      kw=(Token)match(input,83,FollowSets000.FOLLOW_83_in_ruleTLSoption8167); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getTLSoptionAccess().getInitialexecKeyword_1()); 
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3708:2: kw= 'localexec'
                      {
                      kw=(Token)match(input,84,FollowSets000.FOLLOW_84_in_ruleTLSoption8186); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getTLSoptionAccess().getLocalexecKeyword_2()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleTLSoption"
  
  
      // $ANTLR start "entryRuleAddressSpace"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3721:1: entryRuleAddressSpace returns [EObject current=null] : iv_ruleAddressSpace= ruleAddressSpace EOF ;
      public final EObject entryRuleAddressSpace() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleAddressSpace = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3722:2: (iv_ruleAddressSpace= ruleAddressSpace EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3723:2: iv_ruleAddressSpace= ruleAddressSpace EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getAddressSpaceRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleAddressSpace_in_entryRuleAddressSpace8226);
              iv_ruleAddressSpace=ruleAddressSpace();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleAddressSpace; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAddressSpace8236); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleAddressSpace"
  
  
      // $ANTLR start "ruleAddressSpace"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3730:1: ruleAddressSpace returns [EObject current=null] : (otherlv_0= 'addrspace' otherlv_1= '(' ( (lv_value_2_0= RULE_INTEGER ) ) otherlv_3= ')' ) ;
      public final EObject ruleAddressSpace() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token otherlv_1=null;
          Token lv_value_2_0=null;
          Token otherlv_3=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3733:28: ( (otherlv_0= 'addrspace' otherlv_1= '(' ( (lv_value_2_0= RULE_INTEGER ) ) otherlv_3= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3734:1: (otherlv_0= 'addrspace' otherlv_1= '(' ( (lv_value_2_0= RULE_INTEGER ) ) otherlv_3= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3734:1: (otherlv_0= 'addrspace' otherlv_1= '(' ( (lv_value_2_0= RULE_INTEGER ) ) otherlv_3= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3734:3: otherlv_0= 'addrspace' otherlv_1= '(' ( (lv_value_2_0= RULE_INTEGER ) ) otherlv_3= ')'
              {
              otherlv_0=(Token)match(input,85,FollowSets000.FOLLOW_85_in_ruleAddressSpace8273); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getAddressSpaceAccess().getAddrspaceKeyword_0());
                    
              }
              otherlv_1=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleAddressSpace8285); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getAddressSpaceAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3742:1: ( (lv_value_2_0= RULE_INTEGER ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3743:1: (lv_value_2_0= RULE_INTEGER )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3743:1: (lv_value_2_0= RULE_INTEGER )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3744:3: lv_value_2_0= RULE_INTEGER
              {
              lv_value_2_0=(Token)match(input,RULE_INTEGER,FollowSets000.FOLLOW_RULE_INTEGER_in_ruleAddressSpace8302); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_value_2_0, grammarAccess.getAddressSpaceAccess().getValueINTEGERTerminalRuleCall_2_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getAddressSpaceRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"value",
                        		lv_value_2_0, 
                        		"INTEGER");
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleAddressSpace8319); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getAddressSpaceAccess().getRightParenthesisKeyword_3());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleAddressSpace"
  
  
      // $ANTLR start "entryRuleSection"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3772:1: entryRuleSection returns [String current=null] : iv_ruleSection= ruleSection EOF ;
      public final String entryRuleSection() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleSection = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3773:2: (iv_ruleSection= ruleSection EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3774:2: iv_ruleSection= ruleSection EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getSectionRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleSection_in_entryRuleSection8356);
              iv_ruleSection=ruleSection();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleSection.getText(); 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleSection8367); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleSection"
  
  
      // $ANTLR start "ruleSection"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3781:1: ruleSection returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'section' this_STRING_1= RULE_STRING ) ;
      public final AntlrDatatypeRuleToken ruleSection() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
          Token this_STRING_1=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3784:28: ( (kw= 'section' this_STRING_1= RULE_STRING ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3785:1: (kw= 'section' this_STRING_1= RULE_STRING )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3785:1: (kw= 'section' this_STRING_1= RULE_STRING )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3786:2: kw= 'section' this_STRING_1= RULE_STRING
              {
              kw=(Token)match(input,86,FollowSets000.FOLLOW_86_in_ruleSection8405); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        current.merge(kw);
                        newLeafNode(kw, grammarAccess.getSectionAccess().getSectionKeyword_0()); 
                    
              }
              this_STRING_1=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleSection8420); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                		current.merge(this_STRING_1);
                    
              }
              if ( state.backtracking==0 ) {
                 
                    newLeafNode(this_STRING_1, grammarAccess.getSectionAccess().getSTRINGTerminalRuleCall_1()); 
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleSection"
  
  
      // $ANTLR start "entryRuleAlign"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3806:1: entryRuleAlign returns [String current=null] : iv_ruleAlign= ruleAlign EOF ;
      public final String entryRuleAlign() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleAlign = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3807:2: (iv_ruleAlign= ruleAlign EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3808:2: iv_ruleAlign= ruleAlign EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getAlignRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleAlign_in_entryRuleAlign8466);
              iv_ruleAlign=ruleAlign();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleAlign.getText(); 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAlign8477); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleAlign"
  
  
      // $ANTLR start "ruleAlign"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3815:1: ruleAlign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'align' this_INTEGER_1= RULE_INTEGER ) ;
      public final AntlrDatatypeRuleToken ruleAlign() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
          Token this_INTEGER_1=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3818:28: ( (kw= 'align' this_INTEGER_1= RULE_INTEGER ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3819:1: (kw= 'align' this_INTEGER_1= RULE_INTEGER )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3819:1: (kw= 'align' this_INTEGER_1= RULE_INTEGER )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3820:2: kw= 'align' this_INTEGER_1= RULE_INTEGER
              {
              kw=(Token)match(input,87,FollowSets000.FOLLOW_87_in_ruleAlign8515); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        current.merge(kw);
                        newLeafNode(kw, grammarAccess.getAlignAccess().getAlignKeyword_0()); 
                    
              }
              this_INTEGER_1=(Token)match(input,RULE_INTEGER,FollowSets000.FOLLOW_RULE_INTEGER_in_ruleAlign8530); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                		current.merge(this_INTEGER_1);
                    
              }
              if ( state.backtracking==0 ) {
                 
                    newLeafNode(this_INTEGER_1, grammarAccess.getAlignAccess().getINTEGERTerminalRuleCall_1()); 
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleAlign"
  
  
      // $ANTLR start "entryRuleGc"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3840:1: entryRuleGc returns [String current=null] : iv_ruleGc= ruleGc EOF ;
      public final String entryRuleGc() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleGc = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3841:2: (iv_ruleGc= ruleGc EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3842:2: iv_ruleGc= ruleGc EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getGcRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleGc_in_entryRuleGc8576);
              iv_ruleGc=ruleGc();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleGc.getText(); 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleGc8587); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleGc"
  
  
      // $ANTLR start "ruleGc"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3849:1: ruleGc returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'gc' this_STRING_1= RULE_STRING ) ;
      public final AntlrDatatypeRuleToken ruleGc() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
          Token this_STRING_1=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3852:28: ( (kw= 'gc' this_STRING_1= RULE_STRING ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3853:1: (kw= 'gc' this_STRING_1= RULE_STRING )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3853:1: (kw= 'gc' this_STRING_1= RULE_STRING )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3854:2: kw= 'gc' this_STRING_1= RULE_STRING
              {
              kw=(Token)match(input,88,FollowSets000.FOLLOW_88_in_ruleGc8625); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        current.merge(kw);
                        newLeafNode(kw, grammarAccess.getGcAccess().getGcKeyword_0()); 
                    
              }
              this_STRING_1=(Token)match(input,RULE_STRING,FollowSets000.FOLLOW_RULE_STRING_in_ruleGc8640); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                		current.merge(this_STRING_1);
                    
              }
              if ( state.backtracking==0 ) {
                 
                    newLeafNode(this_STRING_1, grammarAccess.getGcAccess().getSTRINGTerminalRuleCall_1()); 
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleGc"
  
  
      // $ANTLR start "entryRuleFunction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3874:1: entryRuleFunction returns [EObject current=null] : iv_ruleFunction= ruleFunction EOF ;
      public final EObject entryRuleFunction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleFunction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3875:2: (iv_ruleFunction= ruleFunction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3876:2: iv_ruleFunction= ruleFunction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getFunctionRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleFunction_in_entryRuleFunction8685);
              iv_ruleFunction=ruleFunction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleFunction; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFunction8695); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleFunction"
  
  
      // $ANTLR start "ruleFunction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3883:1: ruleFunction returns [EObject current=null] : (this_FunctionDef_0= ruleFunctionDef | this_FunctionDecl_1= ruleFunctionDecl ) ;
      public final EObject ruleFunction() throws RecognitionException {
          EObject current = null;
  
          EObject this_FunctionDef_0 = null;
  
          EObject this_FunctionDecl_1 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3886:28: ( (this_FunctionDef_0= ruleFunctionDef | this_FunctionDecl_1= ruleFunctionDecl ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3887:1: (this_FunctionDef_0= ruleFunctionDef | this_FunctionDecl_1= ruleFunctionDecl )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3887:1: (this_FunctionDef_0= ruleFunctionDef | this_FunctionDecl_1= ruleFunctionDecl )
              int alt47=2;
              int LA47_0 = input.LA(1);
  
              if ( (LA47_0==89) ) {
                  alt47=1;
              }
              else if ( (LA47_0==90) ) {
                  alt47=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 47, 0, input);
  
                  throw nvae;
              }
              switch (alt47) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3888:5: this_FunctionDef_0= ruleFunctionDef
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getFunctionAccess().getFunctionDefParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleFunctionDef_in_ruleFunction8742);
                      this_FunctionDef_0=ruleFunctionDef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_FunctionDef_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3898:5: this_FunctionDecl_1= ruleFunctionDecl
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getFunctionAccess().getFunctionDeclParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleFunctionDecl_in_ruleFunction8769);
                      this_FunctionDecl_1=ruleFunctionDecl();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_FunctionDecl_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleFunction"
  
  
      // $ANTLR start "entryRuleFunctionDef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3914:1: entryRuleFunctionDef returns [EObject current=null] : iv_ruleFunctionDef= ruleFunctionDef EOF ;
      public final EObject entryRuleFunctionDef() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleFunctionDef = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3915:2: (iv_ruleFunctionDef= ruleFunctionDef EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3916:2: iv_ruleFunctionDef= ruleFunctionDef EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getFunctionDefRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleFunctionDef_in_entryRuleFunctionDef8804);
              iv_ruleFunctionDef=ruleFunctionDef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleFunctionDef; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFunctionDef8814); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleFunctionDef"
  
  
      // $ANTLR start "ruleFunctionDef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3923:1: ruleFunctionDef returns [EObject current=null] : (otherlv_0= 'define' ( (lv_header_1_0= ruleFunctionHeader ) ) otherlv_2= '{' ( (lv_basicBlocks_3_0= ruleBasicBlock ) )+ otherlv_4= '}' ) ;
      public final EObject ruleFunctionDef() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          EObject lv_header_1_0 = null;
  
          EObject lv_basicBlocks_3_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3926:28: ( (otherlv_0= 'define' ( (lv_header_1_0= ruleFunctionHeader ) ) otherlv_2= '{' ( (lv_basicBlocks_3_0= ruleBasicBlock ) )+ otherlv_4= '}' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3927:1: (otherlv_0= 'define' ( (lv_header_1_0= ruleFunctionHeader ) ) otherlv_2= '{' ( (lv_basicBlocks_3_0= ruleBasicBlock ) )+ otherlv_4= '}' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3927:1: (otherlv_0= 'define' ( (lv_header_1_0= ruleFunctionHeader ) ) otherlv_2= '{' ( (lv_basicBlocks_3_0= ruleBasicBlock ) )+ otherlv_4= '}' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3927:3: otherlv_0= 'define' ( (lv_header_1_0= ruleFunctionHeader ) ) otherlv_2= '{' ( (lv_basicBlocks_3_0= ruleBasicBlock ) )+ otherlv_4= '}'
              {
              otherlv_0=(Token)match(input,89,FollowSets000.FOLLOW_89_in_ruleFunctionDef8851); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getFunctionDefAccess().getDefineKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3931:1: ( (lv_header_1_0= ruleFunctionHeader ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3932:1: (lv_header_1_0= ruleFunctionHeader )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3932:1: (lv_header_1_0= ruleFunctionHeader )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3933:3: lv_header_1_0= ruleFunctionHeader
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getFunctionDefAccess().getHeaderFunctionHeaderParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleFunctionHeader_in_ruleFunctionDef8872);
              lv_header_1_0=ruleFunctionHeader();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getFunctionDefRule());
                	        }
                       		set(
                       			current, 
                       			"header",
                        		lv_header_1_0, 
                        		"FunctionHeader");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,26,FollowSets000.FOLLOW_26_in_ruleFunctionDef8884); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getFunctionDefAccess().getLeftCurlyBracketKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3953:1: ( (lv_basicBlocks_3_0= ruleBasicBlock ) )+
              int cnt48=0;
              loop48:
              do {
                  int alt48=2;
                  int LA48_0 = input.LA(1);
  
                  if ( (LA48_0==EOF||LA48_0==RULE_LOCAL_ID||LA48_0==RULE_BASIC_BLOCK_ID||LA48_0==42||(LA48_0>=44 && LA48_0<=55)||(LA48_0>=58 && LA48_0<=61)||(LA48_0>=63 && LA48_0<=72)||LA48_0==122||LA48_0==124||(LA48_0>=126 && LA48_0<=128)||(LA48_0>=133 && LA48_0<=134)||(LA48_0>=140 && LA48_0<=141)||(LA48_0>=147 && LA48_0<=150)||(LA48_0>=157 && LA48_0<=169)||(LA48_0>=190 && LA48_0<=192)||(LA48_0>=195 && LA48_0<=196)||LA48_0==215) ) {
                      alt48=1;
                  }
  
  
                  switch (alt48) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3954:1: (lv_basicBlocks_3_0= ruleBasicBlock )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3954:1: (lv_basicBlocks_3_0= ruleBasicBlock )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3955:3: lv_basicBlocks_3_0= ruleBasicBlock
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getFunctionDefAccess().getBasicBlocksBasicBlockParserRuleCall_3_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleBasicBlock_in_ruleFunctionDef8905);
              	    lv_basicBlocks_3_0=ruleBasicBlock();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getFunctionDefRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"basicBlocks",
              	              		lv_basicBlocks_3_0, 
              	              		"BasicBlock");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    if ( cnt48 >= 1 ) break loop48;
              	    if (state.backtracking>0) {state.failed=true; return current;}
                          EarlyExitException eee =
                              new EarlyExitException(48, input);
                          throw eee;
                  }
                  cnt48++;
              } while (true);
  
              otherlv_4=(Token)match(input,27,FollowSets000.FOLLOW_27_in_ruleFunctionDef8918); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getFunctionDefAccess().getRightCurlyBracketKeyword_4());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleFunctionDef"
  
  
      // $ANTLR start "entryRuleFunctionDecl"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3983:1: entryRuleFunctionDecl returns [EObject current=null] : iv_ruleFunctionDecl= ruleFunctionDecl EOF ;
      public final EObject entryRuleFunctionDecl() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleFunctionDecl = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3984:2: (iv_ruleFunctionDecl= ruleFunctionDecl EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3985:2: iv_ruleFunctionDecl= ruleFunctionDecl EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getFunctionDeclRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleFunctionDecl_in_entryRuleFunctionDecl8954);
              iv_ruleFunctionDecl=ruleFunctionDecl();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleFunctionDecl; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFunctionDecl8964); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleFunctionDecl"
  
  
      // $ANTLR start "ruleFunctionDecl"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3992:1: ruleFunctionDecl returns [EObject current=null] : (otherlv_0= 'declare' ( (lv_header_1_0= ruleFunctionHeader ) ) ) ;
      public final EObject ruleFunctionDecl() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          EObject lv_header_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3995:28: ( (otherlv_0= 'declare' ( (lv_header_1_0= ruleFunctionHeader ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3996:1: (otherlv_0= 'declare' ( (lv_header_1_0= ruleFunctionHeader ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3996:1: (otherlv_0= 'declare' ( (lv_header_1_0= ruleFunctionHeader ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:3996:3: otherlv_0= 'declare' ( (lv_header_1_0= ruleFunctionHeader ) )
              {
              otherlv_0=(Token)match(input,90,FollowSets000.FOLLOW_90_in_ruleFunctionDecl9001); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getFunctionDeclAccess().getDeclareKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4000:1: ( (lv_header_1_0= ruleFunctionHeader ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4001:1: (lv_header_1_0= ruleFunctionHeader )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4001:1: (lv_header_1_0= ruleFunctionHeader )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4002:3: lv_header_1_0= ruleFunctionHeader
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getFunctionDeclAccess().getHeaderFunctionHeaderParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleFunctionHeader_in_ruleFunctionDecl9022);
              lv_header_1_0=ruleFunctionHeader();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getFunctionDeclRule());
                	        }
                       		set(
                       			current, 
                       			"header",
                        		lv_header_1_0, 
                        		"FunctionHeader");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleFunctionDecl"
  
  
      // $ANTLR start "entryRuleFunctionHeader"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4026:1: entryRuleFunctionHeader returns [EObject current=null] : iv_ruleFunctionHeader= ruleFunctionHeader EOF ;
      public final EObject entryRuleFunctionHeader() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleFunctionHeader = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4027:2: (iv_ruleFunctionHeader= ruleFunctionHeader EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4028:2: iv_ruleFunctionHeader= ruleFunctionHeader EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getFunctionHeaderRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleFunctionHeader_in_entryRuleFunctionHeader9058);
              iv_ruleFunctionHeader=ruleFunctionHeader();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleFunctionHeader; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFunctionHeader9068); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleFunctionHeader"
  
  
      // $ANTLR start "ruleFunctionHeader"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4035:1: ruleFunctionHeader returns [EObject current=null] : ( ( (lv_linkage_0_0= ruleLinkage ) )? ( (lv_visibility_1_0= ruleVisibility ) )? ( (lv_cconv_2_0= ruleCConv ) )? (otherlv_3= 'unnamed_addr' )? ( (lv_rettypeAttrs_4_0= ruleParameterAttributes ) )? ( (lv_rettype_5_0= ruleType ) ) ( (lv_name_6_0= RULE_GLOBAL_ID ) ) otherlv_7= '(' ( (lv_parameters_8_0= ruleParameters ) ) otherlv_9= ')' ( (lv_attrs_10_0= ruleFunctionAttributes ) )? ( (lv_section_11_0= ruleSection ) )? ( (lv_align_12_0= ruleAlign ) )? ( (lv_gc_13_0= ruleGc ) )? ( (lv_functionPrefix_14_0= ruleFunctionPrefix ) )? ) ;
      public final EObject ruleFunctionHeader() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_3=null;
          Token lv_name_6_0=null;
          Token otherlv_7=null;
          Token otherlv_9=null;
          AntlrDatatypeRuleToken lv_linkage_0_0 = null;
  
          AntlrDatatypeRuleToken lv_visibility_1_0 = null;
  
          EObject lv_cconv_2_0 = null;
  
          EObject lv_rettypeAttrs_4_0 = null;
  
          EObject lv_rettype_5_0 = null;
  
          EObject lv_parameters_8_0 = null;
  
          EObject lv_attrs_10_0 = null;
  
          AntlrDatatypeRuleToken lv_section_11_0 = null;
  
          AntlrDatatypeRuleToken lv_align_12_0 = null;
  
          AntlrDatatypeRuleToken lv_gc_13_0 = null;
  
          EObject lv_functionPrefix_14_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4038:28: ( ( ( (lv_linkage_0_0= ruleLinkage ) )? ( (lv_visibility_1_0= ruleVisibility ) )? ( (lv_cconv_2_0= ruleCConv ) )? (otherlv_3= 'unnamed_addr' )? ( (lv_rettypeAttrs_4_0= ruleParameterAttributes ) )? ( (lv_rettype_5_0= ruleType ) ) ( (lv_name_6_0= RULE_GLOBAL_ID ) ) otherlv_7= '(' ( (lv_parameters_8_0= ruleParameters ) ) otherlv_9= ')' ( (lv_attrs_10_0= ruleFunctionAttributes ) )? ( (lv_section_11_0= ruleSection ) )? ( (lv_align_12_0= ruleAlign ) )? ( (lv_gc_13_0= ruleGc ) )? ( (lv_functionPrefix_14_0= ruleFunctionPrefix ) )? ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4039:1: ( ( (lv_linkage_0_0= ruleLinkage ) )? ( (lv_visibility_1_0= ruleVisibility ) )? ( (lv_cconv_2_0= ruleCConv ) )? (otherlv_3= 'unnamed_addr' )? ( (lv_rettypeAttrs_4_0= ruleParameterAttributes ) )? ( (lv_rettype_5_0= ruleType ) ) ( (lv_name_6_0= RULE_GLOBAL_ID ) ) otherlv_7= '(' ( (lv_parameters_8_0= ruleParameters ) ) otherlv_9= ')' ( (lv_attrs_10_0= ruleFunctionAttributes ) )? ( (lv_section_11_0= ruleSection ) )? ( (lv_align_12_0= ruleAlign ) )? ( (lv_gc_13_0= ruleGc ) )? ( (lv_functionPrefix_14_0= ruleFunctionPrefix ) )? )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4039:1: ( ( (lv_linkage_0_0= ruleLinkage ) )? ( (lv_visibility_1_0= ruleVisibility ) )? ( (lv_cconv_2_0= ruleCConv ) )? (otherlv_3= 'unnamed_addr' )? ( (lv_rettypeAttrs_4_0= ruleParameterAttributes ) )? ( (lv_rettype_5_0= ruleType ) ) ( (lv_name_6_0= RULE_GLOBAL_ID ) ) otherlv_7= '(' ( (lv_parameters_8_0= ruleParameters ) ) otherlv_9= ')' ( (lv_attrs_10_0= ruleFunctionAttributes ) )? ( (lv_section_11_0= ruleSection ) )? ( (lv_align_12_0= ruleAlign ) )? ( (lv_gc_13_0= ruleGc ) )? ( (lv_functionPrefix_14_0= ruleFunctionPrefix ) )? )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4039:2: ( (lv_linkage_0_0= ruleLinkage ) )? ( (lv_visibility_1_0= ruleVisibility ) )? ( (lv_cconv_2_0= ruleCConv ) )? (otherlv_3= 'unnamed_addr' )? ( (lv_rettypeAttrs_4_0= ruleParameterAttributes ) )? ( (lv_rettype_5_0= ruleType ) ) ( (lv_name_6_0= RULE_GLOBAL_ID ) ) otherlv_7= '(' ( (lv_parameters_8_0= ruleParameters ) ) otherlv_9= ')' ( (lv_attrs_10_0= ruleFunctionAttributes ) )? ( (lv_section_11_0= ruleSection ) )? ( (lv_align_12_0= ruleAlign ) )? ( (lv_gc_13_0= ruleGc ) )? ( (lv_functionPrefix_14_0= ruleFunctionPrefix ) )?
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4039:2: ( (lv_linkage_0_0= ruleLinkage ) )?
              int alt49=2;
              int LA49_0 = input.LA(1);
  
              if ( ((LA49_0>=225 && LA49_0<=240)) ) {
                  alt49=1;
              }
              switch (alt49) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4040:1: (lv_linkage_0_0= ruleLinkage )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4040:1: (lv_linkage_0_0= ruleLinkage )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4041:3: lv_linkage_0_0= ruleLinkage
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getLinkageLinkageParserRuleCall_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleLinkage_in_ruleFunctionHeader9114);
                      lv_linkage_0_0=ruleLinkage();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                        	        }
                               		set(
                               			current, 
                               			"linkage",
                                		lv_linkage_0_0, 
                                		"Linkage");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4057:3: ( (lv_visibility_1_0= ruleVisibility ) )?
              int alt50=2;
              int LA50_0 = input.LA(1);
  
              if ( ((LA50_0>=263 && LA50_0<=265)) ) {
                  alt50=1;
              }
              switch (alt50) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4058:1: (lv_visibility_1_0= ruleVisibility )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4058:1: (lv_visibility_1_0= ruleVisibility )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4059:3: lv_visibility_1_0= ruleVisibility
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getVisibilityVisibilityParserRuleCall_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleVisibility_in_ruleFunctionHeader9136);
                      lv_visibility_1_0=ruleVisibility();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                        	        }
                               		set(
                               			current, 
                               			"visibility",
                                		lv_visibility_1_0, 
                                		"Visibility");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4075:3: ( (lv_cconv_2_0= ruleCConv ) )?
              int alt51=2;
              int LA51_0 = input.LA(1);
  
              if ( ((LA51_0>=241 && LA51_0<=262)) ) {
                  alt51=1;
              }
              switch (alt51) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4076:1: (lv_cconv_2_0= ruleCConv )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4076:1: (lv_cconv_2_0= ruleCConv )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4077:3: lv_cconv_2_0= ruleCConv
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getCconvCConvParserRuleCall_2_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleCConv_in_ruleFunctionHeader9158);
                      lv_cconv_2_0=ruleCConv();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                        	        }
                               		set(
                               			current, 
                               			"cconv",
                                		lv_cconv_2_0, 
                                		"CConv");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4093:3: (otherlv_3= 'unnamed_addr' )?
              int alt52=2;
              int LA52_0 = input.LA(1);
  
              if ( (LA52_0==35) ) {
                  alt52=1;
              }
              switch (alt52) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4093:5: otherlv_3= 'unnamed_addr'
                      {
                      otherlv_3=(Token)match(input,35,FollowSets000.FOLLOW_35_in_ruleFunctionHeader9172); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_3, grammarAccess.getFunctionHeaderAccess().getUnnamed_addrKeyword_3());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4097:3: ( (lv_rettypeAttrs_4_0= ruleParameterAttributes ) )?
              int alt53=2;
              int LA53_0 = input.LA(1);
  
              if ( ((LA53_0>=129 && LA53_0<=131)||(LA53_0>=207 && LA53_0<=213)) ) {
                  alt53=1;
              }
              switch (alt53) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4098:1: (lv_rettypeAttrs_4_0= ruleParameterAttributes )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4098:1: (lv_rettypeAttrs_4_0= ruleParameterAttributes )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4099:3: lv_rettypeAttrs_4_0= ruleParameterAttributes
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getRettypeAttrsParameterAttributesParserRuleCall_4_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleParameterAttributes_in_ruleFunctionHeader9195);
                      lv_rettypeAttrs_4_0=ruleParameterAttributes();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                        	        }
                               		set(
                               			current, 
                               			"rettypeAttrs",
                                		lv_rettypeAttrs_4_0, 
                                		"ParameterAttributes");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4115:3: ( (lv_rettype_5_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4116:1: (lv_rettype_5_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4116:1: (lv_rettype_5_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4117:3: lv_rettype_5_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getRettypeTypeParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleType_in_ruleFunctionHeader9217);
              lv_rettype_5_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                	        }
                       		set(
                       			current, 
                       			"rettype",
                        		lv_rettype_5_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4133:2: ( (lv_name_6_0= RULE_GLOBAL_ID ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4134:1: (lv_name_6_0= RULE_GLOBAL_ID )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4134:1: (lv_name_6_0= RULE_GLOBAL_ID )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4135:3: lv_name_6_0= RULE_GLOBAL_ID
              {
              lv_name_6_0=(Token)match(input,RULE_GLOBAL_ID,FollowSets000.FOLLOW_RULE_GLOBAL_ID_in_ruleFunctionHeader9234); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_name_6_0, grammarAccess.getFunctionHeaderAccess().getNameGLOBAL_IDTerminalRuleCall_6_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getFunctionHeaderRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"name",
                        		lv_name_6_0, 
                        		"GLOBAL_ID");
                	    
              }
  
              }
  
  
              }
  
              otherlv_7=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleFunctionHeader9251); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_7, grammarAccess.getFunctionHeaderAccess().getLeftParenthesisKeyword_7());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4155:1: ( (lv_parameters_8_0= ruleParameters ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4156:1: (lv_parameters_8_0= ruleParameters )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4156:1: (lv_parameters_8_0= ruleParameters )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4157:3: lv_parameters_8_0= ruleParameters
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getParametersParametersParserRuleCall_8_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleParameters_in_ruleFunctionHeader9272);
              lv_parameters_8_0=ruleParameters();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                	        }
                       		set(
                       			current, 
                       			"parameters",
                        		lv_parameters_8_0, 
                        		"Parameters");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_9=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleFunctionHeader9284); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_9, grammarAccess.getFunctionHeaderAccess().getRightParenthesisKeyword_9());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4177:1: ( (lv_attrs_10_0= ruleFunctionAttributes ) )?
              int alt54=2;
              int LA54_0 = input.LA(1);
  
              if ( (LA54_0==RULE_ATTRIBUTE_ID||(LA54_0>=93 && LA54_0<=121)) ) {
                  alt54=1;
              }
              switch (alt54) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4178:1: (lv_attrs_10_0= ruleFunctionAttributes )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4178:1: (lv_attrs_10_0= ruleFunctionAttributes )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4179:3: lv_attrs_10_0= ruleFunctionAttributes
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getAttrsFunctionAttributesParserRuleCall_10_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleFunctionAttributes_in_ruleFunctionHeader9305);
                      lv_attrs_10_0=ruleFunctionAttributes();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                        	        }
                               		set(
                               			current, 
                               			"attrs",
                                		lv_attrs_10_0, 
                                		"FunctionAttributes");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4195:3: ( (lv_section_11_0= ruleSection ) )?
              int alt55=2;
              int LA55_0 = input.LA(1);
  
              if ( (LA55_0==86) ) {
                  alt55=1;
              }
              switch (alt55) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4196:1: (lv_section_11_0= ruleSection )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4196:1: (lv_section_11_0= ruleSection )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4197:3: lv_section_11_0= ruleSection
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getSectionSectionParserRuleCall_11_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleSection_in_ruleFunctionHeader9327);
                      lv_section_11_0=ruleSection();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                        	        }
                               		set(
                               			current, 
                               			"section",
                                		lv_section_11_0, 
                                		"Section");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4213:3: ( (lv_align_12_0= ruleAlign ) )?
              int alt56=2;
              int LA56_0 = input.LA(1);
  
              if ( (LA56_0==87) ) {
                  alt56=1;
              }
              switch (alt56) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4214:1: (lv_align_12_0= ruleAlign )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4214:1: (lv_align_12_0= ruleAlign )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4215:3: lv_align_12_0= ruleAlign
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getAlignAlignParserRuleCall_12_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleAlign_in_ruleFunctionHeader9349);
                      lv_align_12_0=ruleAlign();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                        	        }
                               		set(
                               			current, 
                               			"align",
                                		lv_align_12_0, 
                                		"Align");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4231:3: ( (lv_gc_13_0= ruleGc ) )?
              int alt57=2;
              int LA57_0 = input.LA(1);
  
              if ( (LA57_0==88) ) {
                  alt57=1;
              }
              switch (alt57) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4232:1: (lv_gc_13_0= ruleGc )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4232:1: (lv_gc_13_0= ruleGc )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4233:3: lv_gc_13_0= ruleGc
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getGcGcParserRuleCall_13_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleGc_in_ruleFunctionHeader9371);
                      lv_gc_13_0=ruleGc();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                        	        }
                               		set(
                               			current, 
                               			"gc",
                                		lv_gc_13_0, 
                                		"Gc");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4249:3: ( (lv_functionPrefix_14_0= ruleFunctionPrefix ) )?
              int alt58=2;
              int LA58_0 = input.LA(1);
  
              if ( (LA58_0==91) ) {
                  alt58=1;
              }
              switch (alt58) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4250:1: (lv_functionPrefix_14_0= ruleFunctionPrefix )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4250:1: (lv_functionPrefix_14_0= ruleFunctionPrefix )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4251:3: lv_functionPrefix_14_0= ruleFunctionPrefix
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getFunctionPrefixFunctionPrefixParserRuleCall_14_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleFunctionPrefix_in_ruleFunctionHeader9393);
                      lv_functionPrefix_14_0=ruleFunctionPrefix();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                        	        }
                               		set(
                               			current, 
                               			"functionPrefix",
                                		lv_functionPrefix_14_0, 
                                		"FunctionPrefix");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleFunctionHeader"
  
  
      // $ANTLR start "entryRuleFunctionPrefix"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4275:1: entryRuleFunctionPrefix returns [EObject current=null] : iv_ruleFunctionPrefix= ruleFunctionPrefix EOF ;
      public final EObject entryRuleFunctionPrefix() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleFunctionPrefix = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4276:2: (iv_ruleFunctionPrefix= ruleFunctionPrefix EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4277:2: iv_ruleFunctionPrefix= ruleFunctionPrefix EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getFunctionPrefixRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleFunctionPrefix_in_entryRuleFunctionPrefix9430);
              iv_ruleFunctionPrefix=ruleFunctionPrefix();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleFunctionPrefix; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFunctionPrefix9440); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleFunctionPrefix"
  
  
      // $ANTLR start "ruleFunctionPrefix"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4284:1: ruleFunctionPrefix returns [EObject current=null] : (otherlv_0= 'prefix' ( (lv_value_1_0= ruleTypedConstant ) ) ) ;
      public final EObject ruleFunctionPrefix() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          EObject lv_value_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4287:28: ( (otherlv_0= 'prefix' ( (lv_value_1_0= ruleTypedConstant ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4288:1: (otherlv_0= 'prefix' ( (lv_value_1_0= ruleTypedConstant ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4288:1: (otherlv_0= 'prefix' ( (lv_value_1_0= ruleTypedConstant ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4288:3: otherlv_0= 'prefix' ( (lv_value_1_0= ruleTypedConstant ) )
              {
              otherlv_0=(Token)match(input,91,FollowSets000.FOLLOW_91_in_ruleFunctionPrefix9477); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getFunctionPrefixAccess().getPrefixKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4292:1: ( (lv_value_1_0= ruleTypedConstant ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4293:1: (lv_value_1_0= ruleTypedConstant )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4293:1: (lv_value_1_0= ruleTypedConstant )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4294:3: lv_value_1_0= ruleTypedConstant
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getFunctionPrefixAccess().getValueTypedConstantParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTypedConstant_in_ruleFunctionPrefix9498);
              lv_value_1_0=ruleTypedConstant();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getFunctionPrefixRule());
                	        }
                       		set(
                       			current, 
                       			"value",
                        		lv_value_1_0, 
                        		"TypedConstant");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleFunctionPrefix"
  
  
      // $ANTLR start "entryRuleParameters"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4318:1: entryRuleParameters returns [EObject current=null] : iv_ruleParameters= ruleParameters EOF ;
      public final EObject entryRuleParameters() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleParameters = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4319:2: (iv_ruleParameters= ruleParameters EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4320:2: iv_ruleParameters= ruleParameters EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getParametersRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleParameters_in_entryRuleParameters9534);
              iv_ruleParameters=ruleParameters();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleParameters; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleParameters9544); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleParameters"
  
  
      // $ANTLR start "ruleParameters"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4327:1: ruleParameters returns [EObject current=null] : ( () ( ( ( (lv_parameters_1_0= ruleParameter ) ) (otherlv_2= ',' ( (lv_parameters_3_0= ruleParameter ) ) )* (otherlv_4= ',' ( (lv_vararg_5_0= '...' ) ) )? )? | ( (lv_vararg_6_0= '...' ) ) ) ) ;
      public final EObject ruleParameters() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_2=null;
          Token otherlv_4=null;
          Token lv_vararg_5_0=null;
          Token lv_vararg_6_0=null;
          EObject lv_parameters_1_0 = null;
  
          EObject lv_parameters_3_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4330:28: ( ( () ( ( ( (lv_parameters_1_0= ruleParameter ) ) (otherlv_2= ',' ( (lv_parameters_3_0= ruleParameter ) ) )* (otherlv_4= ',' ( (lv_vararg_5_0= '...' ) ) )? )? | ( (lv_vararg_6_0= '...' ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4331:1: ( () ( ( ( (lv_parameters_1_0= ruleParameter ) ) (otherlv_2= ',' ( (lv_parameters_3_0= ruleParameter ) ) )* (otherlv_4= ',' ( (lv_vararg_5_0= '...' ) ) )? )? | ( (lv_vararg_6_0= '...' ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4331:1: ( () ( ( ( (lv_parameters_1_0= ruleParameter ) ) (otherlv_2= ',' ( (lv_parameters_3_0= ruleParameter ) ) )* (otherlv_4= ',' ( (lv_vararg_5_0= '...' ) ) )? )? | ( (lv_vararg_6_0= '...' ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4331:2: () ( ( ( (lv_parameters_1_0= ruleParameter ) ) (otherlv_2= ',' ( (lv_parameters_3_0= ruleParameter ) ) )* (otherlv_4= ',' ( (lv_vararg_5_0= '...' ) ) )? )? | ( (lv_vararg_6_0= '...' ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4331:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4332:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getParametersAccess().getParametersAction_0(),
                            current);
                    
              }
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4337:2: ( ( ( (lv_parameters_1_0= ruleParameter ) ) (otherlv_2= ',' ( (lv_parameters_3_0= ruleParameter ) ) )* (otherlv_4= ',' ( (lv_vararg_5_0= '...' ) ) )? )? | ( (lv_vararg_6_0= '...' ) ) )
              int alt62=2;
              int LA62_0 = input.LA(1);
  
              if ( (LA62_0==EOF||LA62_0==RULE_LOCAL_ID||LA62_0==RULE_INT_TYPE||LA62_0==26||LA62_0==28||LA62_0==41||LA62_0==76||LA62_0==78||LA62_0==123||LA62_0==216||(LA62_0>=218 && LA62_0<=224)) ) {
                  alt62=1;
              }
              else if ( (LA62_0==92) ) {
                  alt62=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 62, 0, input);
  
                  throw nvae;
              }
              switch (alt62) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4337:3: ( ( (lv_parameters_1_0= ruleParameter ) ) (otherlv_2= ',' ( (lv_parameters_3_0= ruleParameter ) ) )* (otherlv_4= ',' ( (lv_vararg_5_0= '...' ) ) )? )?
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4337:3: ( ( (lv_parameters_1_0= ruleParameter ) ) (otherlv_2= ',' ( (lv_parameters_3_0= ruleParameter ) ) )* (otherlv_4= ',' ( (lv_vararg_5_0= '...' ) ) )? )?
                      int alt61=2;
                      int LA61_0 = input.LA(1);
  
                      if ( (LA61_0==RULE_LOCAL_ID||LA61_0==RULE_INT_TYPE||LA61_0==26||LA61_0==28||LA61_0==76||LA61_0==78||LA61_0==123||LA61_0==216||(LA61_0>=218 && LA61_0<=224)) ) {
                          alt61=1;
                      }
                      switch (alt61) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4337:4: ( (lv_parameters_1_0= ruleParameter ) ) (otherlv_2= ',' ( (lv_parameters_3_0= ruleParameter ) ) )* (otherlv_4= ',' ( (lv_vararg_5_0= '...' ) ) )?
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4337:4: ( (lv_parameters_1_0= ruleParameter ) )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4338:1: (lv_parameters_1_0= ruleParameter )
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4338:1: (lv_parameters_1_0= ruleParameter )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4339:3: lv_parameters_1_0= ruleParameter
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getParametersAccess().getParametersParameterParserRuleCall_1_0_0_0()); 
                                	    
                              }
                              pushFollow(FollowSets000.FOLLOW_ruleParameter_in_ruleParameters9601);
                              lv_parameters_1_0=ruleParameter();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getParametersRule());
                                	        }
                                       		add(
                                       			current, 
                                       			"parameters",
                                        		lv_parameters_1_0, 
                                        		"Parameter");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
  
  
                              }
  
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4355:2: (otherlv_2= ',' ( (lv_parameters_3_0= ruleParameter ) ) )*
                              loop59:
                              do {
                                  int alt59=2;
                                  int LA59_0 = input.LA(1);
  
                                  if ( (LA59_0==38) ) {
                                      int LA59_1 = input.LA(2);
  
                                      if ( (LA59_1==RULE_LOCAL_ID||LA59_1==RULE_INT_TYPE||LA59_1==26||LA59_1==28||LA59_1==76||LA59_1==78||LA59_1==123||LA59_1==216||(LA59_1>=218 && LA59_1<=224)) ) {
                                          alt59=1;
                                      }
  
  
                                  }
  
  
                                  switch (alt59) {
                              	case 1 :
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4355:4: otherlv_2= ',' ( (lv_parameters_3_0= ruleParameter ) )
                              	    {
                              	    otherlv_2=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleParameters9614); if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	          	newLeafNode(otherlv_2, grammarAccess.getParametersAccess().getCommaKeyword_1_0_1_0());
                              	          
                              	    }
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4359:1: ( (lv_parameters_3_0= ruleParameter ) )
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4360:1: (lv_parameters_3_0= ruleParameter )
                              	    {
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4360:1: (lv_parameters_3_0= ruleParameter )
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4361:3: lv_parameters_3_0= ruleParameter
                              	    {
                              	    if ( state.backtracking==0 ) {
                              	       
                              	      	        newCompositeNode(grammarAccess.getParametersAccess().getParametersParameterParserRuleCall_1_0_1_1_0()); 
                              	      	    
                              	    }
                              	    pushFollow(FollowSets000.FOLLOW_ruleParameter_in_ruleParameters9635);
                              	    lv_parameters_3_0=ruleParameter();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      	        if (current==null) {
                              	      	            current = createModelElementForParent(grammarAccess.getParametersRule());
                              	      	        }
                              	             		add(
                              	             			current, 
                              	             			"parameters",
                              	              		lv_parameters_3_0, 
                              	              		"Parameter");
                              	      	        afterParserOrEnumRuleCall();
                              	      	    
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop59;
                                  }
                              } while (true);
  
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4377:4: (otherlv_4= ',' ( (lv_vararg_5_0= '...' ) ) )?
                              int alt60=2;
                              int LA60_0 = input.LA(1);
  
                              if ( (LA60_0==38) ) {
                                  alt60=1;
                              }
                              switch (alt60) {
                                  case 1 :
                                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4377:6: otherlv_4= ',' ( (lv_vararg_5_0= '...' ) )
                                      {
                                      otherlv_4=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleParameters9650); if (state.failed) return current;
                                      if ( state.backtracking==0 ) {
  
                                            	newLeafNode(otherlv_4, grammarAccess.getParametersAccess().getCommaKeyword_1_0_2_0());
                                            
                                      }
                                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4381:1: ( (lv_vararg_5_0= '...' ) )
                                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4382:1: (lv_vararg_5_0= '...' )
                                      {
                                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4382:1: (lv_vararg_5_0= '...' )
                                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4383:3: lv_vararg_5_0= '...'
                                      {
                                      lv_vararg_5_0=(Token)match(input,92,FollowSets000.FOLLOW_92_in_ruleParameters9668); if (state.failed) return current;
                                      if ( state.backtracking==0 ) {
  
                                                newLeafNode(lv_vararg_5_0, grammarAccess.getParametersAccess().getVarargFullStopFullStopFullStopKeyword_1_0_2_1_0());
                                            
                                      }
                                      if ( state.backtracking==0 ) {
  
                                        	        if (current==null) {
                                        	            current = createModelElement(grammarAccess.getParametersRule());
                                        	        }
                                               		setWithLastConsumed(current, "vararg", lv_vararg_5_0, "...");
                                        	    
                                      }
  
                                      }
  
  
                                      }
  
  
                                      }
                                      break;
  
                              }
  
  
                              }
                              break;
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4397:6: ( (lv_vararg_6_0= '...' ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4397:6: ( (lv_vararg_6_0= '...' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4398:1: (lv_vararg_6_0= '...' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4398:1: (lv_vararg_6_0= '...' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4399:3: lv_vararg_6_0= '...'
                      {
                      lv_vararg_6_0=(Token)match(input,92,FollowSets000.FOLLOW_92_in_ruleParameters9709); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_vararg_6_0, grammarAccess.getParametersAccess().getVarargFullStopFullStopFullStopKeyword_1_1_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getParametersRule());
                        	        }
                               		setWithLastConsumed(current, "vararg", lv_vararg_6_0, "...");
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleParameters"
  
  
      // $ANTLR start "entryRuleFunctionAttributes"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4420:1: entryRuleFunctionAttributes returns [EObject current=null] : iv_ruleFunctionAttributes= ruleFunctionAttributes EOF ;
      public final EObject entryRuleFunctionAttributes() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleFunctionAttributes = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4421:2: (iv_ruleFunctionAttributes= ruleFunctionAttributes EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4422:2: iv_ruleFunctionAttributes= ruleFunctionAttributes EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getFunctionAttributesRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleFunctionAttributes_in_entryRuleFunctionAttributes9759);
              iv_ruleFunctionAttributes=ruleFunctionAttributes();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleFunctionAttributes; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFunctionAttributes9769); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleFunctionAttributes"
  
  
      // $ANTLR start "ruleFunctionAttributes"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4429:1: ruleFunctionAttributes returns [EObject current=null] : ( ( (lv_functionAttributes_0_0= ruleFunctionAttribute ) ) | ( ( (lv_alignstack_1_0= ruleAlignStack ) ) otherlv_2= '(' ( (lv_alignstackValue_3_0= RULE_INTEGER ) ) otherlv_4= ')' ) | ( (otherlv_5= RULE_ATTRIBUTE_ID ) ) )+ ;
      public final EObject ruleFunctionAttributes() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_2=null;
          Token lv_alignstackValue_3_0=null;
          Token otherlv_4=null;
          Token otherlv_5=null;
          EObject lv_functionAttributes_0_0 = null;
  
          EObject lv_alignstack_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4432:28: ( ( ( (lv_functionAttributes_0_0= ruleFunctionAttribute ) ) | ( ( (lv_alignstack_1_0= ruleAlignStack ) ) otherlv_2= '(' ( (lv_alignstackValue_3_0= RULE_INTEGER ) ) otherlv_4= ')' ) | ( (otherlv_5= RULE_ATTRIBUTE_ID ) ) )+ )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4433:1: ( ( (lv_functionAttributes_0_0= ruleFunctionAttribute ) ) | ( ( (lv_alignstack_1_0= ruleAlignStack ) ) otherlv_2= '(' ( (lv_alignstackValue_3_0= RULE_INTEGER ) ) otherlv_4= ')' ) | ( (otherlv_5= RULE_ATTRIBUTE_ID ) ) )+
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4433:1: ( ( (lv_functionAttributes_0_0= ruleFunctionAttribute ) ) | ( ( (lv_alignstack_1_0= ruleAlignStack ) ) otherlv_2= '(' ( (lv_alignstackValue_3_0= RULE_INTEGER ) ) otherlv_4= ')' ) | ( (otherlv_5= RULE_ATTRIBUTE_ID ) ) )+
              int cnt63=0;
              loop63:
              do {
                  int alt63=4;
                  switch ( input.LA(1) ) {
                  case 94:
                  case 95:
                  case 96:
                  case 97:
                  case 98:
                  case 99:
                  case 100:
                  case 101:
                  case 102:
                  case 103:
                  case 104:
                  case 105:
                  case 106:
                  case 107:
                  case 108:
                  case 109:
                  case 110:
                  case 111:
                  case 112:
                  case 113:
                  case 114:
                  case 115:
                  case 116:
                  case 117:
                  case 118:
                  case 119:
                  case 120:
                  case 121:
                      {
                      alt63=1;
                      }
                      break;
                  case 93:
                      {
                      alt63=2;
                      }
                      break;
                  case RULE_ATTRIBUTE_ID:
                      {
                      alt63=3;
                      }
                      break;
  
                  }
  
                  switch (alt63) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4433:2: ( (lv_functionAttributes_0_0= ruleFunctionAttribute ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4433:2: ( (lv_functionAttributes_0_0= ruleFunctionAttribute ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4434:1: (lv_functionAttributes_0_0= ruleFunctionAttribute )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4434:1: (lv_functionAttributes_0_0= ruleFunctionAttribute )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4435:3: lv_functionAttributes_0_0= ruleFunctionAttribute
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getFunctionAttributesAccess().getFunctionAttributesFunctionAttributeParserRuleCall_0_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleFunctionAttribute_in_ruleFunctionAttributes9815);
              	    lv_functionAttributes_0_0=ruleFunctionAttribute();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getFunctionAttributesRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"functionAttributes",
              	              		lv_functionAttributes_0_0, 
              	              		"FunctionAttribute");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 2 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4452:6: ( ( (lv_alignstack_1_0= ruleAlignStack ) ) otherlv_2= '(' ( (lv_alignstackValue_3_0= RULE_INTEGER ) ) otherlv_4= ')' )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4452:6: ( ( (lv_alignstack_1_0= ruleAlignStack ) ) otherlv_2= '(' ( (lv_alignstackValue_3_0= RULE_INTEGER ) ) otherlv_4= ')' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4452:7: ( (lv_alignstack_1_0= ruleAlignStack ) ) otherlv_2= '(' ( (lv_alignstackValue_3_0= RULE_INTEGER ) ) otherlv_4= ')'
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4452:7: ( (lv_alignstack_1_0= ruleAlignStack ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4453:1: (lv_alignstack_1_0= ruleAlignStack )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4453:1: (lv_alignstack_1_0= ruleAlignStack )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4454:3: lv_alignstack_1_0= ruleAlignStack
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getFunctionAttributesAccess().getAlignstackAlignStackParserRuleCall_1_0_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleAlignStack_in_ruleFunctionAttributes9843);
              	    lv_alignstack_1_0=ruleAlignStack();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getFunctionAttributesRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"alignstack",
              	              		lv_alignstack_1_0, 
              	              		"AlignStack");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
              	    otherlv_2=(Token)match(input,39,FollowSets000.FOLLOW_39_in_ruleFunctionAttributes9855); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_2, grammarAccess.getFunctionAttributesAccess().getLeftParenthesisKeyword_1_1());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4474:1: ( (lv_alignstackValue_3_0= RULE_INTEGER ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4475:1: (lv_alignstackValue_3_0= RULE_INTEGER )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4475:1: (lv_alignstackValue_3_0= RULE_INTEGER )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4476:3: lv_alignstackValue_3_0= RULE_INTEGER
              	    {
              	    lv_alignstackValue_3_0=(Token)match(input,RULE_INTEGER,FollowSets000.FOLLOW_RULE_INTEGER_in_ruleFunctionAttributes9872); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      			newLeafNode(lv_alignstackValue_3_0, grammarAccess.getFunctionAttributesAccess().getAlignstackValueINTEGERTerminalRuleCall_1_2_0()); 
              	      		
              	    }
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElement(grammarAccess.getFunctionAttributesRule());
              	      	        }
              	             		addWithLastConsumed(
              	             			current, 
              	             			"alignstackValue",
              	              		lv_alignstackValue_3_0, 
              	              		"INTEGER");
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
              	    otherlv_4=(Token)match(input,41,FollowSets000.FOLLOW_41_in_ruleFunctionAttributes9889); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_4, grammarAccess.getFunctionAttributesAccess().getRightParenthesisKeyword_1_3());
              	          
              	    }
  
              	    }
  
  
              	    }
              	    break;
              	case 3 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4497:6: ( (otherlv_5= RULE_ATTRIBUTE_ID ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4497:6: ( (otherlv_5= RULE_ATTRIBUTE_ID ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4498:1: (otherlv_5= RULE_ATTRIBUTE_ID )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4498:1: (otherlv_5= RULE_ATTRIBUTE_ID )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4499:3: otherlv_5= RULE_ATTRIBUTE_ID
              	    {
              	    if ( state.backtracking==0 ) {
  
              	      			if (current==null) {
              	      	            current = createModelElement(grammarAccess.getFunctionAttributesRule());
              	      	        }
              	              
              	    }
              	    otherlv_5=(Token)match(input,RULE_ATTRIBUTE_ID,FollowSets000.FOLLOW_RULE_ATTRIBUTE_ID_in_ruleFunctionAttributes9916); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      		newLeafNode(otherlv_5, grammarAccess.getFunctionAttributesAccess().getFunctionAttributeGroupRefsAttributeGroupCrossReference_2_0()); 
              	      	
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    if ( cnt63 >= 1 ) break loop63;
              	    if (state.backtracking>0) {state.failed=true; return current;}
                          EarlyExitException eee =
                              new EarlyExitException(63, input);
                          throw eee;
                  }
                  cnt63++;
              } while (true);
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleFunctionAttributes"
  
  
      // $ANTLR start "entryRuleAlignStack"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4518:1: entryRuleAlignStack returns [EObject current=null] : iv_ruleAlignStack= ruleAlignStack EOF ;
      public final EObject entryRuleAlignStack() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleAlignStack = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4519:2: (iv_ruleAlignStack= ruleAlignStack EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4520:2: iv_ruleAlignStack= ruleAlignStack EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getAlignStackRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleAlignStack_in_entryRuleAlignStack9953);
              iv_ruleAlignStack=ruleAlignStack();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleAlignStack; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleAlignStack9963); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleAlignStack"
  
  
      // $ANTLR start "ruleAlignStack"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4527:1: ruleAlignStack returns [EObject current=null] : ( () otherlv_1= 'alignstack' ) ;
      public final EObject ruleAlignStack() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4530:28: ( ( () otherlv_1= 'alignstack' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4531:1: ( () otherlv_1= 'alignstack' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4531:1: ( () otherlv_1= 'alignstack' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4531:2: () otherlv_1= 'alignstack'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4531:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4532:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getAlignStackAccess().getAlignStackAction_0(),
                            current);
                    
              }
  
              }
  
              otherlv_1=(Token)match(input,93,FollowSets000.FOLLOW_93_in_ruleAlignStack10009); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getAlignStackAccess().getAlignstackKeyword_1());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleAlignStack"
  
  
      // $ANTLR start "entryRuleFunctionAttribute"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4549:1: entryRuleFunctionAttribute returns [EObject current=null] : iv_ruleFunctionAttribute= ruleFunctionAttribute EOF ;
      public final EObject entryRuleFunctionAttribute() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleFunctionAttribute = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4550:2: (iv_ruleFunctionAttribute= ruleFunctionAttribute EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4551:2: iv_ruleFunctionAttribute= ruleFunctionAttribute EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getFunctionAttributeRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleFunctionAttribute_in_entryRuleFunctionAttribute10045);
              iv_ruleFunctionAttribute=ruleFunctionAttribute();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleFunctionAttribute; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleFunctionAttribute10055); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleFunctionAttribute"
  
  
      // $ANTLR start "ruleFunctionAttribute"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4558:1: ruleFunctionAttribute returns [EObject current=null] : ( ( (lv_attribute_0_1= 'alwaysinline' | lv_attribute_0_2= 'builtin' | lv_attribute_0_3= 'cold' | lv_attribute_0_4= 'inlinehint' | lv_attribute_0_5= 'naked' | lv_attribute_0_6= 'nobuiltin' | lv_attribute_0_7= 'noduplicate' | lv_attribute_0_8= 'noimplicitfloat' | lv_attribute_0_9= 'noinline' | lv_attribute_0_10= 'nonlazybind' | lv_attribute_0_11= 'noredzone' | lv_attribute_0_12= 'noreturn' | lv_attribute_0_13= 'nounwind' | lv_attribute_0_14= 'optnone' | lv_attribute_0_15= 'optsize' | lv_attribute_0_16= 'readnone' | lv_attribute_0_17= 'readonly' | lv_attribute_0_18= 'returns_twice' | lv_attribute_0_19= 'sanitize_address' | lv_attribute_0_20= 'sanitize_memory' | lv_attribute_0_21= 'sanitize_thread' | lv_attribute_0_22= 'ssp' | lv_attribute_0_23= 'sspreq' | lv_attribute_0_24= 'sspstrong' | lv_attribute_0_25= 'uwtable' | lv_attribute_0_26= 'address_safety' | lv_attribute_0_27= 'thread_safety' | lv_attribute_0_28= 'uninitialized_checks' ) ) ) ;
      public final EObject ruleFunctionAttribute() throws RecognitionException {
          EObject current = null;
  
          Token lv_attribute_0_1=null;
          Token lv_attribute_0_2=null;
          Token lv_attribute_0_3=null;
          Token lv_attribute_0_4=null;
          Token lv_attribute_0_5=null;
          Token lv_attribute_0_6=null;
          Token lv_attribute_0_7=null;
          Token lv_attribute_0_8=null;
          Token lv_attribute_0_9=null;
          Token lv_attribute_0_10=null;
          Token lv_attribute_0_11=null;
          Token lv_attribute_0_12=null;
          Token lv_attribute_0_13=null;
          Token lv_attribute_0_14=null;
          Token lv_attribute_0_15=null;
          Token lv_attribute_0_16=null;
          Token lv_attribute_0_17=null;
          Token lv_attribute_0_18=null;
          Token lv_attribute_0_19=null;
          Token lv_attribute_0_20=null;
          Token lv_attribute_0_21=null;
          Token lv_attribute_0_22=null;
          Token lv_attribute_0_23=null;
          Token lv_attribute_0_24=null;
          Token lv_attribute_0_25=null;
          Token lv_attribute_0_26=null;
          Token lv_attribute_0_27=null;
          Token lv_attribute_0_28=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4561:28: ( ( ( (lv_attribute_0_1= 'alwaysinline' | lv_attribute_0_2= 'builtin' | lv_attribute_0_3= 'cold' | lv_attribute_0_4= 'inlinehint' | lv_attribute_0_5= 'naked' | lv_attribute_0_6= 'nobuiltin' | lv_attribute_0_7= 'noduplicate' | lv_attribute_0_8= 'noimplicitfloat' | lv_attribute_0_9= 'noinline' | lv_attribute_0_10= 'nonlazybind' | lv_attribute_0_11= 'noredzone' | lv_attribute_0_12= 'noreturn' | lv_attribute_0_13= 'nounwind' | lv_attribute_0_14= 'optnone' | lv_attribute_0_15= 'optsize' | lv_attribute_0_16= 'readnone' | lv_attribute_0_17= 'readonly' | lv_attribute_0_18= 'returns_twice' | lv_attribute_0_19= 'sanitize_address' | lv_attribute_0_20= 'sanitize_memory' | lv_attribute_0_21= 'sanitize_thread' | lv_attribute_0_22= 'ssp' | lv_attribute_0_23= 'sspreq' | lv_attribute_0_24= 'sspstrong' | lv_attribute_0_25= 'uwtable' | lv_attribute_0_26= 'address_safety' | lv_attribute_0_27= 'thread_safety' | lv_attribute_0_28= 'uninitialized_checks' ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4562:1: ( ( (lv_attribute_0_1= 'alwaysinline' | lv_attribute_0_2= 'builtin' | lv_attribute_0_3= 'cold' | lv_attribute_0_4= 'inlinehint' | lv_attribute_0_5= 'naked' | lv_attribute_0_6= 'nobuiltin' | lv_attribute_0_7= 'noduplicate' | lv_attribute_0_8= 'noimplicitfloat' | lv_attribute_0_9= 'noinline' | lv_attribute_0_10= 'nonlazybind' | lv_attribute_0_11= 'noredzone' | lv_attribute_0_12= 'noreturn' | lv_attribute_0_13= 'nounwind' | lv_attribute_0_14= 'optnone' | lv_attribute_0_15= 'optsize' | lv_attribute_0_16= 'readnone' | lv_attribute_0_17= 'readonly' | lv_attribute_0_18= 'returns_twice' | lv_attribute_0_19= 'sanitize_address' | lv_attribute_0_20= 'sanitize_memory' | lv_attribute_0_21= 'sanitize_thread' | lv_attribute_0_22= 'ssp' | lv_attribute_0_23= 'sspreq' | lv_attribute_0_24= 'sspstrong' | lv_attribute_0_25= 'uwtable' | lv_attribute_0_26= 'address_safety' | lv_attribute_0_27= 'thread_safety' | lv_attribute_0_28= 'uninitialized_checks' ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4562:1: ( ( (lv_attribute_0_1= 'alwaysinline' | lv_attribute_0_2= 'builtin' | lv_attribute_0_3= 'cold' | lv_attribute_0_4= 'inlinehint' | lv_attribute_0_5= 'naked' | lv_attribute_0_6= 'nobuiltin' | lv_attribute_0_7= 'noduplicate' | lv_attribute_0_8= 'noimplicitfloat' | lv_attribute_0_9= 'noinline' | lv_attribute_0_10= 'nonlazybind' | lv_attribute_0_11= 'noredzone' | lv_attribute_0_12= 'noreturn' | lv_attribute_0_13= 'nounwind' | lv_attribute_0_14= 'optnone' | lv_attribute_0_15= 'optsize' | lv_attribute_0_16= 'readnone' | lv_attribute_0_17= 'readonly' | lv_attribute_0_18= 'returns_twice' | lv_attribute_0_19= 'sanitize_address' | lv_attribute_0_20= 'sanitize_memory' | lv_attribute_0_21= 'sanitize_thread' | lv_attribute_0_22= 'ssp' | lv_attribute_0_23= 'sspreq' | lv_attribute_0_24= 'sspstrong' | lv_attribute_0_25= 'uwtable' | lv_attribute_0_26= 'address_safety' | lv_attribute_0_27= 'thread_safety' | lv_attribute_0_28= 'uninitialized_checks' ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4563:1: ( (lv_attribute_0_1= 'alwaysinline' | lv_attribute_0_2= 'builtin' | lv_attribute_0_3= 'cold' | lv_attribute_0_4= 'inlinehint' | lv_attribute_0_5= 'naked' | lv_attribute_0_6= 'nobuiltin' | lv_attribute_0_7= 'noduplicate' | lv_attribute_0_8= 'noimplicitfloat' | lv_attribute_0_9= 'noinline' | lv_attribute_0_10= 'nonlazybind' | lv_attribute_0_11= 'noredzone' | lv_attribute_0_12= 'noreturn' | lv_attribute_0_13= 'nounwind' | lv_attribute_0_14= 'optnone' | lv_attribute_0_15= 'optsize' | lv_attribute_0_16= 'readnone' | lv_attribute_0_17= 'readonly' | lv_attribute_0_18= 'returns_twice' | lv_attribute_0_19= 'sanitize_address' | lv_attribute_0_20= 'sanitize_memory' | lv_attribute_0_21= 'sanitize_thread' | lv_attribute_0_22= 'ssp' | lv_attribute_0_23= 'sspreq' | lv_attribute_0_24= 'sspstrong' | lv_attribute_0_25= 'uwtable' | lv_attribute_0_26= 'address_safety' | lv_attribute_0_27= 'thread_safety' | lv_attribute_0_28= 'uninitialized_checks' ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4563:1: ( (lv_attribute_0_1= 'alwaysinline' | lv_attribute_0_2= 'builtin' | lv_attribute_0_3= 'cold' | lv_attribute_0_4= 'inlinehint' | lv_attribute_0_5= 'naked' | lv_attribute_0_6= 'nobuiltin' | lv_attribute_0_7= 'noduplicate' | lv_attribute_0_8= 'noimplicitfloat' | lv_attribute_0_9= 'noinline' | lv_attribute_0_10= 'nonlazybind' | lv_attribute_0_11= 'noredzone' | lv_attribute_0_12= 'noreturn' | lv_attribute_0_13= 'nounwind' | lv_attribute_0_14= 'optnone' | lv_attribute_0_15= 'optsize' | lv_attribute_0_16= 'readnone' | lv_attribute_0_17= 'readonly' | lv_attribute_0_18= 'returns_twice' | lv_attribute_0_19= 'sanitize_address' | lv_attribute_0_20= 'sanitize_memory' | lv_attribute_0_21= 'sanitize_thread' | lv_attribute_0_22= 'ssp' | lv_attribute_0_23= 'sspreq' | lv_attribute_0_24= 'sspstrong' | lv_attribute_0_25= 'uwtable' | lv_attribute_0_26= 'address_safety' | lv_attribute_0_27= 'thread_safety' | lv_attribute_0_28= 'uninitialized_checks' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4564:1: (lv_attribute_0_1= 'alwaysinline' | lv_attribute_0_2= 'builtin' | lv_attribute_0_3= 'cold' | lv_attribute_0_4= 'inlinehint' | lv_attribute_0_5= 'naked' | lv_attribute_0_6= 'nobuiltin' | lv_attribute_0_7= 'noduplicate' | lv_attribute_0_8= 'noimplicitfloat' | lv_attribute_0_9= 'noinline' | lv_attribute_0_10= 'nonlazybind' | lv_attribute_0_11= 'noredzone' | lv_attribute_0_12= 'noreturn' | lv_attribute_0_13= 'nounwind' | lv_attribute_0_14= 'optnone' | lv_attribute_0_15= 'optsize' | lv_attribute_0_16= 'readnone' | lv_attribute_0_17= 'readonly' | lv_attribute_0_18= 'returns_twice' | lv_attribute_0_19= 'sanitize_address' | lv_attribute_0_20= 'sanitize_memory' | lv_attribute_0_21= 'sanitize_thread' | lv_attribute_0_22= 'ssp' | lv_attribute_0_23= 'sspreq' | lv_attribute_0_24= 'sspstrong' | lv_attribute_0_25= 'uwtable' | lv_attribute_0_26= 'address_safety' | lv_attribute_0_27= 'thread_safety' | lv_attribute_0_28= 'uninitialized_checks' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4564:1: (lv_attribute_0_1= 'alwaysinline' | lv_attribute_0_2= 'builtin' | lv_attribute_0_3= 'cold' | lv_attribute_0_4= 'inlinehint' | lv_attribute_0_5= 'naked' | lv_attribute_0_6= 'nobuiltin' | lv_attribute_0_7= 'noduplicate' | lv_attribute_0_8= 'noimplicitfloat' | lv_attribute_0_9= 'noinline' | lv_attribute_0_10= 'nonlazybind' | lv_attribute_0_11= 'noredzone' | lv_attribute_0_12= 'noreturn' | lv_attribute_0_13= 'nounwind' | lv_attribute_0_14= 'optnone' | lv_attribute_0_15= 'optsize' | lv_attribute_0_16= 'readnone' | lv_attribute_0_17= 'readonly' | lv_attribute_0_18= 'returns_twice' | lv_attribute_0_19= 'sanitize_address' | lv_attribute_0_20= 'sanitize_memory' | lv_attribute_0_21= 'sanitize_thread' | lv_attribute_0_22= 'ssp' | lv_attribute_0_23= 'sspreq' | lv_attribute_0_24= 'sspstrong' | lv_attribute_0_25= 'uwtable' | lv_attribute_0_26= 'address_safety' | lv_attribute_0_27= 'thread_safety' | lv_attribute_0_28= 'uninitialized_checks' )
              int alt64=28;
              switch ( input.LA(1) ) {
              case 94:
                  {
                  alt64=1;
                  }
                  break;
              case 95:
                  {
                  alt64=2;
                  }
                  break;
              case 96:
                  {
                  alt64=3;
                  }
                  break;
              case 97:
                  {
                  alt64=4;
                  }
                  break;
              case 98:
                  {
                  alt64=5;
                  }
                  break;
              case 99:
                  {
                  alt64=6;
                  }
                  break;
              case 100:
                  {
                  alt64=7;
                  }
                  break;
              case 101:
                  {
                  alt64=8;
                  }
                  break;
              case 102:
                  {
                  alt64=9;
                  }
                  break;
              case 103:
                  {
                  alt64=10;
                  }
                  break;
              case 104:
                  {
                  alt64=11;
                  }
                  break;
              case 105:
                  {
                  alt64=12;
                  }
                  break;
              case 106:
                  {
                  alt64=13;
                  }
                  break;
              case 107:
                  {
                  alt64=14;
                  }
                  break;
              case 108:
                  {
                  alt64=15;
                  }
                  break;
              case 109:
                  {
                  alt64=16;
                  }
                  break;
              case 110:
                  {
                  alt64=17;
                  }
                  break;
              case 111:
                  {
                  alt64=18;
                  }
                  break;
              case 112:
                  {
                  alt64=19;
                  }
                  break;
              case 113:
                  {
                  alt64=20;
                  }
                  break;
              case 114:
                  {
                  alt64=21;
                  }
                  break;
              case 115:
                  {
                  alt64=22;
                  }
                  break;
              case 116:
                  {
                  alt64=23;
                  }
                  break;
              case 117:
                  {
                  alt64=24;
                  }
                  break;
              case 118:
                  {
                  alt64=25;
                  }
                  break;
              case 119:
                  {
                  alt64=26;
                  }
                  break;
              case 120:
                  {
                  alt64=27;
                  }
                  break;
              case 121:
                  {
                  alt64=28;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 64, 0, input);
  
                  throw nvae;
              }
  
              switch (alt64) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4565:3: lv_attribute_0_1= 'alwaysinline'
                      {
                      lv_attribute_0_1=(Token)match(input,94,FollowSets000.FOLLOW_94_in_ruleFunctionAttribute10099); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_1, grammarAccess.getFunctionAttributeAccess().getAttributeAlwaysinlineKeyword_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_1, null);
                        	    
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4577:8: lv_attribute_0_2= 'builtin'
                      {
                      lv_attribute_0_2=(Token)match(input,95,FollowSets000.FOLLOW_95_in_ruleFunctionAttribute10128); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_2, grammarAccess.getFunctionAttributeAccess().getAttributeBuiltinKeyword_0_1());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_2, null);
                        	    
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4589:8: lv_attribute_0_3= 'cold'
                      {
                      lv_attribute_0_3=(Token)match(input,96,FollowSets000.FOLLOW_96_in_ruleFunctionAttribute10157); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_3, grammarAccess.getFunctionAttributeAccess().getAttributeColdKeyword_0_2());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_3, null);
                        	    
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4601:8: lv_attribute_0_4= 'inlinehint'
                      {
                      lv_attribute_0_4=(Token)match(input,97,FollowSets000.FOLLOW_97_in_ruleFunctionAttribute10186); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_4, grammarAccess.getFunctionAttributeAccess().getAttributeInlinehintKeyword_0_3());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_4, null);
                        	    
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4613:8: lv_attribute_0_5= 'naked'
                      {
                      lv_attribute_0_5=(Token)match(input,98,FollowSets000.FOLLOW_98_in_ruleFunctionAttribute10215); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_5, grammarAccess.getFunctionAttributeAccess().getAttributeNakedKeyword_0_4());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_5, null);
                        	    
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4625:8: lv_attribute_0_6= 'nobuiltin'
                      {
                      lv_attribute_0_6=(Token)match(input,99,FollowSets000.FOLLOW_99_in_ruleFunctionAttribute10244); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_6, grammarAccess.getFunctionAttributeAccess().getAttributeNobuiltinKeyword_0_5());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_6, null);
                        	    
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4637:8: lv_attribute_0_7= 'noduplicate'
                      {
                      lv_attribute_0_7=(Token)match(input,100,FollowSets000.FOLLOW_100_in_ruleFunctionAttribute10273); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_7, grammarAccess.getFunctionAttributeAccess().getAttributeNoduplicateKeyword_0_6());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_7, null);
                        	    
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4649:8: lv_attribute_0_8= 'noimplicitfloat'
                      {
                      lv_attribute_0_8=(Token)match(input,101,FollowSets000.FOLLOW_101_in_ruleFunctionAttribute10302); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_8, grammarAccess.getFunctionAttributeAccess().getAttributeNoimplicitfloatKeyword_0_7());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_8, null);
                        	    
                      }
  
                      }
                      break;
                  case 9 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4661:8: lv_attribute_0_9= 'noinline'
                      {
                      lv_attribute_0_9=(Token)match(input,102,FollowSets000.FOLLOW_102_in_ruleFunctionAttribute10331); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_9, grammarAccess.getFunctionAttributeAccess().getAttributeNoinlineKeyword_0_8());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_9, null);
                        	    
                      }
  
                      }
                      break;
                  case 10 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4673:8: lv_attribute_0_10= 'nonlazybind'
                      {
                      lv_attribute_0_10=(Token)match(input,103,FollowSets000.FOLLOW_103_in_ruleFunctionAttribute10360); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_10, grammarAccess.getFunctionAttributeAccess().getAttributeNonlazybindKeyword_0_9());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_10, null);
                        	    
                      }
  
                      }
                      break;
                  case 11 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4685:8: lv_attribute_0_11= 'noredzone'
                      {
                      lv_attribute_0_11=(Token)match(input,104,FollowSets000.FOLLOW_104_in_ruleFunctionAttribute10389); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_11, grammarAccess.getFunctionAttributeAccess().getAttributeNoredzoneKeyword_0_10());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_11, null);
                        	    
                      }
  
                      }
                      break;
                  case 12 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4697:8: lv_attribute_0_12= 'noreturn'
                      {
                      lv_attribute_0_12=(Token)match(input,105,FollowSets000.FOLLOW_105_in_ruleFunctionAttribute10418); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_12, grammarAccess.getFunctionAttributeAccess().getAttributeNoreturnKeyword_0_11());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_12, null);
                        	    
                      }
  
                      }
                      break;
                  case 13 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4709:8: lv_attribute_0_13= 'nounwind'
                      {
                      lv_attribute_0_13=(Token)match(input,106,FollowSets000.FOLLOW_106_in_ruleFunctionAttribute10447); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_13, grammarAccess.getFunctionAttributeAccess().getAttributeNounwindKeyword_0_12());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_13, null);
                        	    
                      }
  
                      }
                      break;
                  case 14 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4721:8: lv_attribute_0_14= 'optnone'
                      {
                      lv_attribute_0_14=(Token)match(input,107,FollowSets000.FOLLOW_107_in_ruleFunctionAttribute10476); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_14, grammarAccess.getFunctionAttributeAccess().getAttributeOptnoneKeyword_0_13());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_14, null);
                        	    
                      }
  
                      }
                      break;
                  case 15 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4733:8: lv_attribute_0_15= 'optsize'
                      {
                      lv_attribute_0_15=(Token)match(input,108,FollowSets000.FOLLOW_108_in_ruleFunctionAttribute10505); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_15, grammarAccess.getFunctionAttributeAccess().getAttributeOptsizeKeyword_0_14());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_15, null);
                        	    
                      }
  
                      }
                      break;
                  case 16 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4745:8: lv_attribute_0_16= 'readnone'
                      {
                      lv_attribute_0_16=(Token)match(input,109,FollowSets000.FOLLOW_109_in_ruleFunctionAttribute10534); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_16, grammarAccess.getFunctionAttributeAccess().getAttributeReadnoneKeyword_0_15());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_16, null);
                        	    
                      }
  
                      }
                      break;
                  case 17 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4757:8: lv_attribute_0_17= 'readonly'
                      {
                      lv_attribute_0_17=(Token)match(input,110,FollowSets000.FOLLOW_110_in_ruleFunctionAttribute10563); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_17, grammarAccess.getFunctionAttributeAccess().getAttributeReadonlyKeyword_0_16());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_17, null);
                        	    
                      }
  
                      }
                      break;
                  case 18 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4769:8: lv_attribute_0_18= 'returns_twice'
                      {
                      lv_attribute_0_18=(Token)match(input,111,FollowSets000.FOLLOW_111_in_ruleFunctionAttribute10592); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_18, grammarAccess.getFunctionAttributeAccess().getAttributeReturns_twiceKeyword_0_17());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_18, null);
                        	    
                      }
  
                      }
                      break;
                  case 19 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4781:8: lv_attribute_0_19= 'sanitize_address'
                      {
                      lv_attribute_0_19=(Token)match(input,112,FollowSets000.FOLLOW_112_in_ruleFunctionAttribute10621); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_19, grammarAccess.getFunctionAttributeAccess().getAttributeSanitize_addressKeyword_0_18());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_19, null);
                        	    
                      }
  
                      }
                      break;
                  case 20 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4793:8: lv_attribute_0_20= 'sanitize_memory'
                      {
                      lv_attribute_0_20=(Token)match(input,113,FollowSets000.FOLLOW_113_in_ruleFunctionAttribute10650); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_20, grammarAccess.getFunctionAttributeAccess().getAttributeSanitize_memoryKeyword_0_19());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_20, null);
                        	    
                      }
  
                      }
                      break;
                  case 21 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4805:8: lv_attribute_0_21= 'sanitize_thread'
                      {
                      lv_attribute_0_21=(Token)match(input,114,FollowSets000.FOLLOW_114_in_ruleFunctionAttribute10679); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_21, grammarAccess.getFunctionAttributeAccess().getAttributeSanitize_threadKeyword_0_20());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_21, null);
                        	    
                      }
  
                      }
                      break;
                  case 22 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4817:8: lv_attribute_0_22= 'ssp'
                      {
                      lv_attribute_0_22=(Token)match(input,115,FollowSets000.FOLLOW_115_in_ruleFunctionAttribute10708); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_22, grammarAccess.getFunctionAttributeAccess().getAttributeSspKeyword_0_21());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_22, null);
                        	    
                      }
  
                      }
                      break;
                  case 23 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4829:8: lv_attribute_0_23= 'sspreq'
                      {
                      lv_attribute_0_23=(Token)match(input,116,FollowSets000.FOLLOW_116_in_ruleFunctionAttribute10737); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_23, grammarAccess.getFunctionAttributeAccess().getAttributeSspreqKeyword_0_22());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_23, null);
                        	    
                      }
  
                      }
                      break;
                  case 24 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4841:8: lv_attribute_0_24= 'sspstrong'
                      {
                      lv_attribute_0_24=(Token)match(input,117,FollowSets000.FOLLOW_117_in_ruleFunctionAttribute10766); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_24, grammarAccess.getFunctionAttributeAccess().getAttributeSspstrongKeyword_0_23());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_24, null);
                        	    
                      }
  
                      }
                      break;
                  case 25 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4853:8: lv_attribute_0_25= 'uwtable'
                      {
                      lv_attribute_0_25=(Token)match(input,118,FollowSets000.FOLLOW_118_in_ruleFunctionAttribute10795); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_25, grammarAccess.getFunctionAttributeAccess().getAttributeUwtableKeyword_0_24());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_25, null);
                        	    
                      }
  
                      }
                      break;
                  case 26 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4865:8: lv_attribute_0_26= 'address_safety'
                      {
                      lv_attribute_0_26=(Token)match(input,119,FollowSets000.FOLLOW_119_in_ruleFunctionAttribute10824); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_26, grammarAccess.getFunctionAttributeAccess().getAttributeAddress_safetyKeyword_0_25());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_26, null);
                        	    
                      }
  
                      }
                      break;
                  case 27 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4877:8: lv_attribute_0_27= 'thread_safety'
                      {
                      lv_attribute_0_27=(Token)match(input,120,FollowSets000.FOLLOW_120_in_ruleFunctionAttribute10853); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_27, grammarAccess.getFunctionAttributeAccess().getAttributeThread_safetyKeyword_0_26());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_27, null);
                        	    
                      }
  
                      }
                      break;
                  case 28 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4889:8: lv_attribute_0_28= 'uninitialized_checks'
                      {
                      lv_attribute_0_28=(Token)match(input,121,FollowSets000.FOLLOW_121_in_ruleFunctionAttribute10882); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_attribute_0_28, grammarAccess.getFunctionAttributeAccess().getAttributeUninitialized_checksKeyword_0_27());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFunctionAttributeRule());
                        	        }
                               		setWithLastConsumed(current, "attribute", lv_attribute_0_28, null);
                        	    
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleFunctionAttribute"
  
  
      // $ANTLR start "entryRuleBasicBlock"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4912:1: entryRuleBasicBlock returns [EObject current=null] : iv_ruleBasicBlock= ruleBasicBlock EOF ;
      public final EObject entryRuleBasicBlock() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleBasicBlock = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4913:2: (iv_ruleBasicBlock= ruleBasicBlock EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4914:2: iv_ruleBasicBlock= ruleBasicBlock EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getBasicBlockRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleBasicBlock_in_entryRuleBasicBlock10933);
              iv_ruleBasicBlock=ruleBasicBlock();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleBasicBlock; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBasicBlock10943); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleBasicBlock"
  
  
      // $ANTLR start "ruleBasicBlock"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4921:1: ruleBasicBlock returns [EObject current=null] : ( ( (lv_name_0_0= ruleBasicBlockName ) ) ( (lv_instructions_1_0= ruleStartingInstruction ) )* ( (lv_instructions_2_0= ruleMiddleInstruction ) )* ( (lv_instructions_3_0= ruleTerminatorInstruction ) ) ) ;
      public final EObject ruleBasicBlock() throws RecognitionException {
          EObject current = null;
  
          AntlrDatatypeRuleToken lv_name_0_0 = null;
  
          EObject lv_instructions_1_0 = null;
  
          EObject lv_instructions_2_0 = null;
  
          EObject lv_instructions_3_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4924:28: ( ( ( (lv_name_0_0= ruleBasicBlockName ) ) ( (lv_instructions_1_0= ruleStartingInstruction ) )* ( (lv_instructions_2_0= ruleMiddleInstruction ) )* ( (lv_instructions_3_0= ruleTerminatorInstruction ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4925:1: ( ( (lv_name_0_0= ruleBasicBlockName ) ) ( (lv_instructions_1_0= ruleStartingInstruction ) )* ( (lv_instructions_2_0= ruleMiddleInstruction ) )* ( (lv_instructions_3_0= ruleTerminatorInstruction ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4925:1: ( ( (lv_name_0_0= ruleBasicBlockName ) ) ( (lv_instructions_1_0= ruleStartingInstruction ) )* ( (lv_instructions_2_0= ruleMiddleInstruction ) )* ( (lv_instructions_3_0= ruleTerminatorInstruction ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4925:2: ( (lv_name_0_0= ruleBasicBlockName ) ) ( (lv_instructions_1_0= ruleStartingInstruction ) )* ( (lv_instructions_2_0= ruleMiddleInstruction ) )* ( (lv_instructions_3_0= ruleTerminatorInstruction ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4925:2: ( (lv_name_0_0= ruleBasicBlockName ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4926:1: (lv_name_0_0= ruleBasicBlockName )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4926:1: (lv_name_0_0= ruleBasicBlockName )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4927:3: lv_name_0_0= ruleBasicBlockName
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getBasicBlockAccess().getNameBasicBlockNameParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleBasicBlockName_in_ruleBasicBlock10989);
              lv_name_0_0=ruleBasicBlockName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getBasicBlockRule());
                	        }
                       		set(
                       			current, 
                       			"name",
                        		lv_name_0_0, 
                        		"BasicBlockName");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4943:2: ( (lv_instructions_1_0= ruleStartingInstruction ) )*
              loop65:
              do {
                  int alt65=2;
                  alt65 = dfa65.predict(input);
                  switch (alt65) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4944:1: (lv_instructions_1_0= ruleStartingInstruction )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4944:1: (lv_instructions_1_0= ruleStartingInstruction )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4945:3: lv_instructions_1_0= ruleStartingInstruction
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getBasicBlockAccess().getInstructionsStartingInstructionParserRuleCall_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleStartingInstruction_in_ruleBasicBlock11010);
              	    lv_instructions_1_0=ruleStartingInstruction();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getBasicBlockRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"instructions",
              	              		lv_instructions_1_0, 
              	              		"StartingInstruction");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop65;
                  }
              } while (true);
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4961:3: ( (lv_instructions_2_0= ruleMiddleInstruction ) )*
              loop66:
              do {
                  int alt66=2;
                  alt66 = dfa66.predict(input);
                  switch (alt66) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4962:1: (lv_instructions_2_0= ruleMiddleInstruction )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4962:1: (lv_instructions_2_0= ruleMiddleInstruction )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4963:3: lv_instructions_2_0= ruleMiddleInstruction
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getBasicBlockAccess().getInstructionsMiddleInstructionParserRuleCall_2_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleMiddleInstruction_in_ruleBasicBlock11032);
              	    lv_instructions_2_0=ruleMiddleInstruction();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getBasicBlockRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"instructions",
              	              		lv_instructions_2_0, 
              	              		"MiddleInstruction");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop66;
                  }
              } while (true);
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4979:3: ( (lv_instructions_3_0= ruleTerminatorInstruction ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4980:1: (lv_instructions_3_0= ruleTerminatorInstruction )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4980:1: (lv_instructions_3_0= ruleTerminatorInstruction )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:4981:3: lv_instructions_3_0= ruleTerminatorInstruction
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getBasicBlockAccess().getInstructionsTerminatorInstructionParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleTerminatorInstruction_in_ruleBasicBlock11054);
              lv_instructions_3_0=ruleTerminatorInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getBasicBlockRule());
                	        }
                       		add(
                       			current, 
                       			"instructions",
                        		lv_instructions_3_0, 
                        		"TerminatorInstruction");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleBasicBlock"
  
  
      // $ANTLR start "entryRuleBasicBlockName"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5005:1: entryRuleBasicBlockName returns [String current=null] : iv_ruleBasicBlockName= ruleBasicBlockName EOF ;
      public final String entryRuleBasicBlockName() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleBasicBlockName = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5006:2: (iv_ruleBasicBlockName= ruleBasicBlockName EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5007:2: iv_ruleBasicBlockName= ruleBasicBlockName EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getBasicBlockNameRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleBasicBlockName_in_entryRuleBasicBlockName11091);
              iv_ruleBasicBlockName=ruleBasicBlockName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleBasicBlockName.getText(); 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleBasicBlockName11102); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleBasicBlockName"
  
  
      // $ANTLR start "ruleBasicBlockName"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5014:1: ruleBasicBlockName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_BASIC_BLOCK_ID_0= RULE_BASIC_BLOCK_ID )? ;
      public final AntlrDatatypeRuleToken ruleBasicBlockName() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token this_BASIC_BLOCK_ID_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5017:28: ( (this_BASIC_BLOCK_ID_0= RULE_BASIC_BLOCK_ID )? )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5018:1: (this_BASIC_BLOCK_ID_0= RULE_BASIC_BLOCK_ID )?
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5018:1: (this_BASIC_BLOCK_ID_0= RULE_BASIC_BLOCK_ID )?
              int alt67=2;
              int LA67_0 = input.LA(1);
  
              if ( (LA67_0==RULE_BASIC_BLOCK_ID) ) {
                  alt67=1;
              }
              switch (alt67) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5018:6: this_BASIC_BLOCK_ID_0= RULE_BASIC_BLOCK_ID
                      {
                      this_BASIC_BLOCK_ID_0=(Token)match(input,RULE_BASIC_BLOCK_ID,FollowSets000.FOLLOW_RULE_BASIC_BLOCK_ID_in_ruleBasicBlockName11142); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        		current.merge(this_BASIC_BLOCK_ID_0);
                            
                      }
                      if ( state.backtracking==0 ) {
                         
                            newLeafNode(this_BASIC_BLOCK_ID_0, grammarAccess.getBasicBlockNameAccess().getBASIC_BLOCK_IDTerminalRuleCall()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleBasicBlockName"
  
  
      // $ANTLR start "entryRuleMetadataSuffix"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5033:1: entryRuleMetadataSuffix returns [EObject current=null] : iv_ruleMetadataSuffix= ruleMetadataSuffix EOF ;
      public final EObject entryRuleMetadataSuffix() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleMetadataSuffix = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5034:2: (iv_ruleMetadataSuffix= ruleMetadataSuffix EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5035:2: iv_ruleMetadataSuffix= ruleMetadataSuffix EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getMetadataSuffixRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleMetadataSuffix_in_entryRuleMetadataSuffix11188);
              iv_ruleMetadataSuffix=ruleMetadataSuffix();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleMetadataSuffix; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMetadataSuffix11198); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleMetadataSuffix"
  
  
      // $ANTLR start "ruleMetadataSuffix"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5042:1: ruleMetadataSuffix returns [EObject current=null] : (otherlv_0= ',' ( (lv_name_1_0= RULE_META_NAME ) ) ( (lv_value_2_0= ruleMetadataRef ) ) ) ;
      public final EObject ruleMetadataSuffix() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token lv_name_1_0=null;
          EObject lv_value_2_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5045:28: ( (otherlv_0= ',' ( (lv_name_1_0= RULE_META_NAME ) ) ( (lv_value_2_0= ruleMetadataRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5046:1: (otherlv_0= ',' ( (lv_name_1_0= RULE_META_NAME ) ) ( (lv_value_2_0= ruleMetadataRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5046:1: (otherlv_0= ',' ( (lv_name_1_0= RULE_META_NAME ) ) ( (lv_value_2_0= ruleMetadataRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5046:3: otherlv_0= ',' ( (lv_name_1_0= RULE_META_NAME ) ) ( (lv_value_2_0= ruleMetadataRef ) )
              {
              otherlv_0=(Token)match(input,38,FollowSets000.FOLLOW_38_in_ruleMetadataSuffix11235); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getMetadataSuffixAccess().getCommaKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5050:1: ( (lv_name_1_0= RULE_META_NAME ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5051:1: (lv_name_1_0= RULE_META_NAME )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5051:1: (lv_name_1_0= RULE_META_NAME )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5052:3: lv_name_1_0= RULE_META_NAME
              {
              lv_name_1_0=(Token)match(input,RULE_META_NAME,FollowSets000.FOLLOW_RULE_META_NAME_in_ruleMetadataSuffix11252); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_name_1_0, grammarAccess.getMetadataSuffixAccess().getNameMETA_NAMETerminalRuleCall_1_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getMetadataSuffixRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"name",
                        		lv_name_1_0, 
                        		"META_NAME");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5068:2: ( (lv_value_2_0= ruleMetadataRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5069:1: (lv_value_2_0= ruleMetadataRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5069:1: (lv_value_2_0= ruleMetadataRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5070:3: lv_value_2_0= ruleMetadataRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getMetadataSuffixAccess().getValueMetadataRefParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleMetadataRef_in_ruleMetadataSuffix11278);
              lv_value_2_0=ruleMetadataRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getMetadataSuffixRule());
                	        }
                       		set(
                       			current, 
                       			"value",
                        		lv_value_2_0, 
                        		"MetadataRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleMetadataSuffix"
  
  
      // $ANTLR start "entryRuleStartingInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5094:1: entryRuleStartingInstruction returns [EObject current=null] : iv_ruleStartingInstruction= ruleStartingInstruction EOF ;
      public final EObject entryRuleStartingInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleStartingInstruction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5095:2: (iv_ruleStartingInstruction= ruleStartingInstruction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5096:2: iv_ruleStartingInstruction= ruleStartingInstruction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getStartingInstructionRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleStartingInstruction_in_entryRuleStartingInstruction11314);
              iv_ruleStartingInstruction=ruleStartingInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleStartingInstruction; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleStartingInstruction11324); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleStartingInstruction"
  
  
      // $ANTLR start "ruleStartingInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5103:1: ruleStartingInstruction returns [EObject current=null] : ( ( (lv_name_0_0= ruleLocalName ) ) ( (lv_instruction_1_0= ruleInstruction_phi ) ) ( (lv_metadata_2_0= ruleMetadataSuffix ) )* ) ;
      public final EObject ruleStartingInstruction() throws RecognitionException {
          EObject current = null;
  
          AntlrDatatypeRuleToken lv_name_0_0 = null;
  
          EObject lv_instruction_1_0 = null;
  
          EObject lv_metadata_2_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5106:28: ( ( ( (lv_name_0_0= ruleLocalName ) ) ( (lv_instruction_1_0= ruleInstruction_phi ) ) ( (lv_metadata_2_0= ruleMetadataSuffix ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5107:1: ( ( (lv_name_0_0= ruleLocalName ) ) ( (lv_instruction_1_0= ruleInstruction_phi ) ) ( (lv_metadata_2_0= ruleMetadataSuffix ) )* )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5107:1: ( ( (lv_name_0_0= ruleLocalName ) ) ( (lv_instruction_1_0= ruleInstruction_phi ) ) ( (lv_metadata_2_0= ruleMetadataSuffix ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5107:2: ( (lv_name_0_0= ruleLocalName ) ) ( (lv_instruction_1_0= ruleInstruction_phi ) ) ( (lv_metadata_2_0= ruleMetadataSuffix ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5107:2: ( (lv_name_0_0= ruleLocalName ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5108:1: (lv_name_0_0= ruleLocalName )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5108:1: (lv_name_0_0= ruleLocalName )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5109:3: lv_name_0_0= ruleLocalName
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getStartingInstructionAccess().getNameLocalNameParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleLocalName_in_ruleStartingInstruction11370);
              lv_name_0_0=ruleLocalName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getStartingInstructionRule());
                	        }
                       		set(
                       			current, 
                       			"name",
                        		lv_name_0_0, 
                        		"LocalName");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5125:2: ( (lv_instruction_1_0= ruleInstruction_phi ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5126:1: (lv_instruction_1_0= ruleInstruction_phi )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5126:1: (lv_instruction_1_0= ruleInstruction_phi )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5127:3: lv_instruction_1_0= ruleInstruction_phi
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getStartingInstructionAccess().getInstructionInstruction_phiParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleInstruction_phi_in_ruleStartingInstruction11391);
              lv_instruction_1_0=ruleInstruction_phi();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getStartingInstructionRule());
                	        }
                       		set(
                       			current, 
                       			"instruction",
                        		lv_instruction_1_0, 
                        		"Instruction_phi");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5143:2: ( (lv_metadata_2_0= ruleMetadataSuffix ) )*
              loop68:
              do {
                  int alt68=2;
                  int LA68_0 = input.LA(1);
  
                  if ( (LA68_0==38) ) {
                      alt68=1;
                  }
  
  
                  switch (alt68) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5144:1: (lv_metadata_2_0= ruleMetadataSuffix )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5144:1: (lv_metadata_2_0= ruleMetadataSuffix )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5145:3: lv_metadata_2_0= ruleMetadataSuffix
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getStartingInstructionAccess().getMetadataMetadataSuffixParserRuleCall_2_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleMetadataSuffix_in_ruleStartingInstruction11412);
              	    lv_metadata_2_0=ruleMetadataSuffix();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getStartingInstructionRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"metadata",
              	              		lv_metadata_2_0, 
              	              		"MetadataSuffix");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop68;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleStartingInstruction"
  
  
      // $ANTLR start "entryRuleMiddleInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5169:1: entryRuleMiddleInstruction returns [EObject current=null] : iv_ruleMiddleInstruction= ruleMiddleInstruction EOF ;
      public final EObject entryRuleMiddleInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleMiddleInstruction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5170:2: (iv_ruleMiddleInstruction= ruleMiddleInstruction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5171:2: iv_ruleMiddleInstruction= ruleMiddleInstruction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getMiddleInstructionRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleMiddleInstruction_in_entryRuleMiddleInstruction11449);
              iv_ruleMiddleInstruction=ruleMiddleInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleMiddleInstruction; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleMiddleInstruction11459); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleMiddleInstruction"
  
  
      // $ANTLR start "ruleMiddleInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5178:1: ruleMiddleInstruction returns [EObject current=null] : ( ( ( (lv_instruction_0_1= ruleNamedMiddleInstruction | lv_instruction_0_2= ruleInstruction_store | lv_instruction_0_3= ruleInstruction_fence | lv_instruction_0_4= ruleInstruction_call_void ) ) ) ( (lv_metadata_1_0= ruleMetadataSuffix ) )* ) ;
      public final EObject ruleMiddleInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject lv_instruction_0_1 = null;
  
          EObject lv_instruction_0_2 = null;
  
          EObject lv_instruction_0_3 = null;
  
          EObject lv_instruction_0_4 = null;
  
          EObject lv_metadata_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5181:28: ( ( ( ( (lv_instruction_0_1= ruleNamedMiddleInstruction | lv_instruction_0_2= ruleInstruction_store | lv_instruction_0_3= ruleInstruction_fence | lv_instruction_0_4= ruleInstruction_call_void ) ) ) ( (lv_metadata_1_0= ruleMetadataSuffix ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5182:1: ( ( ( (lv_instruction_0_1= ruleNamedMiddleInstruction | lv_instruction_0_2= ruleInstruction_store | lv_instruction_0_3= ruleInstruction_fence | lv_instruction_0_4= ruleInstruction_call_void ) ) ) ( (lv_metadata_1_0= ruleMetadataSuffix ) )* )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5182:1: ( ( ( (lv_instruction_0_1= ruleNamedMiddleInstruction | lv_instruction_0_2= ruleInstruction_store | lv_instruction_0_3= ruleInstruction_fence | lv_instruction_0_4= ruleInstruction_call_void ) ) ) ( (lv_metadata_1_0= ruleMetadataSuffix ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5182:2: ( ( (lv_instruction_0_1= ruleNamedMiddleInstruction | lv_instruction_0_2= ruleInstruction_store | lv_instruction_0_3= ruleInstruction_fence | lv_instruction_0_4= ruleInstruction_call_void ) ) ) ( (lv_metadata_1_0= ruleMetadataSuffix ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5182:2: ( ( (lv_instruction_0_1= ruleNamedMiddleInstruction | lv_instruction_0_2= ruleInstruction_store | lv_instruction_0_3= ruleInstruction_fence | lv_instruction_0_4= ruleInstruction_call_void ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5183:1: ( (lv_instruction_0_1= ruleNamedMiddleInstruction | lv_instruction_0_2= ruleInstruction_store | lv_instruction_0_3= ruleInstruction_fence | lv_instruction_0_4= ruleInstruction_call_void ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5183:1: ( (lv_instruction_0_1= ruleNamedMiddleInstruction | lv_instruction_0_2= ruleInstruction_store | lv_instruction_0_3= ruleInstruction_fence | lv_instruction_0_4= ruleInstruction_call_void ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5184:1: (lv_instruction_0_1= ruleNamedMiddleInstruction | lv_instruction_0_2= ruleInstruction_store | lv_instruction_0_3= ruleInstruction_fence | lv_instruction_0_4= ruleInstruction_call_void )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5184:1: (lv_instruction_0_1= ruleNamedMiddleInstruction | lv_instruction_0_2= ruleInstruction_store | lv_instruction_0_3= ruleInstruction_fence | lv_instruction_0_4= ruleInstruction_call_void )
              int alt69=4;
              alt69 = dfa69.predict(input);
              switch (alt69) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5185:3: lv_instruction_0_1= ruleNamedMiddleInstruction
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getMiddleInstructionAccess().getInstructionNamedMiddleInstructionParserRuleCall_0_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleNamedMiddleInstruction_in_ruleMiddleInstruction11507);
                      lv_instruction_0_1=ruleNamedMiddleInstruction();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_1, 
                                		"NamedMiddleInstruction");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5200:8: lv_instruction_0_2= ruleInstruction_store
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getMiddleInstructionAccess().getInstructionInstruction_storeParserRuleCall_0_0_1()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_store_in_ruleMiddleInstruction11526);
                      lv_instruction_0_2=ruleInstruction_store();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_2, 
                                		"Instruction_store");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5215:8: lv_instruction_0_3= ruleInstruction_fence
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getMiddleInstructionAccess().getInstructionInstruction_fenceParserRuleCall_0_0_2()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_fence_in_ruleMiddleInstruction11545);
                      lv_instruction_0_3=ruleInstruction_fence();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_3, 
                                		"Instruction_fence");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5230:8: lv_instruction_0_4= ruleInstruction_call_void
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getMiddleInstructionAccess().getInstructionInstruction_call_voidParserRuleCall_0_0_3()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_call_void_in_ruleMiddleInstruction11564);
                      lv_instruction_0_4=ruleInstruction_call_void();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_4, 
                                		"Instruction_call_void");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5248:2: ( (lv_metadata_1_0= ruleMetadataSuffix ) )*
              loop70:
              do {
                  int alt70=2;
                  int LA70_0 = input.LA(1);
  
                  if ( (LA70_0==38) ) {
                      alt70=1;
                  }
  
  
                  switch (alt70) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5249:1: (lv_metadata_1_0= ruleMetadataSuffix )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5249:1: (lv_metadata_1_0= ruleMetadataSuffix )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5250:3: lv_metadata_1_0= ruleMetadataSuffix
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getMiddleInstructionAccess().getMetadataMetadataSuffixParserRuleCall_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleMetadataSuffix_in_ruleMiddleInstruction11588);
              	    lv_metadata_1_0=ruleMetadataSuffix();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getMiddleInstructionRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"metadata",
              	              		lv_metadata_1_0, 
              	              		"MetadataSuffix");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop70;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleMiddleInstruction"
  
  
      // $ANTLR start "entryRuleNamedMiddleInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5274:1: entryRuleNamedMiddleInstruction returns [EObject current=null] : iv_ruleNamedMiddleInstruction= ruleNamedMiddleInstruction EOF ;
      public final EObject entryRuleNamedMiddleInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleNamedMiddleInstruction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5275:2: (iv_ruleNamedMiddleInstruction= ruleNamedMiddleInstruction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5276:2: iv_ruleNamedMiddleInstruction= ruleNamedMiddleInstruction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getNamedMiddleInstructionRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleNamedMiddleInstruction_in_entryRuleNamedMiddleInstruction11625);
              iv_ruleNamedMiddleInstruction=ruleNamedMiddleInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleNamedMiddleInstruction; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNamedMiddleInstruction11635); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleNamedMiddleInstruction"
  
  
      // $ANTLR start "ruleNamedMiddleInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5283:1: ruleNamedMiddleInstruction returns [EObject current=null] : ( ( (lv_name_0_0= ruleLocalName ) ) ( ( (lv_instruction_1_1= ruleBinaryInstruction | lv_instruction_1_2= ruleBitwiseBinaryInstruction | lv_instruction_1_3= ruleVectorInstructions | lv_instruction_1_4= ruleAggregateInstruction | lv_instruction_1_5= ruleInstruction_alloca | lv_instruction_1_6= ruleInstruction_load | lv_instruction_1_7= ruleInstruction_getelementptr | lv_instruction_1_8= ruleInstruction_cmpxchg | lv_instruction_1_9= ruleInstruction_atomicrmw | lv_instruction_1_10= ruleConversionInstruction | lv_instruction_1_11= ruleOtherInstruction | lv_instruction_1_12= ruleInstruction_call_nonVoid ) ) ) ) ;
      public final EObject ruleNamedMiddleInstruction() throws RecognitionException {
          EObject current = null;
  
          AntlrDatatypeRuleToken lv_name_0_0 = null;
  
          EObject lv_instruction_1_1 = null;
  
          EObject lv_instruction_1_2 = null;
  
          EObject lv_instruction_1_3 = null;
  
          EObject lv_instruction_1_4 = null;
  
          EObject lv_instruction_1_5 = null;
  
          EObject lv_instruction_1_6 = null;
  
          EObject lv_instruction_1_7 = null;
  
          EObject lv_instruction_1_8 = null;
  
          EObject lv_instruction_1_9 = null;
  
          EObject lv_instruction_1_10 = null;
  
          EObject lv_instruction_1_11 = null;
  
          EObject lv_instruction_1_12 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5286:28: ( ( ( (lv_name_0_0= ruleLocalName ) ) ( ( (lv_instruction_1_1= ruleBinaryInstruction | lv_instruction_1_2= ruleBitwiseBinaryInstruction | lv_instruction_1_3= ruleVectorInstructions | lv_instruction_1_4= ruleAggregateInstruction | lv_instruction_1_5= ruleInstruction_alloca | lv_instruction_1_6= ruleInstruction_load | lv_instruction_1_7= ruleInstruction_getelementptr | lv_instruction_1_8= ruleInstruction_cmpxchg | lv_instruction_1_9= ruleInstruction_atomicrmw | lv_instruction_1_10= ruleConversionInstruction | lv_instruction_1_11= ruleOtherInstruction | lv_instruction_1_12= ruleInstruction_call_nonVoid ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5287:1: ( ( (lv_name_0_0= ruleLocalName ) ) ( ( (lv_instruction_1_1= ruleBinaryInstruction | lv_instruction_1_2= ruleBitwiseBinaryInstruction | lv_instruction_1_3= ruleVectorInstructions | lv_instruction_1_4= ruleAggregateInstruction | lv_instruction_1_5= ruleInstruction_alloca | lv_instruction_1_6= ruleInstruction_load | lv_instruction_1_7= ruleInstruction_getelementptr | lv_instruction_1_8= ruleInstruction_cmpxchg | lv_instruction_1_9= ruleInstruction_atomicrmw | lv_instruction_1_10= ruleConversionInstruction | lv_instruction_1_11= ruleOtherInstruction | lv_instruction_1_12= ruleInstruction_call_nonVoid ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5287:1: ( ( (lv_name_0_0= ruleLocalName ) ) ( ( (lv_instruction_1_1= ruleBinaryInstruction | lv_instruction_1_2= ruleBitwiseBinaryInstruction | lv_instruction_1_3= ruleVectorInstructions | lv_instruction_1_4= ruleAggregateInstruction | lv_instruction_1_5= ruleInstruction_alloca | lv_instruction_1_6= ruleInstruction_load | lv_instruction_1_7= ruleInstruction_getelementptr | lv_instruction_1_8= ruleInstruction_cmpxchg | lv_instruction_1_9= ruleInstruction_atomicrmw | lv_instruction_1_10= ruleConversionInstruction | lv_instruction_1_11= ruleOtherInstruction | lv_instruction_1_12= ruleInstruction_call_nonVoid ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5287:2: ( (lv_name_0_0= ruleLocalName ) ) ( ( (lv_instruction_1_1= ruleBinaryInstruction | lv_instruction_1_2= ruleBitwiseBinaryInstruction | lv_instruction_1_3= ruleVectorInstructions | lv_instruction_1_4= ruleAggregateInstruction | lv_instruction_1_5= ruleInstruction_alloca | lv_instruction_1_6= ruleInstruction_load | lv_instruction_1_7= ruleInstruction_getelementptr | lv_instruction_1_8= ruleInstruction_cmpxchg | lv_instruction_1_9= ruleInstruction_atomicrmw | lv_instruction_1_10= ruleConversionInstruction | lv_instruction_1_11= ruleOtherInstruction | lv_instruction_1_12= ruleInstruction_call_nonVoid ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5287:2: ( (lv_name_0_0= ruleLocalName ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5288:1: (lv_name_0_0= ruleLocalName )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5288:1: (lv_name_0_0= ruleLocalName )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5289:3: lv_name_0_0= ruleLocalName
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getNameLocalNameParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleLocalName_in_ruleNamedMiddleInstruction11681);
              lv_name_0_0=ruleLocalName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                	        }
                       		set(
                       			current, 
                       			"name",
                        		lv_name_0_0, 
                        		"LocalName");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5305:2: ( ( (lv_instruction_1_1= ruleBinaryInstruction | lv_instruction_1_2= ruleBitwiseBinaryInstruction | lv_instruction_1_3= ruleVectorInstructions | lv_instruction_1_4= ruleAggregateInstruction | lv_instruction_1_5= ruleInstruction_alloca | lv_instruction_1_6= ruleInstruction_load | lv_instruction_1_7= ruleInstruction_getelementptr | lv_instruction_1_8= ruleInstruction_cmpxchg | lv_instruction_1_9= ruleInstruction_atomicrmw | lv_instruction_1_10= ruleConversionInstruction | lv_instruction_1_11= ruleOtherInstruction | lv_instruction_1_12= ruleInstruction_call_nonVoid ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5306:1: ( (lv_instruction_1_1= ruleBinaryInstruction | lv_instruction_1_2= ruleBitwiseBinaryInstruction | lv_instruction_1_3= ruleVectorInstructions | lv_instruction_1_4= ruleAggregateInstruction | lv_instruction_1_5= ruleInstruction_alloca | lv_instruction_1_6= ruleInstruction_load | lv_instruction_1_7= ruleInstruction_getelementptr | lv_instruction_1_8= ruleInstruction_cmpxchg | lv_instruction_1_9= ruleInstruction_atomicrmw | lv_instruction_1_10= ruleConversionInstruction | lv_instruction_1_11= ruleOtherInstruction | lv_instruction_1_12= ruleInstruction_call_nonVoid ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5306:1: ( (lv_instruction_1_1= ruleBinaryInstruction | lv_instruction_1_2= ruleBitwiseBinaryInstruction | lv_instruction_1_3= ruleVectorInstructions | lv_instruction_1_4= ruleAggregateInstruction | lv_instruction_1_5= ruleInstruction_alloca | lv_instruction_1_6= ruleInstruction_load | lv_instruction_1_7= ruleInstruction_getelementptr | lv_instruction_1_8= ruleInstruction_cmpxchg | lv_instruction_1_9= ruleInstruction_atomicrmw | lv_instruction_1_10= ruleConversionInstruction | lv_instruction_1_11= ruleOtherInstruction | lv_instruction_1_12= ruleInstruction_call_nonVoid ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5307:1: (lv_instruction_1_1= ruleBinaryInstruction | lv_instruction_1_2= ruleBitwiseBinaryInstruction | lv_instruction_1_3= ruleVectorInstructions | lv_instruction_1_4= ruleAggregateInstruction | lv_instruction_1_5= ruleInstruction_alloca | lv_instruction_1_6= ruleInstruction_load | lv_instruction_1_7= ruleInstruction_getelementptr | lv_instruction_1_8= ruleInstruction_cmpxchg | lv_instruction_1_9= ruleInstruction_atomicrmw | lv_instruction_1_10= ruleConversionInstruction | lv_instruction_1_11= ruleOtherInstruction | lv_instruction_1_12= ruleInstruction_call_nonVoid )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5307:1: (lv_instruction_1_1= ruleBinaryInstruction | lv_instruction_1_2= ruleBitwiseBinaryInstruction | lv_instruction_1_3= ruleVectorInstructions | lv_instruction_1_4= ruleAggregateInstruction | lv_instruction_1_5= ruleInstruction_alloca | lv_instruction_1_6= ruleInstruction_load | lv_instruction_1_7= ruleInstruction_getelementptr | lv_instruction_1_8= ruleInstruction_cmpxchg | lv_instruction_1_9= ruleInstruction_atomicrmw | lv_instruction_1_10= ruleConversionInstruction | lv_instruction_1_11= ruleOtherInstruction | lv_instruction_1_12= ruleInstruction_call_nonVoid )
              int alt71=12;
              switch ( input.LA(1) ) {
              case 52:
              case 53:
              case 54:
              case 58:
              case 59:
              case 63:
              case 64:
              case 65:
              case 66:
              case 67:
              case 68:
              case 69:
                  {
                  alt71=1;
                  }
                  break;
              case 55:
              case 60:
              case 61:
              case 70:
              case 71:
              case 72:
                  {
                  alt71=2;
                  }
                  break;
              case 47:
              case 48:
              case 49:
                  {
                  alt71=3;
                  }
                  break;
              case 50:
              case 51:
                  {
                  alt71=4;
                  }
                  break;
              case 140:
                  {
                  alt71=5;
                  }
                  break;
              case 141:
                  {
                  alt71=6;
                  }
                  break;
              case 42:
                  {
                  alt71=7;
                  }
                  break;
              case 149:
                  {
                  alt71=8;
                  }
                  break;
              case 150:
                  {
                  alt71=9;
                  }
                  break;
              case 157:
              case 158:
              case 159:
              case 160:
              case 161:
              case 162:
              case 163:
              case 164:
              case 165:
              case 166:
              case 167:
              case 168:
              case 169:
                  {
                  alt71=10;
                  }
                  break;
              case 44:
              case 45:
              case 46:
              case 195:
              case 196:
                  {
                  alt71=11;
                  }
                  break;
              case 191:
              case 192:
                  {
                  alt71=12;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 71, 0, input);
  
                  throw nvae;
              }
  
              switch (alt71) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5308:3: lv_instruction_1_1= ruleBinaryInstruction
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionBinaryInstructionParserRuleCall_1_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleBinaryInstruction_in_ruleNamedMiddleInstruction11704);
                      lv_instruction_1_1=ruleBinaryInstruction();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_1, 
                                		"BinaryInstruction");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5323:8: lv_instruction_1_2= ruleBitwiseBinaryInstruction
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionBitwiseBinaryInstructionParserRuleCall_1_0_1()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleBitwiseBinaryInstruction_in_ruleNamedMiddleInstruction11723);
                      lv_instruction_1_2=ruleBitwiseBinaryInstruction();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_2, 
                                		"BitwiseBinaryInstruction");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5338:8: lv_instruction_1_3= ruleVectorInstructions
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionVectorInstructionsParserRuleCall_1_0_2()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleVectorInstructions_in_ruleNamedMiddleInstruction11742);
                      lv_instruction_1_3=ruleVectorInstructions();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_3, 
                                		"VectorInstructions");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5353:8: lv_instruction_1_4= ruleAggregateInstruction
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionAggregateInstructionParserRuleCall_1_0_3()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleAggregateInstruction_in_ruleNamedMiddleInstruction11761);
                      lv_instruction_1_4=ruleAggregateInstruction();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_4, 
                                		"AggregateInstruction");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5368:8: lv_instruction_1_5= ruleInstruction_alloca
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionInstruction_allocaParserRuleCall_1_0_4()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_alloca_in_ruleNamedMiddleInstruction11780);
                      lv_instruction_1_5=ruleInstruction_alloca();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_5, 
                                		"Instruction_alloca");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5383:8: lv_instruction_1_6= ruleInstruction_load
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionInstruction_loadParserRuleCall_1_0_5()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_load_in_ruleNamedMiddleInstruction11799);
                      lv_instruction_1_6=ruleInstruction_load();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_6, 
                                		"Instruction_load");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5398:8: lv_instruction_1_7= ruleInstruction_getelementptr
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionInstruction_getelementptrParserRuleCall_1_0_6()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_getelementptr_in_ruleNamedMiddleInstruction11818);
                      lv_instruction_1_7=ruleInstruction_getelementptr();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_7, 
                                		"Instruction_getelementptr");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5413:8: lv_instruction_1_8= ruleInstruction_cmpxchg
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionInstruction_cmpxchgParserRuleCall_1_0_7()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_cmpxchg_in_ruleNamedMiddleInstruction11837);
                      lv_instruction_1_8=ruleInstruction_cmpxchg();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_8, 
                                		"Instruction_cmpxchg");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 9 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5428:8: lv_instruction_1_9= ruleInstruction_atomicrmw
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionInstruction_atomicrmwParserRuleCall_1_0_8()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_atomicrmw_in_ruleNamedMiddleInstruction11856);
                      lv_instruction_1_9=ruleInstruction_atomicrmw();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_9, 
                                		"Instruction_atomicrmw");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 10 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5443:8: lv_instruction_1_10= ruleConversionInstruction
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionConversionInstructionParserRuleCall_1_0_9()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleConversionInstruction_in_ruleNamedMiddleInstruction11875);
                      lv_instruction_1_10=ruleConversionInstruction();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_10, 
                                		"ConversionInstruction");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 11 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5458:8: lv_instruction_1_11= ruleOtherInstruction
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionOtherInstructionParserRuleCall_1_0_10()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleOtherInstruction_in_ruleNamedMiddleInstruction11894);
                      lv_instruction_1_11=ruleOtherInstruction();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_11, 
                                		"OtherInstruction");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 12 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5473:8: lv_instruction_1_12= ruleInstruction_call_nonVoid
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNamedMiddleInstructionAccess().getInstructionInstruction_call_nonVoidParserRuleCall_1_0_11()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_call_nonVoid_in_ruleNamedMiddleInstruction11913);
                      lv_instruction_1_12=ruleInstruction_call_nonVoid();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNamedMiddleInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_1_12, 
                                		"Instruction_call_nonVoid");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleNamedMiddleInstruction"
  
  
      // $ANTLR start "entryRuleParamName"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5499:1: entryRuleParamName returns [String current=null] : iv_ruleParamName= ruleParamName EOF ;
      public final String entryRuleParamName() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleParamName = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5500:2: (iv_ruleParamName= ruleParamName EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5501:2: iv_ruleParamName= ruleParamName EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getParamNameRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleParamName_in_entryRuleParamName11953);
              iv_ruleParamName=ruleParamName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleParamName.getText(); 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleParamName11964); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleParamName"
  
  
      // $ANTLR start "ruleParamName"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5508:1: ruleParamName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_LOCAL_ID_0= RULE_LOCAL_ID )? ;
      public final AntlrDatatypeRuleToken ruleParamName() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token this_LOCAL_ID_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5511:28: ( (this_LOCAL_ID_0= RULE_LOCAL_ID )? )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5512:1: (this_LOCAL_ID_0= RULE_LOCAL_ID )?
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5512:1: (this_LOCAL_ID_0= RULE_LOCAL_ID )?
              int alt72=2;
              int LA72_0 = input.LA(1);
  
              if ( (LA72_0==RULE_LOCAL_ID) ) {
                  alt72=1;
              }
              switch (alt72) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5512:6: this_LOCAL_ID_0= RULE_LOCAL_ID
                      {
                      this_LOCAL_ID_0=(Token)match(input,RULE_LOCAL_ID,FollowSets000.FOLLOW_RULE_LOCAL_ID_in_ruleParamName12004); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        		current.merge(this_LOCAL_ID_0);
                            
                      }
                      if ( state.backtracking==0 ) {
                         
                            newLeafNode(this_LOCAL_ID_0, grammarAccess.getParamNameAccess().getLOCAL_IDTerminalRuleCall()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleParamName"
  
  
      // $ANTLR start "entryRuleLocalName"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5527:1: entryRuleLocalName returns [String current=null] : iv_ruleLocalName= ruleLocalName EOF ;
      public final String entryRuleLocalName() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleLocalName = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5528:2: (iv_ruleLocalName= ruleLocalName EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5529:2: iv_ruleLocalName= ruleLocalName EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getLocalNameRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleLocalName_in_entryRuleLocalName12051);
              iv_ruleLocalName=ruleLocalName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleLocalName.getText(); 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleLocalName12062); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleLocalName"
  
  
      // $ANTLR start "ruleLocalName"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5536:1: ruleLocalName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_LOCAL_ID_0= RULE_LOCAL_ID (this_WS_1= RULE_WS )* kw= '=' )? ;
      public final AntlrDatatypeRuleToken ruleLocalName() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token this_LOCAL_ID_0=null;
          Token this_WS_1=null;
          Token kw=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5539:28: ( (this_LOCAL_ID_0= RULE_LOCAL_ID (this_WS_1= RULE_WS )* kw= '=' )? )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5540:1: (this_LOCAL_ID_0= RULE_LOCAL_ID (this_WS_1= RULE_WS )* kw= '=' )?
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5540:1: (this_LOCAL_ID_0= RULE_LOCAL_ID (this_WS_1= RULE_WS )* kw= '=' )?
              int alt74=2;
              int LA74_0 = input.LA(1);
  
              if ( (LA74_0==RULE_LOCAL_ID) ) {
                  alt74=1;
              }
              switch (alt74) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5540:6: this_LOCAL_ID_0= RULE_LOCAL_ID (this_WS_1= RULE_WS )* kw= '='
                      {
                      this_LOCAL_ID_0=(Token)match(input,RULE_LOCAL_ID,FollowSets000.FOLLOW_RULE_LOCAL_ID_in_ruleLocalName12102); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        		current.merge(this_LOCAL_ID_0);
                            
                      }
                      if ( state.backtracking==0 ) {
                         
                            newLeafNode(this_LOCAL_ID_0, grammarAccess.getLocalNameAccess().getLOCAL_IDTerminalRuleCall_0()); 
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5547:1: (this_WS_1= RULE_WS )*
                      loop73:
                      do {
                          int alt73=2;
                          int LA73_0 = input.LA(1);
  
                          if ( (LA73_0==RULE_WS) ) {
                              alt73=1;
                          }
  
  
                          switch (alt73) {
                      	case 1 :
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5547:6: this_WS_1= RULE_WS
                      	    {
                      	    this_WS_1=(Token)match(input,RULE_WS,FollowSets000.FOLLOW_RULE_WS_in_ruleLocalName12123); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      		current.merge(this_WS_1);
                      	          
                      	    }
                      	    if ( state.backtracking==0 ) {
                      	       
                      	          newLeafNode(this_WS_1, grammarAccess.getLocalNameAccess().getWSTerminalRuleCall_1()); 
                      	          
                      	    }
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop73;
                          }
                      } while (true);
  
                      kw=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleLocalName12143); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLocalNameAccess().getEqualsSignKeyword_2()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleLocalName"
  
  
      // $ANTLR start "entryRuleGlobalName"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5568:1: entryRuleGlobalName returns [String current=null] : iv_ruleGlobalName= ruleGlobalName EOF ;
      public final String entryRuleGlobalName() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleGlobalName = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5569:2: (iv_ruleGlobalName= ruleGlobalName EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5570:2: iv_ruleGlobalName= ruleGlobalName EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getGlobalNameRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleGlobalName_in_entryRuleGlobalName12185);
              iv_ruleGlobalName=ruleGlobalName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleGlobalName.getText(); 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleGlobalName12196); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleGlobalName"
  
  
      // $ANTLR start "ruleGlobalName"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5577:1: ruleGlobalName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_GLOBAL_ID_0= RULE_GLOBAL_ID (this_WS_1= RULE_WS )* kw= '=' )? ;
      public final AntlrDatatypeRuleToken ruleGlobalName() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token this_GLOBAL_ID_0=null;
          Token this_WS_1=null;
          Token kw=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5580:28: ( (this_GLOBAL_ID_0= RULE_GLOBAL_ID (this_WS_1= RULE_WS )* kw= '=' )? )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5581:1: (this_GLOBAL_ID_0= RULE_GLOBAL_ID (this_WS_1= RULE_WS )* kw= '=' )?
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5581:1: (this_GLOBAL_ID_0= RULE_GLOBAL_ID (this_WS_1= RULE_WS )* kw= '=' )?
              int alt76=2;
              int LA76_0 = input.LA(1);
  
              if ( (LA76_0==RULE_GLOBAL_ID) ) {
                  alt76=1;
              }
              switch (alt76) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5581:6: this_GLOBAL_ID_0= RULE_GLOBAL_ID (this_WS_1= RULE_WS )* kw= '='
                      {
                      this_GLOBAL_ID_0=(Token)match(input,RULE_GLOBAL_ID,FollowSets000.FOLLOW_RULE_GLOBAL_ID_in_ruleGlobalName12236); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        		current.merge(this_GLOBAL_ID_0);
                            
                      }
                      if ( state.backtracking==0 ) {
                         
                            newLeafNode(this_GLOBAL_ID_0, grammarAccess.getGlobalNameAccess().getGLOBAL_IDTerminalRuleCall_0()); 
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5588:1: (this_WS_1= RULE_WS )*
                      loop75:
                      do {
                          int alt75=2;
                          int LA75_0 = input.LA(1);
  
                          if ( (LA75_0==RULE_WS) ) {
                              alt75=1;
                          }
  
  
                          switch (alt75) {
                      	case 1 :
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5588:6: this_WS_1= RULE_WS
                      	    {
                      	    this_WS_1=(Token)match(input,RULE_WS,FollowSets000.FOLLOW_RULE_WS_in_ruleGlobalName12257); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      		current.merge(this_WS_1);
                      	          
                      	    }
                      	    if ( state.backtracking==0 ) {
                      	       
                      	          newLeafNode(this_WS_1, grammarAccess.getGlobalNameAccess().getWSTerminalRuleCall_1()); 
                      	          
                      	    }
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop75;
                          }
                      } while (true);
  
                      kw=(Token)match(input,25,FollowSets000.FOLLOW_25_in_ruleGlobalName12277); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getGlobalNameAccess().getEqualsSignKeyword_2()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleGlobalName"
  
  
      // $ANTLR start "entryRuleTerminatorInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5609:1: entryRuleTerminatorInstruction returns [EObject current=null] : iv_ruleTerminatorInstruction= ruleTerminatorInstruction EOF ;
      public final EObject entryRuleTerminatorInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleTerminatorInstruction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5610:2: (iv_ruleTerminatorInstruction= ruleTerminatorInstruction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5611:2: iv_ruleTerminatorInstruction= ruleTerminatorInstruction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getTerminatorInstructionRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleTerminatorInstruction_in_entryRuleTerminatorInstruction12318);
              iv_ruleTerminatorInstruction=ruleTerminatorInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleTerminatorInstruction; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleTerminatorInstruction12328); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleTerminatorInstruction"
  
  
      // $ANTLR start "ruleTerminatorInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5618:1: ruleTerminatorInstruction returns [EObject current=null] : ( ( ( (lv_instruction_0_1= ruleNamedTerminatorInstruction | lv_instruction_0_2= ruleInstruction_ret | lv_instruction_0_3= ruleInstruction_br | lv_instruction_0_4= ruleInstruction_switch | lv_instruction_0_5= ruleInstruction_indirectbr | lv_instruction_0_6= ruleInstruction_resume | lv_instruction_0_7= ruleInstruction_unreachable | lv_instruction_0_8= ruleInstruction_invoke_void ) ) ) ( (lv_metadata_1_0= ruleMetadataSuffix ) )* ) ;
      public final EObject ruleTerminatorInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject lv_instruction_0_1 = null;
  
          EObject lv_instruction_0_2 = null;
  
          EObject lv_instruction_0_3 = null;
  
          EObject lv_instruction_0_4 = null;
  
          EObject lv_instruction_0_5 = null;
  
          EObject lv_instruction_0_6 = null;
  
          EObject lv_instruction_0_7 = null;
  
          EObject lv_instruction_0_8 = null;
  
          EObject lv_metadata_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5621:28: ( ( ( ( (lv_instruction_0_1= ruleNamedTerminatorInstruction | lv_instruction_0_2= ruleInstruction_ret | lv_instruction_0_3= ruleInstruction_br | lv_instruction_0_4= ruleInstruction_switch | lv_instruction_0_5= ruleInstruction_indirectbr | lv_instruction_0_6= ruleInstruction_resume | lv_instruction_0_7= ruleInstruction_unreachable | lv_instruction_0_8= ruleInstruction_invoke_void ) ) ) ( (lv_metadata_1_0= ruleMetadataSuffix ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5622:1: ( ( ( (lv_instruction_0_1= ruleNamedTerminatorInstruction | lv_instruction_0_2= ruleInstruction_ret | lv_instruction_0_3= ruleInstruction_br | lv_instruction_0_4= ruleInstruction_switch | lv_instruction_0_5= ruleInstruction_indirectbr | lv_instruction_0_6= ruleInstruction_resume | lv_instruction_0_7= ruleInstruction_unreachable | lv_instruction_0_8= ruleInstruction_invoke_void ) ) ) ( (lv_metadata_1_0= ruleMetadataSuffix ) )* )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5622:1: ( ( ( (lv_instruction_0_1= ruleNamedTerminatorInstruction | lv_instruction_0_2= ruleInstruction_ret | lv_instruction_0_3= ruleInstruction_br | lv_instruction_0_4= ruleInstruction_switch | lv_instruction_0_5= ruleInstruction_indirectbr | lv_instruction_0_6= ruleInstruction_resume | lv_instruction_0_7= ruleInstruction_unreachable | lv_instruction_0_8= ruleInstruction_invoke_void ) ) ) ( (lv_metadata_1_0= ruleMetadataSuffix ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5622:2: ( ( (lv_instruction_0_1= ruleNamedTerminatorInstruction | lv_instruction_0_2= ruleInstruction_ret | lv_instruction_0_3= ruleInstruction_br | lv_instruction_0_4= ruleInstruction_switch | lv_instruction_0_5= ruleInstruction_indirectbr | lv_instruction_0_6= ruleInstruction_resume | lv_instruction_0_7= ruleInstruction_unreachable | lv_instruction_0_8= ruleInstruction_invoke_void ) ) ) ( (lv_metadata_1_0= ruleMetadataSuffix ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5622:2: ( ( (lv_instruction_0_1= ruleNamedTerminatorInstruction | lv_instruction_0_2= ruleInstruction_ret | lv_instruction_0_3= ruleInstruction_br | lv_instruction_0_4= ruleInstruction_switch | lv_instruction_0_5= ruleInstruction_indirectbr | lv_instruction_0_6= ruleInstruction_resume | lv_instruction_0_7= ruleInstruction_unreachable | lv_instruction_0_8= ruleInstruction_invoke_void ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5623:1: ( (lv_instruction_0_1= ruleNamedTerminatorInstruction | lv_instruction_0_2= ruleInstruction_ret | lv_instruction_0_3= ruleInstruction_br | lv_instruction_0_4= ruleInstruction_switch | lv_instruction_0_5= ruleInstruction_indirectbr | lv_instruction_0_6= ruleInstruction_resume | lv_instruction_0_7= ruleInstruction_unreachable | lv_instruction_0_8= ruleInstruction_invoke_void ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5623:1: ( (lv_instruction_0_1= ruleNamedTerminatorInstruction | lv_instruction_0_2= ruleInstruction_ret | lv_instruction_0_3= ruleInstruction_br | lv_instruction_0_4= ruleInstruction_switch | lv_instruction_0_5= ruleInstruction_indirectbr | lv_instruction_0_6= ruleInstruction_resume | lv_instruction_0_7= ruleInstruction_unreachable | lv_instruction_0_8= ruleInstruction_invoke_void ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5624:1: (lv_instruction_0_1= ruleNamedTerminatorInstruction | lv_instruction_0_2= ruleInstruction_ret | lv_instruction_0_3= ruleInstruction_br | lv_instruction_0_4= ruleInstruction_switch | lv_instruction_0_5= ruleInstruction_indirectbr | lv_instruction_0_6= ruleInstruction_resume | lv_instruction_0_7= ruleInstruction_unreachable | lv_instruction_0_8= ruleInstruction_invoke_void )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5624:1: (lv_instruction_0_1= ruleNamedTerminatorInstruction | lv_instruction_0_2= ruleInstruction_ret | lv_instruction_0_3= ruleInstruction_br | lv_instruction_0_4= ruleInstruction_switch | lv_instruction_0_5= ruleInstruction_indirectbr | lv_instruction_0_6= ruleInstruction_resume | lv_instruction_0_7= ruleInstruction_unreachable | lv_instruction_0_8= ruleInstruction_invoke_void )
              int alt77=8;
              alt77 = dfa77.predict(input);
              switch (alt77) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5625:3: lv_instruction_0_1= ruleNamedTerminatorInstruction
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getTerminatorInstructionAccess().getInstructionNamedTerminatorInstructionParserRuleCall_0_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleNamedTerminatorInstruction_in_ruleTerminatorInstruction12376);
                      lv_instruction_0_1=ruleNamedTerminatorInstruction();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getTerminatorInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_1, 
                                		"NamedTerminatorInstruction");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5640:8: lv_instruction_0_2= ruleInstruction_ret
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getTerminatorInstructionAccess().getInstructionInstruction_retParserRuleCall_0_0_1()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_ret_in_ruleTerminatorInstruction12395);
                      lv_instruction_0_2=ruleInstruction_ret();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getTerminatorInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_2, 
                                		"Instruction_ret");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5655:8: lv_instruction_0_3= ruleInstruction_br
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getTerminatorInstructionAccess().getInstructionInstruction_brParserRuleCall_0_0_2()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_br_in_ruleTerminatorInstruction12414);
                      lv_instruction_0_3=ruleInstruction_br();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getTerminatorInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_3, 
                                		"Instruction_br");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5670:8: lv_instruction_0_4= ruleInstruction_switch
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getTerminatorInstructionAccess().getInstructionInstruction_switchParserRuleCall_0_0_3()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_switch_in_ruleTerminatorInstruction12433);
                      lv_instruction_0_4=ruleInstruction_switch();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getTerminatorInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_4, 
                                		"Instruction_switch");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5685:8: lv_instruction_0_5= ruleInstruction_indirectbr
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getTerminatorInstructionAccess().getInstructionInstruction_indirectbrParserRuleCall_0_0_4()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_indirectbr_in_ruleTerminatorInstruction12452);
                      lv_instruction_0_5=ruleInstruction_indirectbr();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getTerminatorInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_5, 
                                		"Instruction_indirectbr");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5700:8: lv_instruction_0_6= ruleInstruction_resume
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getTerminatorInstructionAccess().getInstructionInstruction_resumeParserRuleCall_0_0_5()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_resume_in_ruleTerminatorInstruction12471);
                      lv_instruction_0_6=ruleInstruction_resume();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getTerminatorInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_6, 
                                		"Instruction_resume");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5715:8: lv_instruction_0_7= ruleInstruction_unreachable
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getTerminatorInstructionAccess().getInstructionInstruction_unreachableParserRuleCall_0_0_6()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_unreachable_in_ruleTerminatorInstruction12490);
                      lv_instruction_0_7=ruleInstruction_unreachable();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getTerminatorInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_7, 
                                		"Instruction_unreachable");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5730:8: lv_instruction_0_8= ruleInstruction_invoke_void
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getTerminatorInstructionAccess().getInstructionInstruction_invoke_voidParserRuleCall_0_0_7()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleInstruction_invoke_void_in_ruleTerminatorInstruction12509);
                      lv_instruction_0_8=ruleInstruction_invoke_void();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getTerminatorInstructionRule());
                        	        }
                               		set(
                               			current, 
                               			"instruction",
                                		lv_instruction_0_8, 
                                		"Instruction_invoke_void");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5748:2: ( (lv_metadata_1_0= ruleMetadataSuffix ) )*
              loop78:
              do {
                  int alt78=2;
                  int LA78_0 = input.LA(1);
  
                  if ( (LA78_0==38) ) {
                      alt78=1;
                  }
  
  
                  switch (alt78) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5749:1: (lv_metadata_1_0= ruleMetadataSuffix )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5749:1: (lv_metadata_1_0= ruleMetadataSuffix )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5750:3: lv_metadata_1_0= ruleMetadataSuffix
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getTerminatorInstructionAccess().getMetadataMetadataSuffixParserRuleCall_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets000.FOLLOW_ruleMetadataSuffix_in_ruleTerminatorInstruction12533);
              	    lv_metadata_1_0=ruleMetadataSuffix();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getTerminatorInstructionRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"metadata",
              	              		lv_metadata_1_0, 
              	              		"MetadataSuffix");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop78;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleTerminatorInstruction"
  
  
      // $ANTLR start "entryRuleNamedTerminatorInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5774:1: entryRuleNamedTerminatorInstruction returns [EObject current=null] : iv_ruleNamedTerminatorInstruction= ruleNamedTerminatorInstruction EOF ;
      public final EObject entryRuleNamedTerminatorInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleNamedTerminatorInstruction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5775:2: (iv_ruleNamedTerminatorInstruction= ruleNamedTerminatorInstruction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5776:2: iv_ruleNamedTerminatorInstruction= ruleNamedTerminatorInstruction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getNamedTerminatorInstructionRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleNamedTerminatorInstruction_in_entryRuleNamedTerminatorInstruction12570);
              iv_ruleNamedTerminatorInstruction=ruleNamedTerminatorInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleNamedTerminatorInstruction; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleNamedTerminatorInstruction12580); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleNamedTerminatorInstruction"
  
  
      // $ANTLR start "ruleNamedTerminatorInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5783:1: ruleNamedTerminatorInstruction returns [EObject current=null] : ( ( (lv_name_0_0= ruleLocalName ) ) ( (lv_instruction_1_0= ruleInstruction_invoke_nonVoid ) ) ) ;
      public final EObject ruleNamedTerminatorInstruction() throws RecognitionException {
          EObject current = null;
  
          AntlrDatatypeRuleToken lv_name_0_0 = null;
  
          EObject lv_instruction_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5786:28: ( ( ( (lv_name_0_0= ruleLocalName ) ) ( (lv_instruction_1_0= ruleInstruction_invoke_nonVoid ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5787:1: ( ( (lv_name_0_0= ruleLocalName ) ) ( (lv_instruction_1_0= ruleInstruction_invoke_nonVoid ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5787:1: ( ( (lv_name_0_0= ruleLocalName ) ) ( (lv_instruction_1_0= ruleInstruction_invoke_nonVoid ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5787:2: ( (lv_name_0_0= ruleLocalName ) ) ( (lv_instruction_1_0= ruleInstruction_invoke_nonVoid ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5787:2: ( (lv_name_0_0= ruleLocalName ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5788:1: (lv_name_0_0= ruleLocalName )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5788:1: (lv_name_0_0= ruleLocalName )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5789:3: lv_name_0_0= ruleLocalName
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getNamedTerminatorInstructionAccess().getNameLocalNameParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleLocalName_in_ruleNamedTerminatorInstruction12626);
              lv_name_0_0=ruleLocalName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getNamedTerminatorInstructionRule());
                	        }
                       		set(
                       			current, 
                       			"name",
                        		lv_name_0_0, 
                        		"LocalName");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5805:2: ( (lv_instruction_1_0= ruleInstruction_invoke_nonVoid ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5806:1: (lv_instruction_1_0= ruleInstruction_invoke_nonVoid )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5806:1: (lv_instruction_1_0= ruleInstruction_invoke_nonVoid )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5807:3: lv_instruction_1_0= ruleInstruction_invoke_nonVoid
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getNamedTerminatorInstructionAccess().getInstructionInstruction_invoke_nonVoidParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets000.FOLLOW_ruleInstruction_invoke_nonVoid_in_ruleNamedTerminatorInstruction12647);
              lv_instruction_1_0=ruleInstruction_invoke_nonVoid();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getNamedTerminatorInstructionRule());
                	        }
                       		set(
                       			current, 
                       			"instruction",
                        		lv_instruction_1_0, 
                        		"Instruction_invoke_nonVoid");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleNamedTerminatorInstruction"
  
  
      // $ANTLR start "entryRuleInstruction_ret"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5831:1: entryRuleInstruction_ret returns [EObject current=null] : iv_ruleInstruction_ret= ruleInstruction_ret EOF ;
      public final EObject entryRuleInstruction_ret() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_ret = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5832:2: (iv_ruleInstruction_ret= ruleInstruction_ret EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5833:2: iv_ruleInstruction_ret= ruleInstruction_ret EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_retRule()); 
              }
              pushFollow(FollowSets000.FOLLOW_ruleInstruction_ret_in_entryRuleInstruction_ret12683);
              iv_ruleInstruction_ret=ruleInstruction_ret();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_ret; 
              }
              match(input,EOF,FollowSets000.FOLLOW_EOF_in_entryRuleInstruction_ret12693); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_ret"
  
  
      // $ANTLR start "ruleInstruction_ret"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5840:1: ruleInstruction_ret returns [EObject current=null] : ( ( (lv_opcode_0_0= 'ret' ) ) ( ( (lv_val_1_0= ruleTypedValue ) ) | otherlv_2= 'void' ) ) ;
      public final EObject ruleInstruction_ret() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          EObject lv_val_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5843:28: ( ( ( (lv_opcode_0_0= 'ret' ) ) ( ( (lv_val_1_0= ruleTypedValue ) ) | otherlv_2= 'void' ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5844:1: ( ( (lv_opcode_0_0= 'ret' ) ) ( ( (lv_val_1_0= ruleTypedValue ) ) | otherlv_2= 'void' ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5844:1: ( ( (lv_opcode_0_0= 'ret' ) ) ( ( (lv_val_1_0= ruleTypedValue ) ) | otherlv_2= 'void' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5844:2: ( (lv_opcode_0_0= 'ret' ) ) ( ( (lv_val_1_0= ruleTypedValue ) ) | otherlv_2= 'void' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5844:2: ( (lv_opcode_0_0= 'ret' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5845:1: (lv_opcode_0_0= 'ret' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5845:1: (lv_opcode_0_0= 'ret' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5846:3: lv_opcode_0_0= 'ret'
              {
              lv_opcode_0_0=(Token)match(input,122,FollowSets000.FOLLOW_122_in_ruleInstruction_ret12736); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_retAccess().getOpcodeRetKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_retRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "ret");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5859:2: ( ( (lv_val_1_0= ruleTypedValue ) ) | otherlv_2= 'void' )
              int alt79=2;
              alt79 = dfa79.predict(input);
              switch (alt79) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5859:3: ( (lv_val_1_0= ruleTypedValue ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5859:3: ( (lv_val_1_0= ruleTypedValue ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5860:1: (lv_val_1_0= ruleTypedValue )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5860:1: (lv_val_1_0= ruleTypedValue )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5861:3: lv_val_1_0= ruleTypedValue
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_retAccess().getValTypedValueParserRuleCall_1_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets000.FOLLOW_ruleTypedValue_in_ruleInstruction_ret12771);
                      lv_val_1_0=ruleTypedValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_retRule());
                        	        }
                               		set(
                               			current, 
                               			"val",
                                		lv_val_1_0, 
                                		"TypedValue");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5878:7: otherlv_2= 'void'
                      {
                      otherlv_2=(Token)match(input,123,FollowSets000.FOLLOW_123_in_ruleInstruction_ret12789); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_2, grammarAccess.getInstruction_retAccess().getVoidKeyword_1_1());
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_ret"
  
  
      // $ANTLR start "entryRuleInstruction_br"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5890:1: entryRuleInstruction_br returns [EObject current=null] : iv_ruleInstruction_br= ruleInstruction_br EOF ;
      public final EObject entryRuleInstruction_br() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_br = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5891:2: (iv_ruleInstruction_br= ruleInstruction_br EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5892:2: iv_ruleInstruction_br= ruleInstruction_br EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_brRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_br_in_entryRuleInstruction_br12826);
              iv_ruleInstruction_br=ruleInstruction_br();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_br; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_br12836); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_br"
  
  
      // $ANTLR start "ruleInstruction_br"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5899:1: ruleInstruction_br returns [EObject current=null] : ( ( (lv_opcode_0_0= 'br' ) ) ( ( ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_true_4_0= ruleBasicBlockRef ) ) otherlv_5= ',' otherlv_6= 'label' ( (lv_false_7_0= ruleBasicBlockRef ) ) ) | (otherlv_8= 'label' ( (lv_unconditional_9_0= ruleBasicBlockRef ) ) ) ) ) ;
      public final EObject ruleInstruction_br() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token otherlv_6=null;
          Token otherlv_8=null;
          EObject lv_condition_1_0 = null;
  
          EObject lv_true_4_0 = null;
  
          EObject lv_false_7_0 = null;
  
          EObject lv_unconditional_9_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5902:28: ( ( ( (lv_opcode_0_0= 'br' ) ) ( ( ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_true_4_0= ruleBasicBlockRef ) ) otherlv_5= ',' otherlv_6= 'label' ( (lv_false_7_0= ruleBasicBlockRef ) ) ) | (otherlv_8= 'label' ( (lv_unconditional_9_0= ruleBasicBlockRef ) ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5903:1: ( ( (lv_opcode_0_0= 'br' ) ) ( ( ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_true_4_0= ruleBasicBlockRef ) ) otherlv_5= ',' otherlv_6= 'label' ( (lv_false_7_0= ruleBasicBlockRef ) ) ) | (otherlv_8= 'label' ( (lv_unconditional_9_0= ruleBasicBlockRef ) ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5903:1: ( ( (lv_opcode_0_0= 'br' ) ) ( ( ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_true_4_0= ruleBasicBlockRef ) ) otherlv_5= ',' otherlv_6= 'label' ( (lv_false_7_0= ruleBasicBlockRef ) ) ) | (otherlv_8= 'label' ( (lv_unconditional_9_0= ruleBasicBlockRef ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5903:2: ( (lv_opcode_0_0= 'br' ) ) ( ( ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_true_4_0= ruleBasicBlockRef ) ) otherlv_5= ',' otherlv_6= 'label' ( (lv_false_7_0= ruleBasicBlockRef ) ) ) | (otherlv_8= 'label' ( (lv_unconditional_9_0= ruleBasicBlockRef ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5903:2: ( (lv_opcode_0_0= 'br' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5904:1: (lv_opcode_0_0= 'br' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5904:1: (lv_opcode_0_0= 'br' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5905:3: lv_opcode_0_0= 'br'
              {
              lv_opcode_0_0=(Token)match(input,124,FollowSets001.FOLLOW_124_in_ruleInstruction_br12879); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_brAccess().getOpcodeBrKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_brRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "br");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5918:2: ( ( ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_true_4_0= ruleBasicBlockRef ) ) otherlv_5= ',' otherlv_6= 'label' ( (lv_false_7_0= ruleBasicBlockRef ) ) ) | (otherlv_8= 'label' ( (lv_unconditional_9_0= ruleBasicBlockRef ) ) ) )
              int alt80=2;
              int LA80_0 = input.LA(1);
  
              if ( (LA80_0==RULE_LOCAL_ID||LA80_0==RULE_INT_TYPE||LA80_0==26||LA80_0==28||LA80_0==76||LA80_0==78||LA80_0==123||LA80_0==216||(LA80_0>=218 && LA80_0<=224)) ) {
                  alt80=1;
              }
              else if ( (LA80_0==125) ) {
                  alt80=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 80, 0, input);
  
                  throw nvae;
              }
              switch (alt80) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5918:3: ( ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_true_4_0= ruleBasicBlockRef ) ) otherlv_5= ',' otherlv_6= 'label' ( (lv_false_7_0= ruleBasicBlockRef ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5918:3: ( ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_true_4_0= ruleBasicBlockRef ) ) otherlv_5= ',' otherlv_6= 'label' ( (lv_false_7_0= ruleBasicBlockRef ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5918:4: ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_true_4_0= ruleBasicBlockRef ) ) otherlv_5= ',' otherlv_6= 'label' ( (lv_false_7_0= ruleBasicBlockRef ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5918:4: ( (lv_condition_1_0= ruleTypedValue ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5919:1: (lv_condition_1_0= ruleTypedValue )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5919:1: (lv_condition_1_0= ruleTypedValue )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5920:3: lv_condition_1_0= ruleTypedValue
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_brAccess().getConditionTypedValueParserRuleCall_1_0_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_br12915);
                      lv_condition_1_0=ruleTypedValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_brRule());
                        	        }
                               		set(
                               			current, 
                               			"condition",
                                		lv_condition_1_0, 
                                		"TypedValue");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      otherlv_2=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_br12927); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_2, grammarAccess.getInstruction_brAccess().getCommaKeyword_1_0_1());
                            
                      }
                      otherlv_3=(Token)match(input,125,FollowSets001.FOLLOW_125_in_ruleInstruction_br12939); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_3, grammarAccess.getInstruction_brAccess().getLabelKeyword_1_0_2());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5944:1: ( (lv_true_4_0= ruleBasicBlockRef ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5945:1: (lv_true_4_0= ruleBasicBlockRef )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5945:1: (lv_true_4_0= ruleBasicBlockRef )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5946:3: lv_true_4_0= ruleBasicBlockRef
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_brAccess().getTrueBasicBlockRefParserRuleCall_1_0_3_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_br12960);
                      lv_true_4_0=ruleBasicBlockRef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_brRule());
                        	        }
                               		set(
                               			current, 
                               			"true",
                                		lv_true_4_0, 
                                		"BasicBlockRef");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      otherlv_5=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_br12972); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_5, grammarAccess.getInstruction_brAccess().getCommaKeyword_1_0_4());
                            
                      }
                      otherlv_6=(Token)match(input,125,FollowSets001.FOLLOW_125_in_ruleInstruction_br12984); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_6, grammarAccess.getInstruction_brAccess().getLabelKeyword_1_0_5());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5970:1: ( (lv_false_7_0= ruleBasicBlockRef ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5971:1: (lv_false_7_0= ruleBasicBlockRef )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5971:1: (lv_false_7_0= ruleBasicBlockRef )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5972:3: lv_false_7_0= ruleBasicBlockRef
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_brAccess().getFalseBasicBlockRefParserRuleCall_1_0_6_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_br13005);
                      lv_false_7_0=ruleBasicBlockRef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_brRule());
                        	        }
                               		set(
                               			current, 
                               			"false",
                                		lv_false_7_0, 
                                		"BasicBlockRef");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5989:6: (otherlv_8= 'label' ( (lv_unconditional_9_0= ruleBasicBlockRef ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5989:6: (otherlv_8= 'label' ( (lv_unconditional_9_0= ruleBasicBlockRef ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5989:8: otherlv_8= 'label' ( (lv_unconditional_9_0= ruleBasicBlockRef ) )
                      {
                      otherlv_8=(Token)match(input,125,FollowSets001.FOLLOW_125_in_ruleInstruction_br13025); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_8, grammarAccess.getInstruction_brAccess().getLabelKeyword_1_1_0());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5993:1: ( (lv_unconditional_9_0= ruleBasicBlockRef ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5994:1: (lv_unconditional_9_0= ruleBasicBlockRef )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5994:1: (lv_unconditional_9_0= ruleBasicBlockRef )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:5995:3: lv_unconditional_9_0= ruleBasicBlockRef
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_brAccess().getUnconditionalBasicBlockRefParserRuleCall_1_1_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_br13046);
                      lv_unconditional_9_0=ruleBasicBlockRef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_brRule());
                        	        }
                               		set(
                               			current, 
                               			"unconditional",
                                		lv_unconditional_9_0, 
                                		"BasicBlockRef");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_br"
  
  
      // $ANTLR start "entryRuleInstruction_switch"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6019:1: entryRuleInstruction_switch returns [EObject current=null] : iv_ruleInstruction_switch= ruleInstruction_switch EOF ;
      public final EObject entryRuleInstruction_switch() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_switch = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6020:2: (iv_ruleInstruction_switch= ruleInstruction_switch EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6021:2: iv_ruleInstruction_switch= ruleInstruction_switch EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_switchRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_switch_in_entryRuleInstruction_switch13084);
              iv_ruleInstruction_switch=ruleInstruction_switch();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_switch; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_switch13094); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_switch"
  
  
      // $ANTLR start "ruleInstruction_switch"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6028:1: ruleInstruction_switch returns [EObject current=null] : ( ( (lv_opcode_0_0= 'switch' ) ) ( (lv_comparisonValue_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_defaultDest_4_0= ruleBasicBlockRef ) ) otherlv_5= '[' ( ( (lv_caseConditions_6_0= ruleTypedValue ) ) otherlv_7= ',' otherlv_8= 'label' ( (lv_destinations_9_0= ruleBasicBlockRef ) ) )* otherlv_10= ']' ) ;
      public final EObject ruleInstruction_switch() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token otherlv_7=null;
          Token otherlv_8=null;
          Token otherlv_10=null;
          EObject lv_comparisonValue_1_0 = null;
  
          EObject lv_defaultDest_4_0 = null;
  
          EObject lv_caseConditions_6_0 = null;
  
          EObject lv_destinations_9_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6031:28: ( ( ( (lv_opcode_0_0= 'switch' ) ) ( (lv_comparisonValue_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_defaultDest_4_0= ruleBasicBlockRef ) ) otherlv_5= '[' ( ( (lv_caseConditions_6_0= ruleTypedValue ) ) otherlv_7= ',' otherlv_8= 'label' ( (lv_destinations_9_0= ruleBasicBlockRef ) ) )* otherlv_10= ']' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6032:1: ( ( (lv_opcode_0_0= 'switch' ) ) ( (lv_comparisonValue_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_defaultDest_4_0= ruleBasicBlockRef ) ) otherlv_5= '[' ( ( (lv_caseConditions_6_0= ruleTypedValue ) ) otherlv_7= ',' otherlv_8= 'label' ( (lv_destinations_9_0= ruleBasicBlockRef ) ) )* otherlv_10= ']' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6032:1: ( ( (lv_opcode_0_0= 'switch' ) ) ( (lv_comparisonValue_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_defaultDest_4_0= ruleBasicBlockRef ) ) otherlv_5= '[' ( ( (lv_caseConditions_6_0= ruleTypedValue ) ) otherlv_7= ',' otherlv_8= 'label' ( (lv_destinations_9_0= ruleBasicBlockRef ) ) )* otherlv_10= ']' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6032:2: ( (lv_opcode_0_0= 'switch' ) ) ( (lv_comparisonValue_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= 'label' ( (lv_defaultDest_4_0= ruleBasicBlockRef ) ) otherlv_5= '[' ( ( (lv_caseConditions_6_0= ruleTypedValue ) ) otherlv_7= ',' otherlv_8= 'label' ( (lv_destinations_9_0= ruleBasicBlockRef ) ) )* otherlv_10= ']'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6032:2: ( (lv_opcode_0_0= 'switch' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6033:1: (lv_opcode_0_0= 'switch' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6033:1: (lv_opcode_0_0= 'switch' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6034:3: lv_opcode_0_0= 'switch'
              {
              lv_opcode_0_0=(Token)match(input,126,FollowSets001.FOLLOW_126_in_ruleInstruction_switch13137); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_switchAccess().getOpcodeSwitchKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_switchRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "switch");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6047:2: ( (lv_comparisonValue_1_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6048:1: (lv_comparisonValue_1_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6048:1: (lv_comparisonValue_1_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6049:3: lv_comparisonValue_1_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_switchAccess().getComparisonValueTypedValueParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_switch13171);
              lv_comparisonValue_1_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_switchRule());
                	        }
                       		set(
                       			current, 
                       			"comparisonValue",
                        		lv_comparisonValue_1_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_switch13183); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getInstruction_switchAccess().getCommaKeyword_2());
                    
              }
              otherlv_3=(Token)match(input,125,FollowSets001.FOLLOW_125_in_ruleInstruction_switch13195); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getInstruction_switchAccess().getLabelKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6073:1: ( (lv_defaultDest_4_0= ruleBasicBlockRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6074:1: (lv_defaultDest_4_0= ruleBasicBlockRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6074:1: (lv_defaultDest_4_0= ruleBasicBlockRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6075:3: lv_defaultDest_4_0= ruleBasicBlockRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_switchAccess().getDefaultDestBasicBlockRefParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_switch13216);
              lv_defaultDest_4_0=ruleBasicBlockRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_switchRule());
                	        }
                       		set(
                       			current, 
                       			"defaultDest",
                        		lv_defaultDest_4_0, 
                        		"BasicBlockRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_5=(Token)match(input,78,FollowSets001.FOLLOW_78_in_ruleInstruction_switch13228); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_5, grammarAccess.getInstruction_switchAccess().getLeftSquareBracketKeyword_5());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6095:1: ( ( (lv_caseConditions_6_0= ruleTypedValue ) ) otherlv_7= ',' otherlv_8= 'label' ( (lv_destinations_9_0= ruleBasicBlockRef ) ) )*
              loop81:
              do {
                  int alt81=2;
                  int LA81_0 = input.LA(1);
  
                  if ( (LA81_0==RULE_LOCAL_ID||LA81_0==RULE_INT_TYPE||LA81_0==26||LA81_0==28||LA81_0==76||LA81_0==78||LA81_0==123||LA81_0==216||(LA81_0>=218 && LA81_0<=224)) ) {
                      alt81=1;
                  }
  
  
                  switch (alt81) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6095:2: ( (lv_caseConditions_6_0= ruleTypedValue ) ) otherlv_7= ',' otherlv_8= 'label' ( (lv_destinations_9_0= ruleBasicBlockRef ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6095:2: ( (lv_caseConditions_6_0= ruleTypedValue ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6096:1: (lv_caseConditions_6_0= ruleTypedValue )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6096:1: (lv_caseConditions_6_0= ruleTypedValue )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6097:3: lv_caseConditions_6_0= ruleTypedValue
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_switchAccess().getCaseConditionsTypedValueParserRuleCall_6_0_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_switch13250);
              	    lv_caseConditions_6_0=ruleTypedValue();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_switchRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"caseConditions",
              	              		lv_caseConditions_6_0, 
              	              		"TypedValue");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
              	    otherlv_7=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_switch13262); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_7, grammarAccess.getInstruction_switchAccess().getCommaKeyword_6_1());
              	          
              	    }
              	    otherlv_8=(Token)match(input,125,FollowSets001.FOLLOW_125_in_ruleInstruction_switch13274); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_8, grammarAccess.getInstruction_switchAccess().getLabelKeyword_6_2());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6121:1: ( (lv_destinations_9_0= ruleBasicBlockRef ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6122:1: (lv_destinations_9_0= ruleBasicBlockRef )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6122:1: (lv_destinations_9_0= ruleBasicBlockRef )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6123:3: lv_destinations_9_0= ruleBasicBlockRef
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_switchAccess().getDestinationsBasicBlockRefParserRuleCall_6_3_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_switch13295);
              	    lv_destinations_9_0=ruleBasicBlockRef();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_switchRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"destinations",
              	              		lv_destinations_9_0, 
              	              		"BasicBlockRef");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop81;
                  }
              } while (true);
  
              otherlv_10=(Token)match(input,79,FollowSets001.FOLLOW_79_in_ruleInstruction_switch13309); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_10, grammarAccess.getInstruction_switchAccess().getRightSquareBracketKeyword_7());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_switch"
  
  
      // $ANTLR start "entryRuleInstruction_indirectbr"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6151:1: entryRuleInstruction_indirectbr returns [EObject current=null] : iv_ruleInstruction_indirectbr= ruleInstruction_indirectbr EOF ;
      public final EObject entryRuleInstruction_indirectbr() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_indirectbr = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6152:2: (iv_ruleInstruction_indirectbr= ruleInstruction_indirectbr EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6153:2: iv_ruleInstruction_indirectbr= ruleInstruction_indirectbr EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_indirectbrRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_indirectbr_in_entryRuleInstruction_indirectbr13345);
              iv_ruleInstruction_indirectbr=ruleInstruction_indirectbr();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_indirectbr; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_indirectbr13355); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_indirectbr"
  
  
      // $ANTLR start "ruleInstruction_indirectbr"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6160:1: ruleInstruction_indirectbr returns [EObject current=null] : ( ( (lv_opcode_0_0= 'indirectbr' ) ) ( (lv_address_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= '[' (otherlv_4= 'label' ( (lv_destinations_5_0= ruleBasicBlockRef ) ) (otherlv_6= ',' otherlv_7= 'label' ( (lv_destinations_8_0= ruleBasicBlockRef ) ) )* )? otherlv_9= ']' ) ;
      public final EObject ruleInstruction_indirectbr() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_3=null;
          Token otherlv_4=null;
          Token otherlv_6=null;
          Token otherlv_7=null;
          Token otherlv_9=null;
          EObject lv_address_1_0 = null;
  
          EObject lv_destinations_5_0 = null;
  
          EObject lv_destinations_8_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6163:28: ( ( ( (lv_opcode_0_0= 'indirectbr' ) ) ( (lv_address_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= '[' (otherlv_4= 'label' ( (lv_destinations_5_0= ruleBasicBlockRef ) ) (otherlv_6= ',' otherlv_7= 'label' ( (lv_destinations_8_0= ruleBasicBlockRef ) ) )* )? otherlv_9= ']' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6164:1: ( ( (lv_opcode_0_0= 'indirectbr' ) ) ( (lv_address_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= '[' (otherlv_4= 'label' ( (lv_destinations_5_0= ruleBasicBlockRef ) ) (otherlv_6= ',' otherlv_7= 'label' ( (lv_destinations_8_0= ruleBasicBlockRef ) ) )* )? otherlv_9= ']' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6164:1: ( ( (lv_opcode_0_0= 'indirectbr' ) ) ( (lv_address_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= '[' (otherlv_4= 'label' ( (lv_destinations_5_0= ruleBasicBlockRef ) ) (otherlv_6= ',' otherlv_7= 'label' ( (lv_destinations_8_0= ruleBasicBlockRef ) ) )* )? otherlv_9= ']' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6164:2: ( (lv_opcode_0_0= 'indirectbr' ) ) ( (lv_address_1_0= ruleTypedValue ) ) otherlv_2= ',' otherlv_3= '[' (otherlv_4= 'label' ( (lv_destinations_5_0= ruleBasicBlockRef ) ) (otherlv_6= ',' otherlv_7= 'label' ( (lv_destinations_8_0= ruleBasicBlockRef ) ) )* )? otherlv_9= ']'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6164:2: ( (lv_opcode_0_0= 'indirectbr' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6165:1: (lv_opcode_0_0= 'indirectbr' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6165:1: (lv_opcode_0_0= 'indirectbr' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6166:3: lv_opcode_0_0= 'indirectbr'
              {
              lv_opcode_0_0=(Token)match(input,127,FollowSets001.FOLLOW_127_in_ruleInstruction_indirectbr13398); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_indirectbrAccess().getOpcodeIndirectbrKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_indirectbrRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "indirectbr");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6179:2: ( (lv_address_1_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6180:1: (lv_address_1_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6180:1: (lv_address_1_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6181:3: lv_address_1_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_indirectbrAccess().getAddressTypedValueParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_indirectbr13432);
              lv_address_1_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_indirectbrRule());
                	        }
                       		set(
                       			current, 
                       			"address",
                        		lv_address_1_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_indirectbr13444); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getInstruction_indirectbrAccess().getCommaKeyword_2());
                    
              }
              otherlv_3=(Token)match(input,78,FollowSets001.FOLLOW_78_in_ruleInstruction_indirectbr13456); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getInstruction_indirectbrAccess().getLeftSquareBracketKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6205:1: (otherlv_4= 'label' ( (lv_destinations_5_0= ruleBasicBlockRef ) ) (otherlv_6= ',' otherlv_7= 'label' ( (lv_destinations_8_0= ruleBasicBlockRef ) ) )* )?
              int alt83=2;
              int LA83_0 = input.LA(1);
  
              if ( (LA83_0==125) ) {
                  alt83=1;
              }
              switch (alt83) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6205:3: otherlv_4= 'label' ( (lv_destinations_5_0= ruleBasicBlockRef ) ) (otherlv_6= ',' otherlv_7= 'label' ( (lv_destinations_8_0= ruleBasicBlockRef ) ) )*
                      {
                      otherlv_4=(Token)match(input,125,FollowSets001.FOLLOW_125_in_ruleInstruction_indirectbr13469); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_4, grammarAccess.getInstruction_indirectbrAccess().getLabelKeyword_4_0());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6209:1: ( (lv_destinations_5_0= ruleBasicBlockRef ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6210:1: (lv_destinations_5_0= ruleBasicBlockRef )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6210:1: (lv_destinations_5_0= ruleBasicBlockRef )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6211:3: lv_destinations_5_0= ruleBasicBlockRef
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_indirectbrAccess().getDestinationsBasicBlockRefParserRuleCall_4_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_indirectbr13490);
                      lv_destinations_5_0=ruleBasicBlockRef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_indirectbrRule());
                        	        }
                               		add(
                               			current, 
                               			"destinations",
                                		lv_destinations_5_0, 
                                		"BasicBlockRef");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6227:2: (otherlv_6= ',' otherlv_7= 'label' ( (lv_destinations_8_0= ruleBasicBlockRef ) ) )*
                      loop82:
                      do {
                          int alt82=2;
                          int LA82_0 = input.LA(1);
  
                          if ( (LA82_0==38) ) {
                              alt82=1;
                          }
  
  
                          switch (alt82) {
                      	case 1 :
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6227:4: otherlv_6= ',' otherlv_7= 'label' ( (lv_destinations_8_0= ruleBasicBlockRef ) )
                      	    {
                      	    otherlv_6=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_indirectbr13503); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	          	newLeafNode(otherlv_6, grammarAccess.getInstruction_indirectbrAccess().getCommaKeyword_4_2_0());
                      	          
                      	    }
                      	    otherlv_7=(Token)match(input,125,FollowSets001.FOLLOW_125_in_ruleInstruction_indirectbr13515); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	          	newLeafNode(otherlv_7, grammarAccess.getInstruction_indirectbrAccess().getLabelKeyword_4_2_1());
                      	          
                      	    }
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6235:1: ( (lv_destinations_8_0= ruleBasicBlockRef ) )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6236:1: (lv_destinations_8_0= ruleBasicBlockRef )
                      	    {
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6236:1: (lv_destinations_8_0= ruleBasicBlockRef )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6237:3: lv_destinations_8_0= ruleBasicBlockRef
                      	    {
                      	    if ( state.backtracking==0 ) {
                      	       
                      	      	        newCompositeNode(grammarAccess.getInstruction_indirectbrAccess().getDestinationsBasicBlockRefParserRuleCall_4_2_2_0()); 
                      	      	    
                      	    }
                      	    pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_indirectbr13536);
                      	    lv_destinations_8_0=ruleBasicBlockRef();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      	        if (current==null) {
                      	      	            current = createModelElementForParent(grammarAccess.getInstruction_indirectbrRule());
                      	      	        }
                      	             		add(
                      	             			current, 
                      	             			"destinations",
                      	              		lv_destinations_8_0, 
                      	              		"BasicBlockRef");
                      	      	        afterParserOrEnumRuleCall();
                      	      	    
                      	    }
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop82;
                          }
                      } while (true);
  
  
                      }
                      break;
  
              }
  
              otherlv_9=(Token)match(input,79,FollowSets001.FOLLOW_79_in_ruleInstruction_indirectbr13552); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_9, grammarAccess.getInstruction_indirectbrAccess().getRightSquareBracketKeyword_5());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_indirectbr"
  
  
      // $ANTLR start "entryRuleInstruction_invoke_void"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6265:1: entryRuleInstruction_invoke_void returns [EObject current=null] : iv_ruleInstruction_invoke_void= ruleInstruction_invoke_void EOF ;
      public final EObject entryRuleInstruction_invoke_void() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_invoke_void = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6266:2: (iv_ruleInstruction_invoke_void= ruleInstruction_invoke_void EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6267:2: iv_ruleInstruction_invoke_void= ruleInstruction_invoke_void EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_invoke_voidRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_invoke_void_in_entryRuleInstruction_invoke_void13588);
              iv_ruleInstruction_invoke_void=ruleInstruction_invoke_void();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_invoke_void; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_invoke_void13598); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_invoke_void"
  
  
      // $ANTLR start "ruleInstruction_invoke_void"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6274:1: ruleInstruction_invoke_void returns [EObject current=null] : ( ( (lv_opcode_0_0= 'invoke' ) ) ( (lv_cconv_1_0= ruleCConv ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) ) ( (lv_type_6_0= ruleVoidType ) ) ( (lv_callee_7_0= ruleCallee ) ) ( (lv_args_8_0= ruleArgList ) ) ( (lv_attributes_9_0= ruleFunctionAttributes ) )? otherlv_10= 'to' otherlv_11= 'label' ( (lv_toLabel_12_0= ruleBasicBlockRef ) ) otherlv_13= 'unwind' otherlv_14= 'label' ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) ) ) ;
      public final EObject ruleInstruction_invoke_void() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_3=null;
          Token otherlv_4=null;
          Token otherlv_5=null;
          Token otherlv_10=null;
          Token otherlv_11=null;
          Token otherlv_13=null;
          Token otherlv_14=null;
          EObject lv_cconv_1_0 = null;
  
          EObject lv_type_6_0 = null;
  
          EObject lv_callee_7_0 = null;
  
          EObject lv_args_8_0 = null;
  
          EObject lv_attributes_9_0 = null;
  
          EObject lv_toLabel_12_0 = null;
  
          EObject lv_exceptionLabel_15_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6277:28: ( ( ( (lv_opcode_0_0= 'invoke' ) ) ( (lv_cconv_1_0= ruleCConv ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) ) ( (lv_type_6_0= ruleVoidType ) ) ( (lv_callee_7_0= ruleCallee ) ) ( (lv_args_8_0= ruleArgList ) ) ( (lv_attributes_9_0= ruleFunctionAttributes ) )? otherlv_10= 'to' otherlv_11= 'label' ( (lv_toLabel_12_0= ruleBasicBlockRef ) ) otherlv_13= 'unwind' otherlv_14= 'label' ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6278:1: ( ( (lv_opcode_0_0= 'invoke' ) ) ( (lv_cconv_1_0= ruleCConv ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) ) ( (lv_type_6_0= ruleVoidType ) ) ( (lv_callee_7_0= ruleCallee ) ) ( (lv_args_8_0= ruleArgList ) ) ( (lv_attributes_9_0= ruleFunctionAttributes ) )? otherlv_10= 'to' otherlv_11= 'label' ( (lv_toLabel_12_0= ruleBasicBlockRef ) ) otherlv_13= 'unwind' otherlv_14= 'label' ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6278:1: ( ( (lv_opcode_0_0= 'invoke' ) ) ( (lv_cconv_1_0= ruleCConv ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) ) ( (lv_type_6_0= ruleVoidType ) ) ( (lv_callee_7_0= ruleCallee ) ) ( (lv_args_8_0= ruleArgList ) ) ( (lv_attributes_9_0= ruleFunctionAttributes ) )? otherlv_10= 'to' otherlv_11= 'label' ( (lv_toLabel_12_0= ruleBasicBlockRef ) ) otherlv_13= 'unwind' otherlv_14= 'label' ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6278:2: ( (lv_opcode_0_0= 'invoke' ) ) ( (lv_cconv_1_0= ruleCConv ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) ) ( (lv_type_6_0= ruleVoidType ) ) ( (lv_callee_7_0= ruleCallee ) ) ( (lv_args_8_0= ruleArgList ) ) ( (lv_attributes_9_0= ruleFunctionAttributes ) )? otherlv_10= 'to' otherlv_11= 'label' ( (lv_toLabel_12_0= ruleBasicBlockRef ) ) otherlv_13= 'unwind' otherlv_14= 'label' ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6278:2: ( (lv_opcode_0_0= 'invoke' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6279:1: (lv_opcode_0_0= 'invoke' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6279:1: (lv_opcode_0_0= 'invoke' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6280:3: lv_opcode_0_0= 'invoke'
              {
              lv_opcode_0_0=(Token)match(input,128,FollowSets001.FOLLOW_128_in_ruleInstruction_invoke_void13641); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_invoke_voidAccess().getOpcodeInvokeKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_invoke_voidRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "invoke");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6293:2: ( (lv_cconv_1_0= ruleCConv ) )?
              int alt84=2;
              int LA84_0 = input.LA(1);
  
              if ( ((LA84_0>=241 && LA84_0<=262)) ) {
                  alt84=1;
              }
              switch (alt84) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6294:1: (lv_cconv_1_0= ruleCConv )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6294:1: (lv_cconv_1_0= ruleCConv )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6295:3: lv_cconv_1_0= ruleCConv
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_invoke_voidAccess().getCconvCConvParserRuleCall_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleCConv_in_ruleInstruction_invoke_void13675);
                      lv_cconv_1_0=ruleCConv();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_voidRule());
                        	        }
                               		set(
                               			current, 
                               			"cconv",
                                		lv_cconv_1_0, 
                                		"CConv");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6311:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6313:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6313:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6314:2: ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* )
              {
              getUnorderedGroupHelper().enter(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2());
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6317:2: ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6318:3: ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6318:3: ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )*
              loop85:
              do {
                  int alt85=4;
                  int LA85_0 = input.LA(1);
  
                  if ( LA85_0 ==129 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 0) ) {
                      alt85=1;
                  }
                  else if ( LA85_0 ==130 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 1) ) {
                      alt85=2;
                  }
                  else if ( LA85_0 ==131 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 2) ) {
                      alt85=3;
                  }
  
  
                  switch (alt85) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6320:4: ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6320:4: ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6321:5: {...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 0) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_void", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 0)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6321:120: ( ({...}? => (otherlv_3= 'zeroext' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6322:6: ({...}? => (otherlv_3= 'zeroext' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 0);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6325:6: ({...}? => (otherlv_3= 'zeroext' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6325:7: {...}? => (otherlv_3= 'zeroext' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_void", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6325:16: (otherlv_3= 'zeroext' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6325:18: otherlv_3= 'zeroext'
              	    {
              	    otherlv_3=(Token)match(input,129,FollowSets001.FOLLOW_129_in_ruleInstruction_invoke_void13734); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_3, grammarAccess.getInstruction_invoke_voidAccess().getZeroextKeyword_2_0());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 2 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6336:4: ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6336:4: ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6337:5: {...}? => ( ({...}? => (otherlv_4= 'signext' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 1) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_void", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 1)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6337:120: ( ({...}? => (otherlv_4= 'signext' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6338:6: ({...}? => (otherlv_4= 'signext' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 1);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6341:6: ({...}? => (otherlv_4= 'signext' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6341:7: {...}? => (otherlv_4= 'signext' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_void", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6341:16: (otherlv_4= 'signext' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6341:18: otherlv_4= 'signext'
              	    {
              	    otherlv_4=(Token)match(input,130,FollowSets001.FOLLOW_130_in_ruleInstruction_invoke_void13802); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_4, grammarAccess.getInstruction_invoke_voidAccess().getSignextKeyword_2_1());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 3 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6352:4: ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6352:4: ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6353:5: {...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 2) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_void", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 2)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6353:120: ( ({...}? => (otherlv_5= 'inreg' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6354:6: ({...}? => (otherlv_5= 'inreg' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2(), 2);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6357:6: ({...}? => (otherlv_5= 'inreg' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6357:7: {...}? => (otherlv_5= 'inreg' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_void", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6357:16: (otherlv_5= 'inreg' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6357:18: otherlv_5= 'inreg'
              	    {
              	    otherlv_5=(Token)match(input,131,FollowSets001.FOLLOW_131_in_ruleInstruction_invoke_void13870); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_5, grammarAccess.getInstruction_invoke_voidAccess().getInregKeyword_2_2());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop85;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              getUnorderedGroupHelper().leave(grammarAccess.getInstruction_invoke_voidAccess().getUnorderedGroup_2());
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6375:2: ( (lv_type_6_0= ruleVoidType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6376:1: (lv_type_6_0= ruleVoidType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6376:1: (lv_type_6_0= ruleVoidType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6377:3: lv_type_6_0= ruleVoidType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_invoke_voidAccess().getTypeVoidTypeParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleVoidType_in_ruleInstruction_invoke_void13932);
              lv_type_6_0=ruleVoidType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_voidRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_6_0, 
                        		"VoidType");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6393:2: ( (lv_callee_7_0= ruleCallee ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6394:1: (lv_callee_7_0= ruleCallee )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6394:1: (lv_callee_7_0= ruleCallee )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6395:3: lv_callee_7_0= ruleCallee
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_invoke_voidAccess().getCalleeCalleeParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleCallee_in_ruleInstruction_invoke_void13953);
              lv_callee_7_0=ruleCallee();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_voidRule());
                	        }
                       		set(
                       			current, 
                       			"callee",
                        		lv_callee_7_0, 
                        		"Callee");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6411:2: ( (lv_args_8_0= ruleArgList ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6412:1: (lv_args_8_0= ruleArgList )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6412:1: (lv_args_8_0= ruleArgList )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6413:3: lv_args_8_0= ruleArgList
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_invoke_voidAccess().getArgsArgListParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleArgList_in_ruleInstruction_invoke_void13974);
              lv_args_8_0=ruleArgList();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_voidRule());
                	        }
                       		set(
                       			current, 
                       			"args",
                        		lv_args_8_0, 
                        		"ArgList");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6429:2: ( (lv_attributes_9_0= ruleFunctionAttributes ) )?
              int alt86=2;
              int LA86_0 = input.LA(1);
  
              if ( (LA86_0==RULE_ATTRIBUTE_ID||(LA86_0>=93 && LA86_0<=121)) ) {
                  alt86=1;
              }
              switch (alt86) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6430:1: (lv_attributes_9_0= ruleFunctionAttributes )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6430:1: (lv_attributes_9_0= ruleFunctionAttributes )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6431:3: lv_attributes_9_0= ruleFunctionAttributes
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_invoke_voidAccess().getAttributesFunctionAttributesParserRuleCall_6_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleFunctionAttributes_in_ruleInstruction_invoke_void13995);
                      lv_attributes_9_0=ruleFunctionAttributes();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_voidRule());
                        	        }
                               		set(
                               			current, 
                               			"attributes",
                                		lv_attributes_9_0, 
                                		"FunctionAttributes");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              otherlv_10=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleInstruction_invoke_void14008); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_10, grammarAccess.getInstruction_invoke_voidAccess().getToKeyword_7());
                    
              }
              otherlv_11=(Token)match(input,125,FollowSets001.FOLLOW_125_in_ruleInstruction_invoke_void14020); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_11, grammarAccess.getInstruction_invoke_voidAccess().getLabelKeyword_8());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6455:1: ( (lv_toLabel_12_0= ruleBasicBlockRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6456:1: (lv_toLabel_12_0= ruleBasicBlockRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6456:1: (lv_toLabel_12_0= ruleBasicBlockRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6457:3: lv_toLabel_12_0= ruleBasicBlockRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_invoke_voidAccess().getToLabelBasicBlockRefParserRuleCall_9_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_invoke_void14041);
              lv_toLabel_12_0=ruleBasicBlockRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_voidRule());
                	        }
                       		set(
                       			current, 
                       			"toLabel",
                        		lv_toLabel_12_0, 
                        		"BasicBlockRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_13=(Token)match(input,132,FollowSets001.FOLLOW_132_in_ruleInstruction_invoke_void14053); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_13, grammarAccess.getInstruction_invoke_voidAccess().getUnwindKeyword_10());
                    
              }
              otherlv_14=(Token)match(input,125,FollowSets001.FOLLOW_125_in_ruleInstruction_invoke_void14065); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_14, grammarAccess.getInstruction_invoke_voidAccess().getLabelKeyword_11());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6481:1: ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6482:1: (lv_exceptionLabel_15_0= ruleBasicBlockRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6482:1: (lv_exceptionLabel_15_0= ruleBasicBlockRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6483:3: lv_exceptionLabel_15_0= ruleBasicBlockRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_invoke_voidAccess().getExceptionLabelBasicBlockRefParserRuleCall_12_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_invoke_void14086);
              lv_exceptionLabel_15_0=ruleBasicBlockRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_voidRule());
                	        }
                       		set(
                       			current, 
                       			"exceptionLabel",
                        		lv_exceptionLabel_15_0, 
                        		"BasicBlockRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_invoke_void"
  
  
      // $ANTLR start "entryRuleInstruction_invoke_nonVoid"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6507:1: entryRuleInstruction_invoke_nonVoid returns [EObject current=null] : iv_ruleInstruction_invoke_nonVoid= ruleInstruction_invoke_nonVoid EOF ;
      public final EObject entryRuleInstruction_invoke_nonVoid() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_invoke_nonVoid = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6508:2: (iv_ruleInstruction_invoke_nonVoid= ruleInstruction_invoke_nonVoid EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6509:2: iv_ruleInstruction_invoke_nonVoid= ruleInstruction_invoke_nonVoid EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_invoke_nonVoidRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_invoke_nonVoid_in_entryRuleInstruction_invoke_nonVoid14122);
              iv_ruleInstruction_invoke_nonVoid=ruleInstruction_invoke_nonVoid();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_invoke_nonVoid; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_invoke_nonVoid14132); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_invoke_nonVoid"
  
  
      // $ANTLR start "ruleInstruction_invoke_nonVoid"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6516:1: ruleInstruction_invoke_nonVoid returns [EObject current=null] : ( ( (lv_opcode_0_0= 'invoke' ) ) ( (lv_cconv_1_0= ruleCConv ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) ) ( (lv_type_6_0= ruleNonVoidType ) ) ( (lv_callee_7_0= ruleCallee ) ) ( (lv_args_8_0= ruleArgList ) ) ( (lv_attributes_9_0= ruleFunctionAttributes ) )? otherlv_10= 'to' otherlv_11= 'label' ( (lv_toLabel_12_0= ruleBasicBlockRef ) ) otherlv_13= 'unwind' otherlv_14= 'label' ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) ) ) ;
      public final EObject ruleInstruction_invoke_nonVoid() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_3=null;
          Token otherlv_4=null;
          Token otherlv_5=null;
          Token otherlv_10=null;
          Token otherlv_11=null;
          Token otherlv_13=null;
          Token otherlv_14=null;
          EObject lv_cconv_1_0 = null;
  
          EObject lv_type_6_0 = null;
  
          EObject lv_callee_7_0 = null;
  
          EObject lv_args_8_0 = null;
  
          EObject lv_attributes_9_0 = null;
  
          EObject lv_toLabel_12_0 = null;
  
          EObject lv_exceptionLabel_15_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6519:28: ( ( ( (lv_opcode_0_0= 'invoke' ) ) ( (lv_cconv_1_0= ruleCConv ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) ) ( (lv_type_6_0= ruleNonVoidType ) ) ( (lv_callee_7_0= ruleCallee ) ) ( (lv_args_8_0= ruleArgList ) ) ( (lv_attributes_9_0= ruleFunctionAttributes ) )? otherlv_10= 'to' otherlv_11= 'label' ( (lv_toLabel_12_0= ruleBasicBlockRef ) ) otherlv_13= 'unwind' otherlv_14= 'label' ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6520:1: ( ( (lv_opcode_0_0= 'invoke' ) ) ( (lv_cconv_1_0= ruleCConv ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) ) ( (lv_type_6_0= ruleNonVoidType ) ) ( (lv_callee_7_0= ruleCallee ) ) ( (lv_args_8_0= ruleArgList ) ) ( (lv_attributes_9_0= ruleFunctionAttributes ) )? otherlv_10= 'to' otherlv_11= 'label' ( (lv_toLabel_12_0= ruleBasicBlockRef ) ) otherlv_13= 'unwind' otherlv_14= 'label' ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6520:1: ( ( (lv_opcode_0_0= 'invoke' ) ) ( (lv_cconv_1_0= ruleCConv ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) ) ( (lv_type_6_0= ruleNonVoidType ) ) ( (lv_callee_7_0= ruleCallee ) ) ( (lv_args_8_0= ruleArgList ) ) ( (lv_attributes_9_0= ruleFunctionAttributes ) )? otherlv_10= 'to' otherlv_11= 'label' ( (lv_toLabel_12_0= ruleBasicBlockRef ) ) otherlv_13= 'unwind' otherlv_14= 'label' ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6520:2: ( (lv_opcode_0_0= 'invoke' ) ) ( (lv_cconv_1_0= ruleCConv ) )? ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) ) ( (lv_type_6_0= ruleNonVoidType ) ) ( (lv_callee_7_0= ruleCallee ) ) ( (lv_args_8_0= ruleArgList ) ) ( (lv_attributes_9_0= ruleFunctionAttributes ) )? otherlv_10= 'to' otherlv_11= 'label' ( (lv_toLabel_12_0= ruleBasicBlockRef ) ) otherlv_13= 'unwind' otherlv_14= 'label' ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6520:2: ( (lv_opcode_0_0= 'invoke' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6521:1: (lv_opcode_0_0= 'invoke' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6521:1: (lv_opcode_0_0= 'invoke' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6522:3: lv_opcode_0_0= 'invoke'
              {
              lv_opcode_0_0=(Token)match(input,128,FollowSets001.FOLLOW_128_in_ruleInstruction_invoke_nonVoid14175); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_invoke_nonVoidAccess().getOpcodeInvokeKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_invoke_nonVoidRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "invoke");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6535:2: ( (lv_cconv_1_0= ruleCConv ) )?
              int alt87=2;
              int LA87_0 = input.LA(1);
  
              if ( ((LA87_0>=241 && LA87_0<=262)) ) {
                  alt87=1;
              }
              switch (alt87) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6536:1: (lv_cconv_1_0= ruleCConv )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6536:1: (lv_cconv_1_0= ruleCConv )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6537:3: lv_cconv_1_0= ruleCConv
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_invoke_nonVoidAccess().getCconvCConvParserRuleCall_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleCConv_in_ruleInstruction_invoke_nonVoid14209);
                      lv_cconv_1_0=ruleCConv();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_nonVoidRule());
                        	        }
                               		set(
                               			current, 
                               			"cconv",
                                		lv_cconv_1_0, 
                                		"CConv");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6553:3: ( ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6555:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6555:1: ( ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6556:2: ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* )
              {
              getUnorderedGroupHelper().enter(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2());
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6559:2: ( ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6560:3: ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6560:3: ( ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) ) )*
              loop88:
              do {
                  int alt88=4;
                  int LA88_0 = input.LA(1);
  
                  if ( LA88_0 ==129 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 0) ) {
                      alt88=1;
                  }
                  else if ( LA88_0 ==130 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 1) ) {
                      alt88=2;
                  }
                  else if ( LA88_0 ==131 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 2) ) {
                      alt88=3;
                  }
  
  
                  switch (alt88) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6562:4: ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6562:4: ({...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6563:5: {...}? => ( ({...}? => (otherlv_3= 'zeroext' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 0) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_nonVoid", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 0)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6563:123: ( ({...}? => (otherlv_3= 'zeroext' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6564:6: ({...}? => (otherlv_3= 'zeroext' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 0);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6567:6: ({...}? => (otherlv_3= 'zeroext' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6567:7: {...}? => (otherlv_3= 'zeroext' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_nonVoid", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6567:16: (otherlv_3= 'zeroext' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6567:18: otherlv_3= 'zeroext'
              	    {
              	    otherlv_3=(Token)match(input,129,FollowSets001.FOLLOW_129_in_ruleInstruction_invoke_nonVoid14268); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_3, grammarAccess.getInstruction_invoke_nonVoidAccess().getZeroextKeyword_2_0());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 2 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6578:4: ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6578:4: ({...}? => ( ({...}? => (otherlv_4= 'signext' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6579:5: {...}? => ( ({...}? => (otherlv_4= 'signext' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 1) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_nonVoid", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 1)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6579:123: ( ({...}? => (otherlv_4= 'signext' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6580:6: ({...}? => (otherlv_4= 'signext' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 1);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6583:6: ({...}? => (otherlv_4= 'signext' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6583:7: {...}? => (otherlv_4= 'signext' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_nonVoid", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6583:16: (otherlv_4= 'signext' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6583:18: otherlv_4= 'signext'
              	    {
              	    otherlv_4=(Token)match(input,130,FollowSets001.FOLLOW_130_in_ruleInstruction_invoke_nonVoid14336); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_4, grammarAccess.getInstruction_invoke_nonVoidAccess().getSignextKeyword_2_1());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 3 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6594:4: ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6594:4: ({...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6595:5: {...}? => ( ({...}? => (otherlv_5= 'inreg' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 2) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_nonVoid", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 2)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6595:123: ( ({...}? => (otherlv_5= 'inreg' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6596:6: ({...}? => (otherlv_5= 'inreg' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2(), 2);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6599:6: ({...}? => (otherlv_5= 'inreg' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6599:7: {...}? => (otherlv_5= 'inreg' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_invoke_nonVoid", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6599:16: (otherlv_5= 'inreg' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6599:18: otherlv_5= 'inreg'
              	    {
              	    otherlv_5=(Token)match(input,131,FollowSets001.FOLLOW_131_in_ruleInstruction_invoke_nonVoid14404); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_5, grammarAccess.getInstruction_invoke_nonVoidAccess().getInregKeyword_2_2());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop88;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              getUnorderedGroupHelper().leave(grammarAccess.getInstruction_invoke_nonVoidAccess().getUnorderedGroup_2());
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6617:2: ( (lv_type_6_0= ruleNonVoidType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6618:1: (lv_type_6_0= ruleNonVoidType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6618:1: (lv_type_6_0= ruleNonVoidType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6619:3: lv_type_6_0= ruleNonVoidType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_invoke_nonVoidAccess().getTypeNonVoidTypeParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleNonVoidType_in_ruleInstruction_invoke_nonVoid14466);
              lv_type_6_0=ruleNonVoidType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_nonVoidRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_6_0, 
                        		"NonVoidType");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6635:2: ( (lv_callee_7_0= ruleCallee ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6636:1: (lv_callee_7_0= ruleCallee )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6636:1: (lv_callee_7_0= ruleCallee )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6637:3: lv_callee_7_0= ruleCallee
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_invoke_nonVoidAccess().getCalleeCalleeParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleCallee_in_ruleInstruction_invoke_nonVoid14487);
              lv_callee_7_0=ruleCallee();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_nonVoidRule());
                	        }
                       		set(
                       			current, 
                       			"callee",
                        		lv_callee_7_0, 
                        		"Callee");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6653:2: ( (lv_args_8_0= ruleArgList ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6654:1: (lv_args_8_0= ruleArgList )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6654:1: (lv_args_8_0= ruleArgList )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6655:3: lv_args_8_0= ruleArgList
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_invoke_nonVoidAccess().getArgsArgListParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleArgList_in_ruleInstruction_invoke_nonVoid14508);
              lv_args_8_0=ruleArgList();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_nonVoidRule());
                	        }
                       		set(
                       			current, 
                       			"args",
                        		lv_args_8_0, 
                        		"ArgList");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6671:2: ( (lv_attributes_9_0= ruleFunctionAttributes ) )?
              int alt89=2;
              int LA89_0 = input.LA(1);
  
              if ( (LA89_0==RULE_ATTRIBUTE_ID||(LA89_0>=93 && LA89_0<=121)) ) {
                  alt89=1;
              }
              switch (alt89) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6672:1: (lv_attributes_9_0= ruleFunctionAttributes )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6672:1: (lv_attributes_9_0= ruleFunctionAttributes )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6673:3: lv_attributes_9_0= ruleFunctionAttributes
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_invoke_nonVoidAccess().getAttributesFunctionAttributesParserRuleCall_6_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleFunctionAttributes_in_ruleInstruction_invoke_nonVoid14529);
                      lv_attributes_9_0=ruleFunctionAttributes();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_nonVoidRule());
                        	        }
                               		set(
                               			current, 
                               			"attributes",
                                		lv_attributes_9_0, 
                                		"FunctionAttributes");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              otherlv_10=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleInstruction_invoke_nonVoid14542); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_10, grammarAccess.getInstruction_invoke_nonVoidAccess().getToKeyword_7());
                    
              }
              otherlv_11=(Token)match(input,125,FollowSets001.FOLLOW_125_in_ruleInstruction_invoke_nonVoid14554); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_11, grammarAccess.getInstruction_invoke_nonVoidAccess().getLabelKeyword_8());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6697:1: ( (lv_toLabel_12_0= ruleBasicBlockRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6698:1: (lv_toLabel_12_0= ruleBasicBlockRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6698:1: (lv_toLabel_12_0= ruleBasicBlockRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6699:3: lv_toLabel_12_0= ruleBasicBlockRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_invoke_nonVoidAccess().getToLabelBasicBlockRefParserRuleCall_9_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_invoke_nonVoid14575);
              lv_toLabel_12_0=ruleBasicBlockRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_nonVoidRule());
                	        }
                       		set(
                       			current, 
                       			"toLabel",
                        		lv_toLabel_12_0, 
                        		"BasicBlockRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_13=(Token)match(input,132,FollowSets001.FOLLOW_132_in_ruleInstruction_invoke_nonVoid14587); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_13, grammarAccess.getInstruction_invoke_nonVoidAccess().getUnwindKeyword_10());
                    
              }
              otherlv_14=(Token)match(input,125,FollowSets001.FOLLOW_125_in_ruleInstruction_invoke_nonVoid14599); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_14, grammarAccess.getInstruction_invoke_nonVoidAccess().getLabelKeyword_11());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6723:1: ( (lv_exceptionLabel_15_0= ruleBasicBlockRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6724:1: (lv_exceptionLabel_15_0= ruleBasicBlockRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6724:1: (lv_exceptionLabel_15_0= ruleBasicBlockRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6725:3: lv_exceptionLabel_15_0= ruleBasicBlockRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_invoke_nonVoidAccess().getExceptionLabelBasicBlockRefParserRuleCall_12_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_invoke_nonVoid14620);
              lv_exceptionLabel_15_0=ruleBasicBlockRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_invoke_nonVoidRule());
                	        }
                       		set(
                       			current, 
                       			"exceptionLabel",
                        		lv_exceptionLabel_15_0, 
                        		"BasicBlockRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_invoke_nonVoid"
  
  
      // $ANTLR start "entryRuleInstruction_resume"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6749:1: entryRuleInstruction_resume returns [EObject current=null] : iv_ruleInstruction_resume= ruleInstruction_resume EOF ;
      public final EObject entryRuleInstruction_resume() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_resume = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6750:2: (iv_ruleInstruction_resume= ruleInstruction_resume EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6751:2: iv_ruleInstruction_resume= ruleInstruction_resume EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_resumeRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_resume_in_entryRuleInstruction_resume14656);
              iv_ruleInstruction_resume=ruleInstruction_resume();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_resume; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_resume14666); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_resume"
  
  
      // $ANTLR start "ruleInstruction_resume"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6758:1: ruleInstruction_resume returns [EObject current=null] : ( ( (lv_opcode_0_0= 'resume' ) ) ( (lv_value_1_0= ruleTypedValue ) ) ) ;
      public final EObject ruleInstruction_resume() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          EObject lv_value_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6761:28: ( ( ( (lv_opcode_0_0= 'resume' ) ) ( (lv_value_1_0= ruleTypedValue ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6762:1: ( ( (lv_opcode_0_0= 'resume' ) ) ( (lv_value_1_0= ruleTypedValue ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6762:1: ( ( (lv_opcode_0_0= 'resume' ) ) ( (lv_value_1_0= ruleTypedValue ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6762:2: ( (lv_opcode_0_0= 'resume' ) ) ( (lv_value_1_0= ruleTypedValue ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6762:2: ( (lv_opcode_0_0= 'resume' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6763:1: (lv_opcode_0_0= 'resume' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6763:1: (lv_opcode_0_0= 'resume' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6764:3: lv_opcode_0_0= 'resume'
              {
              lv_opcode_0_0=(Token)match(input,133,FollowSets001.FOLLOW_133_in_ruleInstruction_resume14709); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_resumeAccess().getOpcodeResumeKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_resumeRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "resume");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6777:2: ( (lv_value_1_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6778:1: (lv_value_1_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6778:1: (lv_value_1_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6779:3: lv_value_1_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_resumeAccess().getValueTypedValueParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_resume14743);
              lv_value_1_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_resumeRule());
                	        }
                       		set(
                       			current, 
                       			"value",
                        		lv_value_1_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_resume"
  
  
      // $ANTLR start "entryRuleInstruction_unreachable"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6803:1: entryRuleInstruction_unreachable returns [EObject current=null] : iv_ruleInstruction_unreachable= ruleInstruction_unreachable EOF ;
      public final EObject entryRuleInstruction_unreachable() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_unreachable = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6804:2: (iv_ruleInstruction_unreachable= ruleInstruction_unreachable EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6805:2: iv_ruleInstruction_unreachable= ruleInstruction_unreachable EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_unreachableRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_unreachable_in_entryRuleInstruction_unreachable14779);
              iv_ruleInstruction_unreachable=ruleInstruction_unreachable();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_unreachable; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_unreachable14789); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_unreachable"
  
  
      // $ANTLR start "ruleInstruction_unreachable"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6812:1: ruleInstruction_unreachable returns [EObject current=null] : ( (lv_opcode_0_0= 'unreachable' ) ) ;
      public final EObject ruleInstruction_unreachable() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6815:28: ( ( (lv_opcode_0_0= 'unreachable' ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6816:1: ( (lv_opcode_0_0= 'unreachable' ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6816:1: ( (lv_opcode_0_0= 'unreachable' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6817:1: (lv_opcode_0_0= 'unreachable' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6817:1: (lv_opcode_0_0= 'unreachable' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6818:3: lv_opcode_0_0= 'unreachable'
              {
              lv_opcode_0_0=(Token)match(input,134,FollowSets001.FOLLOW_134_in_ruleInstruction_unreachable14831); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_unreachableAccess().getOpcodeUnreachableKeyword_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_unreachableRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "unreachable");
                	    
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_unreachable"
  
  
      // $ANTLR start "entryRuleBasicBlockRef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6839:1: entryRuleBasicBlockRef returns [EObject current=null] : iv_ruleBasicBlockRef= ruleBasicBlockRef EOF ;
      public final EObject entryRuleBasicBlockRef() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleBasicBlockRef = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6840:2: (iv_ruleBasicBlockRef= ruleBasicBlockRef EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6841:2: iv_ruleBasicBlockRef= ruleBasicBlockRef EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getBasicBlockRefRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_entryRuleBasicBlockRef14879);
              iv_ruleBasicBlockRef=ruleBasicBlockRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleBasicBlockRef; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleBasicBlockRef14889); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleBasicBlockRef"
  
  
      // $ANTLR start "ruleBasicBlockRef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6848:1: ruleBasicBlockRef returns [EObject current=null] : ( (otherlv_0= RULE_LOCAL_ID ) ) ;
      public final EObject ruleBasicBlockRef() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6851:28: ( ( (otherlv_0= RULE_LOCAL_ID ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6852:1: ( (otherlv_0= RULE_LOCAL_ID ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6852:1: ( (otherlv_0= RULE_LOCAL_ID ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6853:1: (otherlv_0= RULE_LOCAL_ID )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6853:1: (otherlv_0= RULE_LOCAL_ID )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6854:3: otherlv_0= RULE_LOCAL_ID
              {
              if ( state.backtracking==0 ) {
  
                			if (current==null) {
                	            current = createModelElement(grammarAccess.getBasicBlockRefRule());
                	        }
                        
              }
              otherlv_0=(Token)match(input,RULE_LOCAL_ID,FollowSets001.FOLLOW_RULE_LOCAL_ID_in_ruleBasicBlockRef14933); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                		newLeafNode(otherlv_0, grammarAccess.getBasicBlockRefAccess().getRefBasicBlockCrossReference_0()); 
                	
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleBasicBlockRef"
  
  
      // $ANTLR start "entryRuleBinaryInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6873:1: entryRuleBinaryInstruction returns [EObject current=null] : iv_ruleBinaryInstruction= ruleBinaryInstruction EOF ;
      public final EObject entryRuleBinaryInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleBinaryInstruction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6874:2: (iv_ruleBinaryInstruction= ruleBinaryInstruction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6875:2: iv_ruleBinaryInstruction= ruleBinaryInstruction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getBinaryInstructionRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleBinaryInstruction_in_entryRuleBinaryInstruction14968);
              iv_ruleBinaryInstruction=ruleBinaryInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleBinaryInstruction; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleBinaryInstruction14978); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleBinaryInstruction"
  
  
      // $ANTLR start "ruleBinaryInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6882:1: ruleBinaryInstruction returns [EObject current=null] : (this_Instruction_add_0= ruleInstruction_add | this_Instruction_fadd_1= ruleInstruction_fadd | this_Instruction_sub_2= ruleInstruction_sub | this_Instruction_fsub_3= ruleInstruction_fsub | this_Instruction_mul_4= ruleInstruction_mul | this_Instruction_fmul_5= ruleInstruction_fmul | this_Instruction_udiv_6= ruleInstruction_udiv | this_Instruction_sdiv_7= ruleInstruction_sdiv | this_Instruction_fdiv_8= ruleInstruction_fdiv | this_Instruction_urem_9= ruleInstruction_urem | this_Instruction_srem_10= ruleInstruction_srem | this_Instruction_frem_11= ruleInstruction_frem ) ;
      public final EObject ruleBinaryInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject this_Instruction_add_0 = null;
  
          EObject this_Instruction_fadd_1 = null;
  
          EObject this_Instruction_sub_2 = null;
  
          EObject this_Instruction_fsub_3 = null;
  
          EObject this_Instruction_mul_4 = null;
  
          EObject this_Instruction_fmul_5 = null;
  
          EObject this_Instruction_udiv_6 = null;
  
          EObject this_Instruction_sdiv_7 = null;
  
          EObject this_Instruction_fdiv_8 = null;
  
          EObject this_Instruction_urem_9 = null;
  
          EObject this_Instruction_srem_10 = null;
  
          EObject this_Instruction_frem_11 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6885:28: ( (this_Instruction_add_0= ruleInstruction_add | this_Instruction_fadd_1= ruleInstruction_fadd | this_Instruction_sub_2= ruleInstruction_sub | this_Instruction_fsub_3= ruleInstruction_fsub | this_Instruction_mul_4= ruleInstruction_mul | this_Instruction_fmul_5= ruleInstruction_fmul | this_Instruction_udiv_6= ruleInstruction_udiv | this_Instruction_sdiv_7= ruleInstruction_sdiv | this_Instruction_fdiv_8= ruleInstruction_fdiv | this_Instruction_urem_9= ruleInstruction_urem | this_Instruction_srem_10= ruleInstruction_srem | this_Instruction_frem_11= ruleInstruction_frem ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6886:1: (this_Instruction_add_0= ruleInstruction_add | this_Instruction_fadd_1= ruleInstruction_fadd | this_Instruction_sub_2= ruleInstruction_sub | this_Instruction_fsub_3= ruleInstruction_fsub | this_Instruction_mul_4= ruleInstruction_mul | this_Instruction_fmul_5= ruleInstruction_fmul | this_Instruction_udiv_6= ruleInstruction_udiv | this_Instruction_sdiv_7= ruleInstruction_sdiv | this_Instruction_fdiv_8= ruleInstruction_fdiv | this_Instruction_urem_9= ruleInstruction_urem | this_Instruction_srem_10= ruleInstruction_srem | this_Instruction_frem_11= ruleInstruction_frem )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6886:1: (this_Instruction_add_0= ruleInstruction_add | this_Instruction_fadd_1= ruleInstruction_fadd | this_Instruction_sub_2= ruleInstruction_sub | this_Instruction_fsub_3= ruleInstruction_fsub | this_Instruction_mul_4= ruleInstruction_mul | this_Instruction_fmul_5= ruleInstruction_fmul | this_Instruction_udiv_6= ruleInstruction_udiv | this_Instruction_sdiv_7= ruleInstruction_sdiv | this_Instruction_fdiv_8= ruleInstruction_fdiv | this_Instruction_urem_9= ruleInstruction_urem | this_Instruction_srem_10= ruleInstruction_srem | this_Instruction_frem_11= ruleInstruction_frem )
              int alt90=12;
              switch ( input.LA(1) ) {
              case 52:
                  {
                  alt90=1;
                  }
                  break;
              case 63:
                  {
                  alt90=2;
                  }
                  break;
              case 53:
                  {
                  alt90=3;
                  }
                  break;
              case 64:
                  {
                  alt90=4;
                  }
                  break;
              case 54:
                  {
                  alt90=5;
                  }
                  break;
              case 65:
                  {
                  alt90=6;
                  }
                  break;
              case 59:
                  {
                  alt90=7;
                  }
                  break;
              case 58:
                  {
                  alt90=8;
                  }
                  break;
              case 66:
                  {
                  alt90=9;
                  }
                  break;
              case 67:
                  {
                  alt90=10;
                  }
                  break;
              case 68:
                  {
                  alt90=11;
                  }
                  break;
              case 69:
                  {
                  alt90=12;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 90, 0, input);
  
                  throw nvae;
              }
  
              switch (alt90) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6887:5: this_Instruction_add_0= ruleInstruction_add
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_addParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_add_in_ruleBinaryInstruction15025);
                      this_Instruction_add_0=ruleInstruction_add();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_add_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6897:5: this_Instruction_fadd_1= ruleInstruction_fadd
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_faddParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_fadd_in_ruleBinaryInstruction15052);
                      this_Instruction_fadd_1=ruleInstruction_fadd();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_fadd_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6907:5: this_Instruction_sub_2= ruleInstruction_sub
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_subParserRuleCall_2()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_sub_in_ruleBinaryInstruction15079);
                      this_Instruction_sub_2=ruleInstruction_sub();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_sub_2; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6917:5: this_Instruction_fsub_3= ruleInstruction_fsub
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_fsubParserRuleCall_3()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_fsub_in_ruleBinaryInstruction15106);
                      this_Instruction_fsub_3=ruleInstruction_fsub();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_fsub_3; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6927:5: this_Instruction_mul_4= ruleInstruction_mul
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_mulParserRuleCall_4()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_mul_in_ruleBinaryInstruction15133);
                      this_Instruction_mul_4=ruleInstruction_mul();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_mul_4; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6937:5: this_Instruction_fmul_5= ruleInstruction_fmul
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_fmulParserRuleCall_5()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_fmul_in_ruleBinaryInstruction15160);
                      this_Instruction_fmul_5=ruleInstruction_fmul();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_fmul_5; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6947:5: this_Instruction_udiv_6= ruleInstruction_udiv
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_udivParserRuleCall_6()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_udiv_in_ruleBinaryInstruction15187);
                      this_Instruction_udiv_6=ruleInstruction_udiv();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_udiv_6; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6957:5: this_Instruction_sdiv_7= ruleInstruction_sdiv
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_sdivParserRuleCall_7()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_sdiv_in_ruleBinaryInstruction15214);
                      this_Instruction_sdiv_7=ruleInstruction_sdiv();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_sdiv_7; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 9 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6967:5: this_Instruction_fdiv_8= ruleInstruction_fdiv
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_fdivParserRuleCall_8()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_fdiv_in_ruleBinaryInstruction15241);
                      this_Instruction_fdiv_8=ruleInstruction_fdiv();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_fdiv_8; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 10 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6977:5: this_Instruction_urem_9= ruleInstruction_urem
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_uremParserRuleCall_9()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_urem_in_ruleBinaryInstruction15268);
                      this_Instruction_urem_9=ruleInstruction_urem();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_urem_9; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 11 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6987:5: this_Instruction_srem_10= ruleInstruction_srem
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_sremParserRuleCall_10()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_srem_in_ruleBinaryInstruction15295);
                      this_Instruction_srem_10=ruleInstruction_srem();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_srem_10; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 12 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:6997:5: this_Instruction_frem_11= ruleInstruction_frem
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBinaryInstructionAccess().getInstruction_fremParserRuleCall_11()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_frem_in_ruleBinaryInstruction15322);
                      this_Instruction_frem_11=ruleInstruction_frem();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_frem_11; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleBinaryInstruction"
  
  
      // $ANTLR start "entryRuleInstruction_add"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7013:1: entryRuleInstruction_add returns [EObject current=null] : iv_ruleInstruction_add= ruleInstruction_add EOF ;
      public final EObject entryRuleInstruction_add() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_add = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7014:2: (iv_ruleInstruction_add= ruleInstruction_add EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7015:2: iv_ruleInstruction_add= ruleInstruction_add EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_addRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_add_in_entryRuleInstruction_add15357);
              iv_ruleInstruction_add=ruleInstruction_add();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_add; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_add15367); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_add"
  
  
      // $ANTLR start "ruleInstruction_add"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7022:1: ruleInstruction_add returns [EObject current=null] : ( ( (lv_opcode_0_0= 'add' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_add() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_3=null;
          Token otherlv_6=null;
          EObject lv_type_4_0 = null;
  
          EObject lv_op1_5_0 = null;
  
          EObject lv_op2_7_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7025:28: ( ( ( (lv_opcode_0_0= 'add' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7026:1: ( ( (lv_opcode_0_0= 'add' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7026:1: ( ( (lv_opcode_0_0= 'add' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7026:2: ( (lv_opcode_0_0= 'add' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7026:2: ( (lv_opcode_0_0= 'add' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7027:1: (lv_opcode_0_0= 'add' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7027:1: (lv_opcode_0_0= 'add' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7028:3: lv_opcode_0_0= 'add'
              {
              lv_opcode_0_0=(Token)match(input,52,FollowSets001.FOLLOW_52_in_ruleInstruction_add15410); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_addAccess().getOpcodeAddKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_addRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "add");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7041:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7043:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7043:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7044:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* )
              {
              getUnorderedGroupHelper().enter(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1());
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7047:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7048:3: ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7048:3: ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )*
              loop91:
              do {
                  int alt91=3;
                  int LA91_0 = input.LA(1);
  
                  if ( LA91_0 ==56 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1(), 0) ) {
                      alt91=1;
                  }
                  else if ( LA91_0 ==57 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1(), 1) ) {
                      alt91=2;
                  }
  
  
                  switch (alt91) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7050:4: ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7050:4: ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7051:5: {...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1(), 0) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_add", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1(), 0)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7051:112: ( ({...}? => (otherlv_2= 'nuw' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7052:6: ({...}? => (otherlv_2= 'nuw' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1(), 0);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7055:6: ({...}? => (otherlv_2= 'nuw' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7055:7: {...}? => (otherlv_2= 'nuw' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_add", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7055:16: (otherlv_2= 'nuw' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7055:18: otherlv_2= 'nuw'
              	    {
              	    otherlv_2=(Token)match(input,56,FollowSets001.FOLLOW_56_in_ruleInstruction_add15481); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_2, grammarAccess.getInstruction_addAccess().getNuwKeyword_1_0());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 2 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7066:4: ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7066:4: ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7067:5: {...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1(), 1) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_add", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1(), 1)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7067:112: ( ({...}? => (otherlv_3= 'nsw' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7068:6: ({...}? => (otherlv_3= 'nsw' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1(), 1);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7071:6: ({...}? => (otherlv_3= 'nsw' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7071:7: {...}? => (otherlv_3= 'nsw' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_add", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7071:16: (otherlv_3= 'nsw' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7071:18: otherlv_3= 'nsw'
              	    {
              	    otherlv_3=(Token)match(input,57,FollowSets001.FOLLOW_57_in_ruleInstruction_add15549); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_3, grammarAccess.getInstruction_addAccess().getNswKeyword_1_1());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop91;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              getUnorderedGroupHelper().leave(grammarAccess.getInstruction_addAccess().getUnorderedGroup_1());
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7089:2: ( (lv_type_4_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7090:1: (lv_type_4_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7090:1: (lv_type_4_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7091:3: lv_type_4_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_addAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_add15611);
              lv_type_4_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_addRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_4_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7107:2: ( (lv_op1_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7108:1: (lv_op1_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7108:1: (lv_op1_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7109:3: lv_op1_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_addAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_add15632);
              lv_op1_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_addRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_6=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_add15644); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_6, grammarAccess.getInstruction_addAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7129:1: ( (lv_op2_7_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7130:1: (lv_op2_7_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7130:1: (lv_op2_7_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7131:3: lv_op2_7_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_addAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_add15665);
              lv_op2_7_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_addRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_7_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_add"
  
  
      // $ANTLR start "entryRuleInstruction_fadd"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7155:1: entryRuleInstruction_fadd returns [EObject current=null] : iv_ruleInstruction_fadd= ruleInstruction_fadd EOF ;
      public final EObject entryRuleInstruction_fadd() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_fadd = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7156:2: (iv_ruleInstruction_fadd= ruleInstruction_fadd EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7157:2: iv_ruleInstruction_fadd= ruleInstruction_fadd EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_faddRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_fadd_in_entryRuleInstruction_fadd15701);
              iv_ruleInstruction_fadd=ruleInstruction_fadd();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_fadd; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_fadd15711); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_fadd"
  
  
      // $ANTLR start "ruleInstruction_fadd"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7164:1: ruleInstruction_fadd returns [EObject current=null] : ( ( (lv_opcode_0_0= 'fadd' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_fadd() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_4=null;
          EObject lv_fastMathFlags_1_0 = null;
  
          EObject lv_type_2_0 = null;
  
          EObject lv_op1_3_0 = null;
  
          EObject lv_op2_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7167:28: ( ( ( (lv_opcode_0_0= 'fadd' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7168:1: ( ( (lv_opcode_0_0= 'fadd' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7168:1: ( ( (lv_opcode_0_0= 'fadd' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7168:2: ( (lv_opcode_0_0= 'fadd' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7168:2: ( (lv_opcode_0_0= 'fadd' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7169:1: (lv_opcode_0_0= 'fadd' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7169:1: (lv_opcode_0_0= 'fadd' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7170:3: lv_opcode_0_0= 'fadd'
              {
              lv_opcode_0_0=(Token)match(input,63,FollowSets001.FOLLOW_63_in_ruleInstruction_fadd15754); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_faddAccess().getOpcodeFaddKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_faddRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "fadd");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7183:2: ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )*
              loop92:
              do {
                  int alt92=2;
                  int LA92_0 = input.LA(1);
  
                  if ( ((LA92_0>=135 && LA92_0<=139)) ) {
                      alt92=1;
                  }
  
  
                  switch (alt92) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7184:1: (lv_fastMathFlags_1_0= ruleFastMathFlag )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7184:1: (lv_fastMathFlags_1_0= ruleFastMathFlag )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7185:3: lv_fastMathFlags_1_0= ruleFastMathFlag
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_faddAccess().getFastMathFlagsFastMathFlagParserRuleCall_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets001.FOLLOW_ruleFastMathFlag_in_ruleInstruction_fadd15788);
              	    lv_fastMathFlags_1_0=ruleFastMathFlag();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_faddRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"fastMathFlags",
              	              		lv_fastMathFlags_1_0, 
              	              		"FastMathFlag");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop92;
                  }
              } while (true);
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7201:3: ( (lv_type_2_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7202:1: (lv_type_2_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7202:1: (lv_type_2_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7203:3: lv_type_2_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_faddAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_fadd15810);
              lv_type_2_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_faddRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_2_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7219:2: ( (lv_op1_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7220:1: (lv_op1_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7220:1: (lv_op1_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7221:3: lv_op1_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_faddAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_fadd15831);
              lv_op1_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_faddRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_fadd15843); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_faddAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7241:1: ( (lv_op2_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7242:1: (lv_op2_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7242:1: (lv_op2_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7243:3: lv_op2_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_faddAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_fadd15864);
              lv_op2_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_faddRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_fadd"
  
  
      // $ANTLR start "entryRuleFastMathFlag"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7267:1: entryRuleFastMathFlag returns [EObject current=null] : iv_ruleFastMathFlag= ruleFastMathFlag EOF ;
      public final EObject entryRuleFastMathFlag() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleFastMathFlag = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7268:2: (iv_ruleFastMathFlag= ruleFastMathFlag EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7269:2: iv_ruleFastMathFlag= ruleFastMathFlag EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getFastMathFlagRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleFastMathFlag_in_entryRuleFastMathFlag15900);
              iv_ruleFastMathFlag=ruleFastMathFlag();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleFastMathFlag; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleFastMathFlag15910); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleFastMathFlag"
  
  
      // $ANTLR start "ruleFastMathFlag"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7276:1: ruleFastMathFlag returns [EObject current=null] : ( () ( ( (lv_kind_1_1= 'nnan' | lv_kind_1_2= 'ninf' | lv_kind_1_3= 'nsz' | lv_kind_1_4= 'arcp' | lv_kind_1_5= 'fast' ) ) ) ) ;
      public final EObject ruleFastMathFlag() throws RecognitionException {
          EObject current = null;
  
          Token lv_kind_1_1=null;
          Token lv_kind_1_2=null;
          Token lv_kind_1_3=null;
          Token lv_kind_1_4=null;
          Token lv_kind_1_5=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7279:28: ( ( () ( ( (lv_kind_1_1= 'nnan' | lv_kind_1_2= 'ninf' | lv_kind_1_3= 'nsz' | lv_kind_1_4= 'arcp' | lv_kind_1_5= 'fast' ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7280:1: ( () ( ( (lv_kind_1_1= 'nnan' | lv_kind_1_2= 'ninf' | lv_kind_1_3= 'nsz' | lv_kind_1_4= 'arcp' | lv_kind_1_5= 'fast' ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7280:1: ( () ( ( (lv_kind_1_1= 'nnan' | lv_kind_1_2= 'ninf' | lv_kind_1_3= 'nsz' | lv_kind_1_4= 'arcp' | lv_kind_1_5= 'fast' ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7280:2: () ( ( (lv_kind_1_1= 'nnan' | lv_kind_1_2= 'ninf' | lv_kind_1_3= 'nsz' | lv_kind_1_4= 'arcp' | lv_kind_1_5= 'fast' ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7280:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7281:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getFastMathFlagAccess().getFastMathFlagAction_0(),
                            current);
                    
              }
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7286:2: ( ( (lv_kind_1_1= 'nnan' | lv_kind_1_2= 'ninf' | lv_kind_1_3= 'nsz' | lv_kind_1_4= 'arcp' | lv_kind_1_5= 'fast' ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7287:1: ( (lv_kind_1_1= 'nnan' | lv_kind_1_2= 'ninf' | lv_kind_1_3= 'nsz' | lv_kind_1_4= 'arcp' | lv_kind_1_5= 'fast' ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7287:1: ( (lv_kind_1_1= 'nnan' | lv_kind_1_2= 'ninf' | lv_kind_1_3= 'nsz' | lv_kind_1_4= 'arcp' | lv_kind_1_5= 'fast' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7288:1: (lv_kind_1_1= 'nnan' | lv_kind_1_2= 'ninf' | lv_kind_1_3= 'nsz' | lv_kind_1_4= 'arcp' | lv_kind_1_5= 'fast' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7288:1: (lv_kind_1_1= 'nnan' | lv_kind_1_2= 'ninf' | lv_kind_1_3= 'nsz' | lv_kind_1_4= 'arcp' | lv_kind_1_5= 'fast' )
              int alt93=5;
              switch ( input.LA(1) ) {
              case 135:
                  {
                  alt93=1;
                  }
                  break;
              case 136:
                  {
                  alt93=2;
                  }
                  break;
              case 137:
                  {
                  alt93=3;
                  }
                  break;
              case 138:
                  {
                  alt93=4;
                  }
                  break;
              case 139:
                  {
                  alt93=5;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 93, 0, input);
  
                  throw nvae;
              }
  
              switch (alt93) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7289:3: lv_kind_1_1= 'nnan'
                      {
                      lv_kind_1_1=(Token)match(input,135,FollowSets001.FOLLOW_135_in_ruleFastMathFlag15964); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_kind_1_1, grammarAccess.getFastMathFlagAccess().getKindNnanKeyword_1_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFastMathFlagRule());
                        	        }
                               		setWithLastConsumed(current, "kind", lv_kind_1_1, null);
                        	    
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7301:8: lv_kind_1_2= 'ninf'
                      {
                      lv_kind_1_2=(Token)match(input,136,FollowSets001.FOLLOW_136_in_ruleFastMathFlag15993); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_kind_1_2, grammarAccess.getFastMathFlagAccess().getKindNinfKeyword_1_0_1());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFastMathFlagRule());
                        	        }
                               		setWithLastConsumed(current, "kind", lv_kind_1_2, null);
                        	    
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7313:8: lv_kind_1_3= 'nsz'
                      {
                      lv_kind_1_3=(Token)match(input,137,FollowSets001.FOLLOW_137_in_ruleFastMathFlag16022); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_kind_1_3, grammarAccess.getFastMathFlagAccess().getKindNszKeyword_1_0_2());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFastMathFlagRule());
                        	        }
                               		setWithLastConsumed(current, "kind", lv_kind_1_3, null);
                        	    
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7325:8: lv_kind_1_4= 'arcp'
                      {
                      lv_kind_1_4=(Token)match(input,138,FollowSets001.FOLLOW_138_in_ruleFastMathFlag16051); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_kind_1_4, grammarAccess.getFastMathFlagAccess().getKindArcpKeyword_1_0_3());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFastMathFlagRule());
                        	        }
                               		setWithLastConsumed(current, "kind", lv_kind_1_4, null);
                        	    
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7337:8: lv_kind_1_5= 'fast'
                      {
                      lv_kind_1_5=(Token)match(input,139,FollowSets001.FOLLOW_139_in_ruleFastMathFlag16080); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_kind_1_5, grammarAccess.getFastMathFlagAccess().getKindFastKeyword_1_0_4());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getFastMathFlagRule());
                        	        }
                               		setWithLastConsumed(current, "kind", lv_kind_1_5, null);
                        	    
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleFastMathFlag"
  
  
      // $ANTLR start "entryRuleInstruction_sub"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7360:1: entryRuleInstruction_sub returns [EObject current=null] : iv_ruleInstruction_sub= ruleInstruction_sub EOF ;
      public final EObject entryRuleInstruction_sub() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_sub = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7361:2: (iv_ruleInstruction_sub= ruleInstruction_sub EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7362:2: iv_ruleInstruction_sub= ruleInstruction_sub EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_subRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_sub_in_entryRuleInstruction_sub16132);
              iv_ruleInstruction_sub=ruleInstruction_sub();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_sub; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_sub16142); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_sub"
  
  
      // $ANTLR start "ruleInstruction_sub"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7369:1: ruleInstruction_sub returns [EObject current=null] : ( ( (lv_opcode_0_0= 'sub' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_sub() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_3=null;
          Token otherlv_6=null;
          EObject lv_type_4_0 = null;
  
          EObject lv_op1_5_0 = null;
  
          EObject lv_op2_7_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7372:28: ( ( ( (lv_opcode_0_0= 'sub' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7373:1: ( ( (lv_opcode_0_0= 'sub' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7373:1: ( ( (lv_opcode_0_0= 'sub' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7373:2: ( (lv_opcode_0_0= 'sub' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7373:2: ( (lv_opcode_0_0= 'sub' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7374:1: (lv_opcode_0_0= 'sub' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7374:1: (lv_opcode_0_0= 'sub' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7375:3: lv_opcode_0_0= 'sub'
              {
              lv_opcode_0_0=(Token)match(input,53,FollowSets001.FOLLOW_53_in_ruleInstruction_sub16185); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_subAccess().getOpcodeSubKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_subRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "sub");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7388:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7390:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7390:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7391:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* )
              {
              getUnorderedGroupHelper().enter(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1());
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7394:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7395:3: ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7395:3: ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )*
              loop94:
              do {
                  int alt94=3;
                  int LA94_0 = input.LA(1);
  
                  if ( LA94_0 ==56 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1(), 0) ) {
                      alt94=1;
                  }
                  else if ( LA94_0 ==57 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1(), 1) ) {
                      alt94=2;
                  }
  
  
                  switch (alt94) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7397:4: ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7397:4: ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7398:5: {...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1(), 0) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_sub", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1(), 0)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7398:112: ( ({...}? => (otherlv_2= 'nuw' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7399:6: ({...}? => (otherlv_2= 'nuw' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1(), 0);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7402:6: ({...}? => (otherlv_2= 'nuw' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7402:7: {...}? => (otherlv_2= 'nuw' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_sub", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7402:16: (otherlv_2= 'nuw' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7402:18: otherlv_2= 'nuw'
              	    {
              	    otherlv_2=(Token)match(input,56,FollowSets001.FOLLOW_56_in_ruleInstruction_sub16256); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_2, grammarAccess.getInstruction_subAccess().getNuwKeyword_1_0());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 2 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7413:4: ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7413:4: ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7414:5: {...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1(), 1) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_sub", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1(), 1)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7414:112: ( ({...}? => (otherlv_3= 'nsw' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7415:6: ({...}? => (otherlv_3= 'nsw' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1(), 1);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7418:6: ({...}? => (otherlv_3= 'nsw' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7418:7: {...}? => (otherlv_3= 'nsw' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_sub", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7418:16: (otherlv_3= 'nsw' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7418:18: otherlv_3= 'nsw'
              	    {
              	    otherlv_3=(Token)match(input,57,FollowSets001.FOLLOW_57_in_ruleInstruction_sub16324); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_3, grammarAccess.getInstruction_subAccess().getNswKeyword_1_1());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop94;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              getUnorderedGroupHelper().leave(grammarAccess.getInstruction_subAccess().getUnorderedGroup_1());
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7436:2: ( (lv_type_4_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7437:1: (lv_type_4_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7437:1: (lv_type_4_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7438:3: lv_type_4_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_subAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_sub16386);
              lv_type_4_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_subRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_4_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7454:2: ( (lv_op1_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7455:1: (lv_op1_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7455:1: (lv_op1_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7456:3: lv_op1_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_subAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_sub16407);
              lv_op1_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_subRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_6=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_sub16419); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_6, grammarAccess.getInstruction_subAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7476:1: ( (lv_op2_7_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7477:1: (lv_op2_7_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7477:1: (lv_op2_7_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7478:3: lv_op2_7_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_subAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_sub16440);
              lv_op2_7_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_subRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_7_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_sub"
  
  
      // $ANTLR start "entryRuleInstruction_fsub"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7502:1: entryRuleInstruction_fsub returns [EObject current=null] : iv_ruleInstruction_fsub= ruleInstruction_fsub EOF ;
      public final EObject entryRuleInstruction_fsub() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_fsub = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7503:2: (iv_ruleInstruction_fsub= ruleInstruction_fsub EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7504:2: iv_ruleInstruction_fsub= ruleInstruction_fsub EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_fsubRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_fsub_in_entryRuleInstruction_fsub16476);
              iv_ruleInstruction_fsub=ruleInstruction_fsub();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_fsub; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_fsub16486); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_fsub"
  
  
      // $ANTLR start "ruleInstruction_fsub"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7511:1: ruleInstruction_fsub returns [EObject current=null] : ( ( (lv_opcode_0_0= 'fsub' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_fsub() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_4=null;
          EObject lv_fastMathFlags_1_0 = null;
  
          EObject lv_type_2_0 = null;
  
          EObject lv_op1_3_0 = null;
  
          EObject lv_op2_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7514:28: ( ( ( (lv_opcode_0_0= 'fsub' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7515:1: ( ( (lv_opcode_0_0= 'fsub' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7515:1: ( ( (lv_opcode_0_0= 'fsub' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7515:2: ( (lv_opcode_0_0= 'fsub' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7515:2: ( (lv_opcode_0_0= 'fsub' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7516:1: (lv_opcode_0_0= 'fsub' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7516:1: (lv_opcode_0_0= 'fsub' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7517:3: lv_opcode_0_0= 'fsub'
              {
              lv_opcode_0_0=(Token)match(input,64,FollowSets001.FOLLOW_64_in_ruleInstruction_fsub16529); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_fsubAccess().getOpcodeFsubKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_fsubRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "fsub");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7530:2: ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )*
              loop95:
              do {
                  int alt95=2;
                  int LA95_0 = input.LA(1);
  
                  if ( ((LA95_0>=135 && LA95_0<=139)) ) {
                      alt95=1;
                  }
  
  
                  switch (alt95) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7531:1: (lv_fastMathFlags_1_0= ruleFastMathFlag )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7531:1: (lv_fastMathFlags_1_0= ruleFastMathFlag )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7532:3: lv_fastMathFlags_1_0= ruleFastMathFlag
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_fsubAccess().getFastMathFlagsFastMathFlagParserRuleCall_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets001.FOLLOW_ruleFastMathFlag_in_ruleInstruction_fsub16563);
              	    lv_fastMathFlags_1_0=ruleFastMathFlag();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_fsubRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"fastMathFlags",
              	              		lv_fastMathFlags_1_0, 
              	              		"FastMathFlag");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop95;
                  }
              } while (true);
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7548:3: ( (lv_type_2_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7549:1: (lv_type_2_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7549:1: (lv_type_2_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7550:3: lv_type_2_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fsubAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_fsub16585);
              lv_type_2_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fsubRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_2_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7566:2: ( (lv_op1_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7567:1: (lv_op1_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7567:1: (lv_op1_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7568:3: lv_op1_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fsubAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_fsub16606);
              lv_op1_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fsubRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_fsub16618); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_fsubAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7588:1: ( (lv_op2_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7589:1: (lv_op2_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7589:1: (lv_op2_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7590:3: lv_op2_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fsubAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_fsub16639);
              lv_op2_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fsubRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_fsub"
  
  
      // $ANTLR start "entryRuleInstruction_mul"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7614:1: entryRuleInstruction_mul returns [EObject current=null] : iv_ruleInstruction_mul= ruleInstruction_mul EOF ;
      public final EObject entryRuleInstruction_mul() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_mul = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7615:2: (iv_ruleInstruction_mul= ruleInstruction_mul EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7616:2: iv_ruleInstruction_mul= ruleInstruction_mul EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_mulRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_mul_in_entryRuleInstruction_mul16675);
              iv_ruleInstruction_mul=ruleInstruction_mul();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_mul; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_mul16685); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_mul"
  
  
      // $ANTLR start "ruleInstruction_mul"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7623:1: ruleInstruction_mul returns [EObject current=null] : ( ( (lv_opcode_0_0= 'mul' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_mul() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_3=null;
          Token otherlv_6=null;
          EObject lv_type_4_0 = null;
  
          EObject lv_op1_5_0 = null;
  
          EObject lv_op2_7_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7626:28: ( ( ( (lv_opcode_0_0= 'mul' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7627:1: ( ( (lv_opcode_0_0= 'mul' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7627:1: ( ( (lv_opcode_0_0= 'mul' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7627:2: ( (lv_opcode_0_0= 'mul' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7627:2: ( (lv_opcode_0_0= 'mul' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7628:1: (lv_opcode_0_0= 'mul' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7628:1: (lv_opcode_0_0= 'mul' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7629:3: lv_opcode_0_0= 'mul'
              {
              lv_opcode_0_0=(Token)match(input,54,FollowSets001.FOLLOW_54_in_ruleInstruction_mul16728); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_mulAccess().getOpcodeMulKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_mulRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "mul");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7642:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7644:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7644:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7645:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* )
              {
              getUnorderedGroupHelper().enter(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1());
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7648:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7649:3: ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7649:3: ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )*
              loop96:
              do {
                  int alt96=3;
                  int LA96_0 = input.LA(1);
  
                  if ( LA96_0 ==56 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1(), 0) ) {
                      alt96=1;
                  }
                  else if ( LA96_0 ==57 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1(), 1) ) {
                      alt96=2;
                  }
  
  
                  switch (alt96) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7651:4: ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7651:4: ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7652:5: {...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1(), 0) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_mul", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1(), 0)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7652:112: ( ({...}? => (otherlv_2= 'nuw' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7653:6: ({...}? => (otherlv_2= 'nuw' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1(), 0);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7656:6: ({...}? => (otherlv_2= 'nuw' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7656:7: {...}? => (otherlv_2= 'nuw' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_mul", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7656:16: (otherlv_2= 'nuw' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7656:18: otherlv_2= 'nuw'
              	    {
              	    otherlv_2=(Token)match(input,56,FollowSets001.FOLLOW_56_in_ruleInstruction_mul16799); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_2, grammarAccess.getInstruction_mulAccess().getNuwKeyword_1_0());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 2 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7667:4: ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7667:4: ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7668:5: {...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1(), 1) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_mul", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1(), 1)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7668:112: ( ({...}? => (otherlv_3= 'nsw' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7669:6: ({...}? => (otherlv_3= 'nsw' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1(), 1);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7672:6: ({...}? => (otherlv_3= 'nsw' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7672:7: {...}? => (otherlv_3= 'nsw' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_mul", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7672:16: (otherlv_3= 'nsw' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7672:18: otherlv_3= 'nsw'
              	    {
              	    otherlv_3=(Token)match(input,57,FollowSets001.FOLLOW_57_in_ruleInstruction_mul16867); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_3, grammarAccess.getInstruction_mulAccess().getNswKeyword_1_1());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop96;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              getUnorderedGroupHelper().leave(grammarAccess.getInstruction_mulAccess().getUnorderedGroup_1());
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7690:2: ( (lv_type_4_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7691:1: (lv_type_4_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7691:1: (lv_type_4_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7692:3: lv_type_4_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_mulAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_mul16929);
              lv_type_4_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_mulRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_4_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7708:2: ( (lv_op1_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7709:1: (lv_op1_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7709:1: (lv_op1_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7710:3: lv_op1_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_mulAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_mul16950);
              lv_op1_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_mulRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_6=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_mul16962); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_6, grammarAccess.getInstruction_mulAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7730:1: ( (lv_op2_7_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7731:1: (lv_op2_7_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7731:1: (lv_op2_7_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7732:3: lv_op2_7_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_mulAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_mul16983);
              lv_op2_7_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_mulRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_7_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_mul"
  
  
      // $ANTLR start "entryRuleInstruction_fmul"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7756:1: entryRuleInstruction_fmul returns [EObject current=null] : iv_ruleInstruction_fmul= ruleInstruction_fmul EOF ;
      public final EObject entryRuleInstruction_fmul() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_fmul = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7757:2: (iv_ruleInstruction_fmul= ruleInstruction_fmul EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7758:2: iv_ruleInstruction_fmul= ruleInstruction_fmul EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_fmulRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_fmul_in_entryRuleInstruction_fmul17019);
              iv_ruleInstruction_fmul=ruleInstruction_fmul();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_fmul; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_fmul17029); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_fmul"
  
  
      // $ANTLR start "ruleInstruction_fmul"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7765:1: ruleInstruction_fmul returns [EObject current=null] : ( ( (lv_opcode_0_0= 'fmul' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_fmul() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_4=null;
          EObject lv_fastMathFlags_1_0 = null;
  
          EObject lv_type_2_0 = null;
  
          EObject lv_op1_3_0 = null;
  
          EObject lv_op2_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7768:28: ( ( ( (lv_opcode_0_0= 'fmul' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7769:1: ( ( (lv_opcode_0_0= 'fmul' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7769:1: ( ( (lv_opcode_0_0= 'fmul' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7769:2: ( (lv_opcode_0_0= 'fmul' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7769:2: ( (lv_opcode_0_0= 'fmul' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7770:1: (lv_opcode_0_0= 'fmul' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7770:1: (lv_opcode_0_0= 'fmul' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7771:3: lv_opcode_0_0= 'fmul'
              {
              lv_opcode_0_0=(Token)match(input,65,FollowSets001.FOLLOW_65_in_ruleInstruction_fmul17072); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_fmulAccess().getOpcodeFmulKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_fmulRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "fmul");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7784:2: ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )*
              loop97:
              do {
                  int alt97=2;
                  int LA97_0 = input.LA(1);
  
                  if ( ((LA97_0>=135 && LA97_0<=139)) ) {
                      alt97=1;
                  }
  
  
                  switch (alt97) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7785:1: (lv_fastMathFlags_1_0= ruleFastMathFlag )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7785:1: (lv_fastMathFlags_1_0= ruleFastMathFlag )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7786:3: lv_fastMathFlags_1_0= ruleFastMathFlag
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_fmulAccess().getFastMathFlagsFastMathFlagParserRuleCall_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets001.FOLLOW_ruleFastMathFlag_in_ruleInstruction_fmul17106);
              	    lv_fastMathFlags_1_0=ruleFastMathFlag();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_fmulRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"fastMathFlags",
              	              		lv_fastMathFlags_1_0, 
              	              		"FastMathFlag");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop97;
                  }
              } while (true);
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7802:3: ( (lv_type_2_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7803:1: (lv_type_2_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7803:1: (lv_type_2_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7804:3: lv_type_2_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fmulAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_fmul17128);
              lv_type_2_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fmulRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_2_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7820:2: ( (lv_op1_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7821:1: (lv_op1_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7821:1: (lv_op1_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7822:3: lv_op1_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fmulAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_fmul17149);
              lv_op1_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fmulRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_fmul17161); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_fmulAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7842:1: ( (lv_op2_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7843:1: (lv_op2_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7843:1: (lv_op2_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7844:3: lv_op2_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fmulAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_fmul17182);
              lv_op2_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fmulRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_fmul"
  
  
      // $ANTLR start "entryRuleInstruction_udiv"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7868:1: entryRuleInstruction_udiv returns [EObject current=null] : iv_ruleInstruction_udiv= ruleInstruction_udiv EOF ;
      public final EObject entryRuleInstruction_udiv() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_udiv = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7869:2: (iv_ruleInstruction_udiv= ruleInstruction_udiv EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7870:2: iv_ruleInstruction_udiv= ruleInstruction_udiv EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_udivRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_udiv_in_entryRuleInstruction_udiv17218);
              iv_ruleInstruction_udiv=ruleInstruction_udiv();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_udiv; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_udiv17228); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_udiv"
  
  
      // $ANTLR start "ruleInstruction_udiv"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7877:1: ruleInstruction_udiv returns [EObject current=null] : ( ( (lv_opcode_0_0= 'udiv' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_udiv() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_4=null;
          EObject lv_type_2_0 = null;
  
          EObject lv_op1_3_0 = null;
  
          EObject lv_op2_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7880:28: ( ( ( (lv_opcode_0_0= 'udiv' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7881:1: ( ( (lv_opcode_0_0= 'udiv' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7881:1: ( ( (lv_opcode_0_0= 'udiv' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7881:2: ( (lv_opcode_0_0= 'udiv' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7881:2: ( (lv_opcode_0_0= 'udiv' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7882:1: (lv_opcode_0_0= 'udiv' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7882:1: (lv_opcode_0_0= 'udiv' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7883:3: lv_opcode_0_0= 'udiv'
              {
              lv_opcode_0_0=(Token)match(input,59,FollowSets001.FOLLOW_59_in_ruleInstruction_udiv17271); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_udivAccess().getOpcodeUdivKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_udivRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "udiv");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7896:2: (otherlv_1= 'exact' )?
              int alt98=2;
              int LA98_0 = input.LA(1);
  
              if ( (LA98_0==62) ) {
                  alt98=1;
              }
              switch (alt98) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7896:4: otherlv_1= 'exact'
                      {
                      otherlv_1=(Token)match(input,62,FollowSets001.FOLLOW_62_in_ruleInstruction_udiv17297); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getInstruction_udivAccess().getExactKeyword_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7900:3: ( (lv_type_2_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7901:1: (lv_type_2_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7901:1: (lv_type_2_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7902:3: lv_type_2_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_udivAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_udiv17320);
              lv_type_2_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_udivRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_2_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7918:2: ( (lv_op1_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7919:1: (lv_op1_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7919:1: (lv_op1_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7920:3: lv_op1_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_udivAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_udiv17341);
              lv_op1_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_udivRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_udiv17353); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_udivAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7940:1: ( (lv_op2_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7941:1: (lv_op2_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7941:1: (lv_op2_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7942:3: lv_op2_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_udivAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_udiv17374);
              lv_op2_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_udivRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_udiv"
  
  
      // $ANTLR start "entryRuleInstruction_sdiv"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7966:1: entryRuleInstruction_sdiv returns [EObject current=null] : iv_ruleInstruction_sdiv= ruleInstruction_sdiv EOF ;
      public final EObject entryRuleInstruction_sdiv() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_sdiv = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7967:2: (iv_ruleInstruction_sdiv= ruleInstruction_sdiv EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7968:2: iv_ruleInstruction_sdiv= ruleInstruction_sdiv EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_sdivRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_sdiv_in_entryRuleInstruction_sdiv17410);
              iv_ruleInstruction_sdiv=ruleInstruction_sdiv();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_sdiv; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_sdiv17420); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_sdiv"
  
  
      // $ANTLR start "ruleInstruction_sdiv"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7975:1: ruleInstruction_sdiv returns [EObject current=null] : ( ( (lv_opcode_0_0= 'sdiv' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_sdiv() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_4=null;
          EObject lv_type_2_0 = null;
  
          EObject lv_op1_3_0 = null;
  
          EObject lv_op2_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7978:28: ( ( ( (lv_opcode_0_0= 'sdiv' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7979:1: ( ( (lv_opcode_0_0= 'sdiv' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7979:1: ( ( (lv_opcode_0_0= 'sdiv' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7979:2: ( (lv_opcode_0_0= 'sdiv' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7979:2: ( (lv_opcode_0_0= 'sdiv' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7980:1: (lv_opcode_0_0= 'sdiv' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7980:1: (lv_opcode_0_0= 'sdiv' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7981:3: lv_opcode_0_0= 'sdiv'
              {
              lv_opcode_0_0=(Token)match(input,58,FollowSets001.FOLLOW_58_in_ruleInstruction_sdiv17463); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_sdivAccess().getOpcodeSdivKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_sdivRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "sdiv");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7994:2: (otherlv_1= 'exact' )?
              int alt99=2;
              int LA99_0 = input.LA(1);
  
              if ( (LA99_0==62) ) {
                  alt99=1;
              }
              switch (alt99) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7994:4: otherlv_1= 'exact'
                      {
                      otherlv_1=(Token)match(input,62,FollowSets001.FOLLOW_62_in_ruleInstruction_sdiv17489); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getInstruction_sdivAccess().getExactKeyword_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7998:3: ( (lv_type_2_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7999:1: (lv_type_2_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:7999:1: (lv_type_2_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8000:3: lv_type_2_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_sdivAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_sdiv17512);
              lv_type_2_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_sdivRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_2_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8016:2: ( (lv_op1_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8017:1: (lv_op1_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8017:1: (lv_op1_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8018:3: lv_op1_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_sdivAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_sdiv17533);
              lv_op1_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_sdivRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_sdiv17545); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_sdivAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8038:1: ( (lv_op2_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8039:1: (lv_op2_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8039:1: (lv_op2_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8040:3: lv_op2_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_sdivAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_sdiv17566);
              lv_op2_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_sdivRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_sdiv"
  
  
      // $ANTLR start "entryRuleInstruction_fdiv"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8064:1: entryRuleInstruction_fdiv returns [EObject current=null] : iv_ruleInstruction_fdiv= ruleInstruction_fdiv EOF ;
      public final EObject entryRuleInstruction_fdiv() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_fdiv = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8065:2: (iv_ruleInstruction_fdiv= ruleInstruction_fdiv EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8066:2: iv_ruleInstruction_fdiv= ruleInstruction_fdiv EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_fdivRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_fdiv_in_entryRuleInstruction_fdiv17602);
              iv_ruleInstruction_fdiv=ruleInstruction_fdiv();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_fdiv; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_fdiv17612); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_fdiv"
  
  
      // $ANTLR start "ruleInstruction_fdiv"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8073:1: ruleInstruction_fdiv returns [EObject current=null] : ( ( (lv_opcode_0_0= 'fdiv' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_fdiv() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_4=null;
          EObject lv_fastMathFlags_1_0 = null;
  
          EObject lv_type_2_0 = null;
  
          EObject lv_op1_3_0 = null;
  
          EObject lv_op2_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8076:28: ( ( ( (lv_opcode_0_0= 'fdiv' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8077:1: ( ( (lv_opcode_0_0= 'fdiv' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8077:1: ( ( (lv_opcode_0_0= 'fdiv' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8077:2: ( (lv_opcode_0_0= 'fdiv' ) ) ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )* ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8077:2: ( (lv_opcode_0_0= 'fdiv' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8078:1: (lv_opcode_0_0= 'fdiv' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8078:1: (lv_opcode_0_0= 'fdiv' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8079:3: lv_opcode_0_0= 'fdiv'
              {
              lv_opcode_0_0=(Token)match(input,66,FollowSets001.FOLLOW_66_in_ruleInstruction_fdiv17655); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_fdivAccess().getOpcodeFdivKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_fdivRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "fdiv");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8092:2: ( (lv_fastMathFlags_1_0= ruleFastMathFlag ) )*
              loop100:
              do {
                  int alt100=2;
                  int LA100_0 = input.LA(1);
  
                  if ( ((LA100_0>=135 && LA100_0<=139)) ) {
                      alt100=1;
                  }
  
  
                  switch (alt100) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8093:1: (lv_fastMathFlags_1_0= ruleFastMathFlag )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8093:1: (lv_fastMathFlags_1_0= ruleFastMathFlag )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8094:3: lv_fastMathFlags_1_0= ruleFastMathFlag
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_fdivAccess().getFastMathFlagsFastMathFlagParserRuleCall_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets001.FOLLOW_ruleFastMathFlag_in_ruleInstruction_fdiv17689);
              	    lv_fastMathFlags_1_0=ruleFastMathFlag();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_fdivRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"fastMathFlags",
              	              		lv_fastMathFlags_1_0, 
              	              		"FastMathFlag");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop100;
                  }
              } while (true);
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8110:3: ( (lv_type_2_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8111:1: (lv_type_2_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8111:1: (lv_type_2_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8112:3: lv_type_2_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fdivAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_fdiv17711);
              lv_type_2_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fdivRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_2_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8128:2: ( (lv_op1_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8129:1: (lv_op1_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8129:1: (lv_op1_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8130:3: lv_op1_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fdivAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_fdiv17732);
              lv_op1_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fdivRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_fdiv17744); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_fdivAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8150:1: ( (lv_op2_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8151:1: (lv_op2_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8151:1: (lv_op2_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8152:3: lv_op2_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fdivAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_fdiv17765);
              lv_op2_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fdivRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_fdiv"
  
  
      // $ANTLR start "entryRuleInstruction_urem"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8176:1: entryRuleInstruction_urem returns [EObject current=null] : iv_ruleInstruction_urem= ruleInstruction_urem EOF ;
      public final EObject entryRuleInstruction_urem() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_urem = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8177:2: (iv_ruleInstruction_urem= ruleInstruction_urem EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8178:2: iv_ruleInstruction_urem= ruleInstruction_urem EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_uremRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_urem_in_entryRuleInstruction_urem17801);
              iv_ruleInstruction_urem=ruleInstruction_urem();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_urem; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_urem17811); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_urem"
  
  
      // $ANTLR start "ruleInstruction_urem"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8185:1: ruleInstruction_urem returns [EObject current=null] : ( ( (lv_opcode_0_0= 'urem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_urem() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_3=null;
          EObject lv_type_1_0 = null;
  
          EObject lv_op1_2_0 = null;
  
          EObject lv_op2_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8188:28: ( ( ( (lv_opcode_0_0= 'urem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8189:1: ( ( (lv_opcode_0_0= 'urem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8189:1: ( ( (lv_opcode_0_0= 'urem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8189:2: ( (lv_opcode_0_0= 'urem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8189:2: ( (lv_opcode_0_0= 'urem' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8190:1: (lv_opcode_0_0= 'urem' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8190:1: (lv_opcode_0_0= 'urem' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8191:3: lv_opcode_0_0= 'urem'
              {
              lv_opcode_0_0=(Token)match(input,67,FollowSets001.FOLLOW_67_in_ruleInstruction_urem17854); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_uremAccess().getOpcodeUremKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_uremRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "urem");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8204:2: ( (lv_type_1_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8205:1: (lv_type_1_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8205:1: (lv_type_1_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8206:3: lv_type_1_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_uremAccess().getTypeTypeParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_urem17888);
              lv_type_1_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_uremRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_1_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8222:2: ( (lv_op1_2_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8223:1: (lv_op1_2_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8223:1: (lv_op1_2_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8224:3: lv_op1_2_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_uremAccess().getOp1ValueRefParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_urem17909);
              lv_op1_2_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_uremRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_2_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_urem17921); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getInstruction_uremAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8244:1: ( (lv_op2_4_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8245:1: (lv_op2_4_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8245:1: (lv_op2_4_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8246:3: lv_op2_4_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_uremAccess().getOp2ValueRefParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_urem17942);
              lv_op2_4_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_uremRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_4_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_urem"
  
  
      // $ANTLR start "entryRuleInstruction_srem"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8270:1: entryRuleInstruction_srem returns [EObject current=null] : iv_ruleInstruction_srem= ruleInstruction_srem EOF ;
      public final EObject entryRuleInstruction_srem() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_srem = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8271:2: (iv_ruleInstruction_srem= ruleInstruction_srem EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8272:2: iv_ruleInstruction_srem= ruleInstruction_srem EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_sremRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_srem_in_entryRuleInstruction_srem17978);
              iv_ruleInstruction_srem=ruleInstruction_srem();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_srem; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_srem17988); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_srem"
  
  
      // $ANTLR start "ruleInstruction_srem"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8279:1: ruleInstruction_srem returns [EObject current=null] : ( ( (lv_opcode_0_0= 'srem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_srem() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_3=null;
          EObject lv_type_1_0 = null;
  
          EObject lv_op1_2_0 = null;
  
          EObject lv_op2_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8282:28: ( ( ( (lv_opcode_0_0= 'srem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8283:1: ( ( (lv_opcode_0_0= 'srem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8283:1: ( ( (lv_opcode_0_0= 'srem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8283:2: ( (lv_opcode_0_0= 'srem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8283:2: ( (lv_opcode_0_0= 'srem' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8284:1: (lv_opcode_0_0= 'srem' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8284:1: (lv_opcode_0_0= 'srem' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8285:3: lv_opcode_0_0= 'srem'
              {
              lv_opcode_0_0=(Token)match(input,68,FollowSets001.FOLLOW_68_in_ruleInstruction_srem18031); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_sremAccess().getOpcodeSremKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_sremRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "srem");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8298:2: ( (lv_type_1_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8299:1: (lv_type_1_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8299:1: (lv_type_1_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8300:3: lv_type_1_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_sremAccess().getTypeTypeParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_srem18065);
              lv_type_1_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_sremRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_1_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8316:2: ( (lv_op1_2_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8317:1: (lv_op1_2_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8317:1: (lv_op1_2_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8318:3: lv_op1_2_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_sremAccess().getOp1ValueRefParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_srem18086);
              lv_op1_2_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_sremRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_2_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_srem18098); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getInstruction_sremAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8338:1: ( (lv_op2_4_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8339:1: (lv_op2_4_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8339:1: (lv_op2_4_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8340:3: lv_op2_4_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_sremAccess().getOp2ValueRefParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_srem18119);
              lv_op2_4_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_sremRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_4_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_srem"
  
  
      // $ANTLR start "entryRuleInstruction_frem"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8364:1: entryRuleInstruction_frem returns [EObject current=null] : iv_ruleInstruction_frem= ruleInstruction_frem EOF ;
      public final EObject entryRuleInstruction_frem() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_frem = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8365:2: (iv_ruleInstruction_frem= ruleInstruction_frem EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8366:2: iv_ruleInstruction_frem= ruleInstruction_frem EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_fremRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_frem_in_entryRuleInstruction_frem18155);
              iv_ruleInstruction_frem=ruleInstruction_frem();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_frem; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_frem18165); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_frem"
  
  
      // $ANTLR start "ruleInstruction_frem"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8373:1: ruleInstruction_frem returns [EObject current=null] : ( ( (lv_opcode_0_0= 'frem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_frem() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_3=null;
          EObject lv_type_1_0 = null;
  
          EObject lv_op1_2_0 = null;
  
          EObject lv_op2_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8376:28: ( ( ( (lv_opcode_0_0= 'frem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8377:1: ( ( (lv_opcode_0_0= 'frem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8377:1: ( ( (lv_opcode_0_0= 'frem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8377:2: ( (lv_opcode_0_0= 'frem' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8377:2: ( (lv_opcode_0_0= 'frem' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8378:1: (lv_opcode_0_0= 'frem' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8378:1: (lv_opcode_0_0= 'frem' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8379:3: lv_opcode_0_0= 'frem'
              {
              lv_opcode_0_0=(Token)match(input,69,FollowSets001.FOLLOW_69_in_ruleInstruction_frem18208); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_fremAccess().getOpcodeFremKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_fremRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "frem");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8392:2: ( (lv_type_1_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8393:1: (lv_type_1_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8393:1: (lv_type_1_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8394:3: lv_type_1_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fremAccess().getTypeTypeParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_frem18242);
              lv_type_1_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fremRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_1_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8410:2: ( (lv_op1_2_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8411:1: (lv_op1_2_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8411:1: (lv_op1_2_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8412:3: lv_op1_2_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fremAccess().getOp1ValueRefParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_frem18263);
              lv_op1_2_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fremRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_2_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_frem18275); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getInstruction_fremAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8432:1: ( (lv_op2_4_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8433:1: (lv_op2_4_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8433:1: (lv_op2_4_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8434:3: lv_op2_4_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fremAccess().getOp2ValueRefParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_frem18296);
              lv_op2_4_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fremRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_4_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_frem"
  
  
      // $ANTLR start "entryRuleBitwiseBinaryInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8458:1: entryRuleBitwiseBinaryInstruction returns [EObject current=null] : iv_ruleBitwiseBinaryInstruction= ruleBitwiseBinaryInstruction EOF ;
      public final EObject entryRuleBitwiseBinaryInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleBitwiseBinaryInstruction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8459:2: (iv_ruleBitwiseBinaryInstruction= ruleBitwiseBinaryInstruction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8460:2: iv_ruleBitwiseBinaryInstruction= ruleBitwiseBinaryInstruction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getBitwiseBinaryInstructionRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleBitwiseBinaryInstruction_in_entryRuleBitwiseBinaryInstruction18332);
              iv_ruleBitwiseBinaryInstruction=ruleBitwiseBinaryInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleBitwiseBinaryInstruction; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleBitwiseBinaryInstruction18342); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleBitwiseBinaryInstruction"
  
  
      // $ANTLR start "ruleBitwiseBinaryInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8467:1: ruleBitwiseBinaryInstruction returns [EObject current=null] : (this_Instruction_shl_0= ruleInstruction_shl | this_Instruction_lshr_1= ruleInstruction_lshr | this_Instruction_ashr_2= ruleInstruction_ashr | this_Instruction_and_3= ruleInstruction_and | this_Instruction_or_4= ruleInstruction_or | this_Instruction_xor_5= ruleInstruction_xor ) ;
      public final EObject ruleBitwiseBinaryInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject this_Instruction_shl_0 = null;
  
          EObject this_Instruction_lshr_1 = null;
  
          EObject this_Instruction_ashr_2 = null;
  
          EObject this_Instruction_and_3 = null;
  
          EObject this_Instruction_or_4 = null;
  
          EObject this_Instruction_xor_5 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8470:28: ( (this_Instruction_shl_0= ruleInstruction_shl | this_Instruction_lshr_1= ruleInstruction_lshr | this_Instruction_ashr_2= ruleInstruction_ashr | this_Instruction_and_3= ruleInstruction_and | this_Instruction_or_4= ruleInstruction_or | this_Instruction_xor_5= ruleInstruction_xor ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8471:1: (this_Instruction_shl_0= ruleInstruction_shl | this_Instruction_lshr_1= ruleInstruction_lshr | this_Instruction_ashr_2= ruleInstruction_ashr | this_Instruction_and_3= ruleInstruction_and | this_Instruction_or_4= ruleInstruction_or | this_Instruction_xor_5= ruleInstruction_xor )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8471:1: (this_Instruction_shl_0= ruleInstruction_shl | this_Instruction_lshr_1= ruleInstruction_lshr | this_Instruction_ashr_2= ruleInstruction_ashr | this_Instruction_and_3= ruleInstruction_and | this_Instruction_or_4= ruleInstruction_or | this_Instruction_xor_5= ruleInstruction_xor )
              int alt101=6;
              switch ( input.LA(1) ) {
              case 55:
                  {
                  alt101=1;
                  }
                  break;
              case 60:
                  {
                  alt101=2;
                  }
                  break;
              case 61:
                  {
                  alt101=3;
                  }
                  break;
              case 70:
                  {
                  alt101=4;
                  }
                  break;
              case 71:
                  {
                  alt101=5;
                  }
                  break;
              case 72:
                  {
                  alt101=6;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 101, 0, input);
  
                  throw nvae;
              }
  
              switch (alt101) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8472:5: this_Instruction_shl_0= ruleInstruction_shl
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBitwiseBinaryInstructionAccess().getInstruction_shlParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_shl_in_ruleBitwiseBinaryInstruction18389);
                      this_Instruction_shl_0=ruleInstruction_shl();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_shl_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8482:5: this_Instruction_lshr_1= ruleInstruction_lshr
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBitwiseBinaryInstructionAccess().getInstruction_lshrParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_lshr_in_ruleBitwiseBinaryInstruction18416);
                      this_Instruction_lshr_1=ruleInstruction_lshr();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_lshr_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8492:5: this_Instruction_ashr_2= ruleInstruction_ashr
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBitwiseBinaryInstructionAccess().getInstruction_ashrParserRuleCall_2()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_ashr_in_ruleBitwiseBinaryInstruction18443);
                      this_Instruction_ashr_2=ruleInstruction_ashr();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_ashr_2; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8502:5: this_Instruction_and_3= ruleInstruction_and
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBitwiseBinaryInstructionAccess().getInstruction_andParserRuleCall_3()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_and_in_ruleBitwiseBinaryInstruction18470);
                      this_Instruction_and_3=ruleInstruction_and();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_and_3; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8512:5: this_Instruction_or_4= ruleInstruction_or
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBitwiseBinaryInstructionAccess().getInstruction_orParserRuleCall_4()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_or_in_ruleBitwiseBinaryInstruction18497);
                      this_Instruction_or_4=ruleInstruction_or();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_or_4; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8522:5: this_Instruction_xor_5= ruleInstruction_xor
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getBitwiseBinaryInstructionAccess().getInstruction_xorParserRuleCall_5()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_xor_in_ruleBitwiseBinaryInstruction18524);
                      this_Instruction_xor_5=ruleInstruction_xor();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_xor_5; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleBitwiseBinaryInstruction"
  
  
      // $ANTLR start "entryRuleInstruction_shl"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8538:1: entryRuleInstruction_shl returns [EObject current=null] : iv_ruleInstruction_shl= ruleInstruction_shl EOF ;
      public final EObject entryRuleInstruction_shl() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_shl = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8539:2: (iv_ruleInstruction_shl= ruleInstruction_shl EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8540:2: iv_ruleInstruction_shl= ruleInstruction_shl EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_shlRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_shl_in_entryRuleInstruction_shl18559);
              iv_ruleInstruction_shl=ruleInstruction_shl();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_shl; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_shl18569); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_shl"
  
  
      // $ANTLR start "ruleInstruction_shl"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8547:1: ruleInstruction_shl returns [EObject current=null] : ( ( (lv_opcode_0_0= 'shl' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_shl() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_3=null;
          Token otherlv_6=null;
          EObject lv_type_4_0 = null;
  
          EObject lv_op1_5_0 = null;
  
          EObject lv_op2_7_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8550:28: ( ( ( (lv_opcode_0_0= 'shl' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8551:1: ( ( (lv_opcode_0_0= 'shl' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8551:1: ( ( (lv_opcode_0_0= 'shl' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8551:2: ( (lv_opcode_0_0= 'shl' ) ) ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) ) ( (lv_type_4_0= ruleType ) ) ( (lv_op1_5_0= ruleValueRef ) ) otherlv_6= ',' ( (lv_op2_7_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8551:2: ( (lv_opcode_0_0= 'shl' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8552:1: (lv_opcode_0_0= 'shl' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8552:1: (lv_opcode_0_0= 'shl' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8553:3: lv_opcode_0_0= 'shl'
              {
              lv_opcode_0_0=(Token)match(input,55,FollowSets001.FOLLOW_55_in_ruleInstruction_shl18612); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_shlAccess().getOpcodeShlKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_shlRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "shl");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8566:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8568:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8568:1: ( ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8569:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* )
              {
              getUnorderedGroupHelper().enter(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1());
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8572:2: ( ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8573:3: ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8573:3: ( ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) ) | ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) ) )*
              loop102:
              do {
                  int alt102=3;
                  int LA102_0 = input.LA(1);
  
                  if ( LA102_0 ==56 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1(), 0) ) {
                      alt102=1;
                  }
                  else if ( LA102_0 ==57 && getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1(), 1) ) {
                      alt102=2;
                  }
  
  
                  switch (alt102) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8575:4: ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8575:4: ({...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8576:5: {...}? => ( ({...}? => (otherlv_2= 'nuw' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1(), 0) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_shl", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1(), 0)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8576:112: ( ({...}? => (otherlv_2= 'nuw' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8577:6: ({...}? => (otherlv_2= 'nuw' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1(), 0);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8580:6: ({...}? => (otherlv_2= 'nuw' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8580:7: {...}? => (otherlv_2= 'nuw' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_shl", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8580:16: (otherlv_2= 'nuw' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8580:18: otherlv_2= 'nuw'
              	    {
              	    otherlv_2=(Token)match(input,56,FollowSets001.FOLLOW_56_in_ruleInstruction_shl18683); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_2, grammarAccess.getInstruction_shlAccess().getNuwKeyword_1_0());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
              	case 2 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8591:4: ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8591:4: ({...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8592:5: {...}? => ( ({...}? => (otherlv_3= 'nsw' ) ) )
              	    {
              	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1(), 1) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_shl", "getUnorderedGroupHelper().canSelect(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1(), 1)");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8592:112: ( ({...}? => (otherlv_3= 'nsw' ) ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8593:6: ({...}? => (otherlv_3= 'nsw' ) )
              	    {
              	    getUnorderedGroupHelper().select(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1(), 1);
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8596:6: ({...}? => (otherlv_3= 'nsw' ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8596:7: {...}? => (otherlv_3= 'nsw' )
              	    {
              	    if ( !((true)) ) {
              	        if (state.backtracking>0) {state.failed=true; return current;}
              	        throw new FailedPredicateException(input, "ruleInstruction_shl", "true");
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8596:16: (otherlv_3= 'nsw' )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8596:18: otherlv_3= 'nsw'
              	    {
              	    otherlv_3=(Token)match(input,57,FollowSets001.FOLLOW_57_in_ruleInstruction_shl18751); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_3, grammarAccess.getInstruction_shlAccess().getNswKeyword_1_1());
              	          
              	    }
  
              	    }
  
  
              	    }
  
              	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1());
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop102;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              getUnorderedGroupHelper().leave(grammarAccess.getInstruction_shlAccess().getUnorderedGroup_1());
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8614:2: ( (lv_type_4_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8615:1: (lv_type_4_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8615:1: (lv_type_4_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8616:3: lv_type_4_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_shlAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_shl18813);
              lv_type_4_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_shlRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_4_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8632:2: ( (lv_op1_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8633:1: (lv_op1_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8633:1: (lv_op1_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8634:3: lv_op1_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_shlAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_shl18834);
              lv_op1_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_shlRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_6=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_shl18846); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_6, grammarAccess.getInstruction_shlAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8654:1: ( (lv_op2_7_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8655:1: (lv_op2_7_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8655:1: (lv_op2_7_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8656:3: lv_op2_7_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_shlAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_shl18867);
              lv_op2_7_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_shlRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_7_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_shl"
  
  
      // $ANTLR start "entryRuleInstruction_lshr"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8680:1: entryRuleInstruction_lshr returns [EObject current=null] : iv_ruleInstruction_lshr= ruleInstruction_lshr EOF ;
      public final EObject entryRuleInstruction_lshr() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_lshr = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8681:2: (iv_ruleInstruction_lshr= ruleInstruction_lshr EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8682:2: iv_ruleInstruction_lshr= ruleInstruction_lshr EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_lshrRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_lshr_in_entryRuleInstruction_lshr18903);
              iv_ruleInstruction_lshr=ruleInstruction_lshr();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_lshr; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_lshr18913); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_lshr"
  
  
      // $ANTLR start "ruleInstruction_lshr"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8689:1: ruleInstruction_lshr returns [EObject current=null] : ( ( (lv_opcode_0_0= 'lshr' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_lshr() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_4=null;
          EObject lv_type_2_0 = null;
  
          EObject lv_op1_3_0 = null;
  
          EObject lv_op2_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8692:28: ( ( ( (lv_opcode_0_0= 'lshr' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8693:1: ( ( (lv_opcode_0_0= 'lshr' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8693:1: ( ( (lv_opcode_0_0= 'lshr' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8693:2: ( (lv_opcode_0_0= 'lshr' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8693:2: ( (lv_opcode_0_0= 'lshr' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8694:1: (lv_opcode_0_0= 'lshr' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8694:1: (lv_opcode_0_0= 'lshr' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8695:3: lv_opcode_0_0= 'lshr'
              {
              lv_opcode_0_0=(Token)match(input,60,FollowSets001.FOLLOW_60_in_ruleInstruction_lshr18956); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_lshrAccess().getOpcodeLshrKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_lshrRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "lshr");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8708:2: (otherlv_1= 'exact' )?
              int alt103=2;
              int LA103_0 = input.LA(1);
  
              if ( (LA103_0==62) ) {
                  alt103=1;
              }
              switch (alt103) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8708:4: otherlv_1= 'exact'
                      {
                      otherlv_1=(Token)match(input,62,FollowSets001.FOLLOW_62_in_ruleInstruction_lshr18982); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getInstruction_lshrAccess().getExactKeyword_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8712:3: ( (lv_type_2_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8713:1: (lv_type_2_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8713:1: (lv_type_2_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8714:3: lv_type_2_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_lshrAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_lshr19005);
              lv_type_2_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_lshrRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_2_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8730:2: ( (lv_op1_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8731:1: (lv_op1_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8731:1: (lv_op1_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8732:3: lv_op1_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_lshrAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_lshr19026);
              lv_op1_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_lshrRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_lshr19038); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_lshrAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8752:1: ( (lv_op2_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8753:1: (lv_op2_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8753:1: (lv_op2_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8754:3: lv_op2_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_lshrAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_lshr19059);
              lv_op2_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_lshrRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_lshr"
  
  
      // $ANTLR start "entryRuleInstruction_ashr"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8778:1: entryRuleInstruction_ashr returns [EObject current=null] : iv_ruleInstruction_ashr= ruleInstruction_ashr EOF ;
      public final EObject entryRuleInstruction_ashr() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_ashr = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8779:2: (iv_ruleInstruction_ashr= ruleInstruction_ashr EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8780:2: iv_ruleInstruction_ashr= ruleInstruction_ashr EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_ashrRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_ashr_in_entryRuleInstruction_ashr19095);
              iv_ruleInstruction_ashr=ruleInstruction_ashr();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_ashr; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_ashr19105); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_ashr"
  
  
      // $ANTLR start "ruleInstruction_ashr"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8787:1: ruleInstruction_ashr returns [EObject current=null] : ( ( (lv_opcode_0_0= 'ashr' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_ashr() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_4=null;
          EObject lv_type_2_0 = null;
  
          EObject lv_op1_3_0 = null;
  
          EObject lv_op2_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8790:28: ( ( ( (lv_opcode_0_0= 'ashr' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8791:1: ( ( (lv_opcode_0_0= 'ashr' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8791:1: ( ( (lv_opcode_0_0= 'ashr' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8791:2: ( (lv_opcode_0_0= 'ashr' ) ) (otherlv_1= 'exact' )? ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8791:2: ( (lv_opcode_0_0= 'ashr' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8792:1: (lv_opcode_0_0= 'ashr' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8792:1: (lv_opcode_0_0= 'ashr' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8793:3: lv_opcode_0_0= 'ashr'
              {
              lv_opcode_0_0=(Token)match(input,61,FollowSets001.FOLLOW_61_in_ruleInstruction_ashr19148); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_ashrAccess().getOpcodeAshrKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_ashrRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "ashr");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8806:2: (otherlv_1= 'exact' )?
              int alt104=2;
              int LA104_0 = input.LA(1);
  
              if ( (LA104_0==62) ) {
                  alt104=1;
              }
              switch (alt104) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8806:4: otherlv_1= 'exact'
                      {
                      otherlv_1=(Token)match(input,62,FollowSets001.FOLLOW_62_in_ruleInstruction_ashr19174); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getInstruction_ashrAccess().getExactKeyword_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8810:3: ( (lv_type_2_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8811:1: (lv_type_2_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8811:1: (lv_type_2_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8812:3: lv_type_2_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_ashrAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_ashr19197);
              lv_type_2_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_ashrRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_2_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8828:2: ( (lv_op1_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8829:1: (lv_op1_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8829:1: (lv_op1_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8830:3: lv_op1_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_ashrAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_ashr19218);
              lv_op1_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_ashrRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_ashr19230); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_ashrAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8850:1: ( (lv_op2_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8851:1: (lv_op2_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8851:1: (lv_op2_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8852:3: lv_op2_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_ashrAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_ashr19251);
              lv_op2_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_ashrRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_ashr"
  
  
      // $ANTLR start "entryRuleInstruction_and"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8876:1: entryRuleInstruction_and returns [EObject current=null] : iv_ruleInstruction_and= ruleInstruction_and EOF ;
      public final EObject entryRuleInstruction_and() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_and = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8877:2: (iv_ruleInstruction_and= ruleInstruction_and EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8878:2: iv_ruleInstruction_and= ruleInstruction_and EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_andRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_and_in_entryRuleInstruction_and19287);
              iv_ruleInstruction_and=ruleInstruction_and();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_and; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_and19297); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_and"
  
  
      // $ANTLR start "ruleInstruction_and"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8885:1: ruleInstruction_and returns [EObject current=null] : ( ( (lv_opcode_0_0= 'and' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_and() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_3=null;
          EObject lv_type_1_0 = null;
  
          EObject lv_op1_2_0 = null;
  
          EObject lv_op2_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8888:28: ( ( ( (lv_opcode_0_0= 'and' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8889:1: ( ( (lv_opcode_0_0= 'and' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8889:1: ( ( (lv_opcode_0_0= 'and' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8889:2: ( (lv_opcode_0_0= 'and' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8889:2: ( (lv_opcode_0_0= 'and' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8890:1: (lv_opcode_0_0= 'and' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8890:1: (lv_opcode_0_0= 'and' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8891:3: lv_opcode_0_0= 'and'
              {
              lv_opcode_0_0=(Token)match(input,70,FollowSets001.FOLLOW_70_in_ruleInstruction_and19340); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_andAccess().getOpcodeAndKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_andRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "and");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8904:2: ( (lv_type_1_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8905:1: (lv_type_1_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8905:1: (lv_type_1_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8906:3: lv_type_1_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_andAccess().getTypeTypeParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_and19374);
              lv_type_1_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_andRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_1_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8922:2: ( (lv_op1_2_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8923:1: (lv_op1_2_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8923:1: (lv_op1_2_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8924:3: lv_op1_2_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_andAccess().getOp1ValueRefParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_and19395);
              lv_op1_2_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_andRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_2_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_and19407); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getInstruction_andAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8944:1: ( (lv_op2_4_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8945:1: (lv_op2_4_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8945:1: (lv_op2_4_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8946:3: lv_op2_4_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_andAccess().getOp2ValueRefParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_and19428);
              lv_op2_4_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_andRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_4_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_and"
  
  
      // $ANTLR start "entryRuleInstruction_or"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8970:1: entryRuleInstruction_or returns [EObject current=null] : iv_ruleInstruction_or= ruleInstruction_or EOF ;
      public final EObject entryRuleInstruction_or() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_or = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8971:2: (iv_ruleInstruction_or= ruleInstruction_or EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8972:2: iv_ruleInstruction_or= ruleInstruction_or EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_orRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_or_in_entryRuleInstruction_or19464);
              iv_ruleInstruction_or=ruleInstruction_or();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_or; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_or19474); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_or"
  
  
      // $ANTLR start "ruleInstruction_or"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8979:1: ruleInstruction_or returns [EObject current=null] : ( ( (lv_opcode_0_0= 'or' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_or() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_3=null;
          EObject lv_type_1_0 = null;
  
          EObject lv_op1_2_0 = null;
  
          EObject lv_op2_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8982:28: ( ( ( (lv_opcode_0_0= 'or' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8983:1: ( ( (lv_opcode_0_0= 'or' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8983:1: ( ( (lv_opcode_0_0= 'or' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8983:2: ( (lv_opcode_0_0= 'or' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8983:2: ( (lv_opcode_0_0= 'or' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8984:1: (lv_opcode_0_0= 'or' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8984:1: (lv_opcode_0_0= 'or' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8985:3: lv_opcode_0_0= 'or'
              {
              lv_opcode_0_0=(Token)match(input,71,FollowSets001.FOLLOW_71_in_ruleInstruction_or19517); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_orAccess().getOpcodeOrKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_orRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "or");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8998:2: ( (lv_type_1_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8999:1: (lv_type_1_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:8999:1: (lv_type_1_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9000:3: lv_type_1_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_orAccess().getTypeTypeParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_or19551);
              lv_type_1_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_orRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_1_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9016:2: ( (lv_op1_2_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9017:1: (lv_op1_2_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9017:1: (lv_op1_2_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9018:3: lv_op1_2_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_orAccess().getOp1ValueRefParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_or19572);
              lv_op1_2_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_orRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_2_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_or19584); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getInstruction_orAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9038:1: ( (lv_op2_4_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9039:1: (lv_op2_4_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9039:1: (lv_op2_4_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9040:3: lv_op2_4_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_orAccess().getOp2ValueRefParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_or19605);
              lv_op2_4_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_orRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_4_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_or"
  
  
      // $ANTLR start "entryRuleInstruction_xor"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9064:1: entryRuleInstruction_xor returns [EObject current=null] : iv_ruleInstruction_xor= ruleInstruction_xor EOF ;
      public final EObject entryRuleInstruction_xor() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_xor = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9065:2: (iv_ruleInstruction_xor= ruleInstruction_xor EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9066:2: iv_ruleInstruction_xor= ruleInstruction_xor EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_xorRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_xor_in_entryRuleInstruction_xor19641);
              iv_ruleInstruction_xor=ruleInstruction_xor();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_xor; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_xor19651); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_xor"
  
  
      // $ANTLR start "ruleInstruction_xor"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9073:1: ruleInstruction_xor returns [EObject current=null] : ( ( (lv_opcode_0_0= 'xor' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_xor() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_3=null;
          EObject lv_type_1_0 = null;
  
          EObject lv_op1_2_0 = null;
  
          EObject lv_op2_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9076:28: ( ( ( (lv_opcode_0_0= 'xor' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9077:1: ( ( (lv_opcode_0_0= 'xor' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9077:1: ( ( (lv_opcode_0_0= 'xor' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9077:2: ( (lv_opcode_0_0= 'xor' ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_op1_2_0= ruleValueRef ) ) otherlv_3= ',' ( (lv_op2_4_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9077:2: ( (lv_opcode_0_0= 'xor' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9078:1: (lv_opcode_0_0= 'xor' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9078:1: (lv_opcode_0_0= 'xor' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9079:3: lv_opcode_0_0= 'xor'
              {
              lv_opcode_0_0=(Token)match(input,72,FollowSets001.FOLLOW_72_in_ruleInstruction_xor19694); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_xorAccess().getOpcodeXorKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_xorRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "xor");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9092:2: ( (lv_type_1_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9093:1: (lv_type_1_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9093:1: (lv_type_1_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9094:3: lv_type_1_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_xorAccess().getTypeTypeParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_xor19728);
              lv_type_1_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_xorRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_1_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9110:2: ( (lv_op1_2_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9111:1: (lv_op1_2_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9111:1: (lv_op1_2_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9112:3: lv_op1_2_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_xorAccess().getOp1ValueRefParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_xor19749);
              lv_op1_2_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_xorRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_2_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_xor19761); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getInstruction_xorAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9132:1: ( (lv_op2_4_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9133:1: (lv_op2_4_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9133:1: (lv_op2_4_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9134:3: lv_op2_4_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_xorAccess().getOp2ValueRefParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_xor19782);
              lv_op2_4_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_xorRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_4_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_xor"
  
  
      // $ANTLR start "entryRuleVectorInstructions"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9158:1: entryRuleVectorInstructions returns [EObject current=null] : iv_ruleVectorInstructions= ruleVectorInstructions EOF ;
      public final EObject entryRuleVectorInstructions() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleVectorInstructions = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9159:2: (iv_ruleVectorInstructions= ruleVectorInstructions EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9160:2: iv_ruleVectorInstructions= ruleVectorInstructions EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getVectorInstructionsRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleVectorInstructions_in_entryRuleVectorInstructions19818);
              iv_ruleVectorInstructions=ruleVectorInstructions();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleVectorInstructions; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleVectorInstructions19828); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleVectorInstructions"
  
  
      // $ANTLR start "ruleVectorInstructions"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9167:1: ruleVectorInstructions returns [EObject current=null] : (this_Instruction_extractelement_0= ruleInstruction_extractelement | this_Instruction_insertelement_1= ruleInstruction_insertelement | this_Instruction_shufflevector_2= ruleInstruction_shufflevector ) ;
      public final EObject ruleVectorInstructions() throws RecognitionException {
          EObject current = null;
  
          EObject this_Instruction_extractelement_0 = null;
  
          EObject this_Instruction_insertelement_1 = null;
  
          EObject this_Instruction_shufflevector_2 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9170:28: ( (this_Instruction_extractelement_0= ruleInstruction_extractelement | this_Instruction_insertelement_1= ruleInstruction_insertelement | this_Instruction_shufflevector_2= ruleInstruction_shufflevector ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9171:1: (this_Instruction_extractelement_0= ruleInstruction_extractelement | this_Instruction_insertelement_1= ruleInstruction_insertelement | this_Instruction_shufflevector_2= ruleInstruction_shufflevector )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9171:1: (this_Instruction_extractelement_0= ruleInstruction_extractelement | this_Instruction_insertelement_1= ruleInstruction_insertelement | this_Instruction_shufflevector_2= ruleInstruction_shufflevector )
              int alt105=3;
              switch ( input.LA(1) ) {
              case 47:
                  {
                  alt105=1;
                  }
                  break;
              case 48:
                  {
                  alt105=2;
                  }
                  break;
              case 49:
                  {
                  alt105=3;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 105, 0, input);
  
                  throw nvae;
              }
  
              switch (alt105) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9172:5: this_Instruction_extractelement_0= ruleInstruction_extractelement
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getVectorInstructionsAccess().getInstruction_extractelementParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_extractelement_in_ruleVectorInstructions19875);
                      this_Instruction_extractelement_0=ruleInstruction_extractelement();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_extractelement_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9182:5: this_Instruction_insertelement_1= ruleInstruction_insertelement
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getVectorInstructionsAccess().getInstruction_insertelementParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_insertelement_in_ruleVectorInstructions19902);
                      this_Instruction_insertelement_1=ruleInstruction_insertelement();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_insertelement_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9192:5: this_Instruction_shufflevector_2= ruleInstruction_shufflevector
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getVectorInstructionsAccess().getInstruction_shufflevectorParserRuleCall_2()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_shufflevector_in_ruleVectorInstructions19929);
                      this_Instruction_shufflevector_2=ruleInstruction_shufflevector();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_shufflevector_2; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleVectorInstructions"
  
  
      // $ANTLR start "entryRuleInstruction_extractelement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9208:1: entryRuleInstruction_extractelement returns [EObject current=null] : iv_ruleInstruction_extractelement= ruleInstruction_extractelement EOF ;
      public final EObject entryRuleInstruction_extractelement() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_extractelement = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9209:2: (iv_ruleInstruction_extractelement= ruleInstruction_extractelement EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9210:2: iv_ruleInstruction_extractelement= ruleInstruction_extractelement EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_extractelementRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_extractelement_in_entryRuleInstruction_extractelement19964);
              iv_ruleInstruction_extractelement=ruleInstruction_extractelement();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_extractelement; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_extractelement19974); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_extractelement"
  
  
      // $ANTLR start "ruleInstruction_extractelement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9217:1: ruleInstruction_extractelement returns [EObject current=null] : ( ( (lv_opcode_0_0= 'extractelement' ) ) ( (lv_vector_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_index_3_0= ruleTypedValue ) ) ) ;
      public final EObject ruleInstruction_extractelement() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          EObject lv_vector_1_0 = null;
  
          EObject lv_index_3_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9220:28: ( ( ( (lv_opcode_0_0= 'extractelement' ) ) ( (lv_vector_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_index_3_0= ruleTypedValue ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9221:1: ( ( (lv_opcode_0_0= 'extractelement' ) ) ( (lv_vector_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_index_3_0= ruleTypedValue ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9221:1: ( ( (lv_opcode_0_0= 'extractelement' ) ) ( (lv_vector_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_index_3_0= ruleTypedValue ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9221:2: ( (lv_opcode_0_0= 'extractelement' ) ) ( (lv_vector_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_index_3_0= ruleTypedValue ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9221:2: ( (lv_opcode_0_0= 'extractelement' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9222:1: (lv_opcode_0_0= 'extractelement' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9222:1: (lv_opcode_0_0= 'extractelement' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9223:3: lv_opcode_0_0= 'extractelement'
              {
              lv_opcode_0_0=(Token)match(input,47,FollowSets001.FOLLOW_47_in_ruleInstruction_extractelement20017); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_extractelementAccess().getOpcodeExtractelementKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_extractelementRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "extractelement");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9236:2: ( (lv_vector_1_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9237:1: (lv_vector_1_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9237:1: (lv_vector_1_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9238:3: lv_vector_1_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_extractelementAccess().getVectorTypedValueParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_extractelement20051);
              lv_vector_1_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_extractelementRule());
                	        }
                       		set(
                       			current, 
                       			"vector",
                        		lv_vector_1_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_extractelement20063); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getInstruction_extractelementAccess().getCommaKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9258:1: ( (lv_index_3_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9259:1: (lv_index_3_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9259:1: (lv_index_3_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9260:3: lv_index_3_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_extractelementAccess().getIndexTypedValueParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_extractelement20084);
              lv_index_3_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_extractelementRule());
                	        }
                       		set(
                       			current, 
                       			"index",
                        		lv_index_3_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_extractelement"
  
  
      // $ANTLR start "entryRuleInstruction_insertelement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9284:1: entryRuleInstruction_insertelement returns [EObject current=null] : iv_ruleInstruction_insertelement= ruleInstruction_insertelement EOF ;
      public final EObject entryRuleInstruction_insertelement() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_insertelement = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9285:2: (iv_ruleInstruction_insertelement= ruleInstruction_insertelement EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9286:2: iv_ruleInstruction_insertelement= ruleInstruction_insertelement EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_insertelementRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_insertelement_in_entryRuleInstruction_insertelement20120);
              iv_ruleInstruction_insertelement=ruleInstruction_insertelement();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_insertelement; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_insertelement20130); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_insertelement"
  
  
      // $ANTLR start "ruleInstruction_insertelement"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9293:1: ruleInstruction_insertelement returns [EObject current=null] : ( ( (lv_opcode_0_0= 'insertelement' ) ) ( (lv_vector_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_element_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_index_5_0= ruleTypedValue ) ) ) ;
      public final EObject ruleInstruction_insertelement() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          EObject lv_vector_1_0 = null;
  
          EObject lv_element_3_0 = null;
  
          EObject lv_index_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9296:28: ( ( ( (lv_opcode_0_0= 'insertelement' ) ) ( (lv_vector_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_element_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_index_5_0= ruleTypedValue ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9297:1: ( ( (lv_opcode_0_0= 'insertelement' ) ) ( (lv_vector_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_element_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_index_5_0= ruleTypedValue ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9297:1: ( ( (lv_opcode_0_0= 'insertelement' ) ) ( (lv_vector_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_element_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_index_5_0= ruleTypedValue ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9297:2: ( (lv_opcode_0_0= 'insertelement' ) ) ( (lv_vector_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_element_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_index_5_0= ruleTypedValue ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9297:2: ( (lv_opcode_0_0= 'insertelement' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9298:1: (lv_opcode_0_0= 'insertelement' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9298:1: (lv_opcode_0_0= 'insertelement' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9299:3: lv_opcode_0_0= 'insertelement'
              {
              lv_opcode_0_0=(Token)match(input,48,FollowSets001.FOLLOW_48_in_ruleInstruction_insertelement20173); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_insertelementAccess().getOpcodeInsertelementKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_insertelementRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "insertelement");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9312:2: ( (lv_vector_1_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9313:1: (lv_vector_1_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9313:1: (lv_vector_1_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9314:3: lv_vector_1_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_insertelementAccess().getVectorTypedValueParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_insertelement20207);
              lv_vector_1_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_insertelementRule());
                	        }
                       		set(
                       			current, 
                       			"vector",
                        		lv_vector_1_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_insertelement20219); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getInstruction_insertelementAccess().getCommaKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9334:1: ( (lv_element_3_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9335:1: (lv_element_3_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9335:1: (lv_element_3_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9336:3: lv_element_3_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_insertelementAccess().getElementTypedValueParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_insertelement20240);
              lv_element_3_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_insertelementRule());
                	        }
                       		set(
                       			current, 
                       			"element",
                        		lv_element_3_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_insertelement20252); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_insertelementAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9356:1: ( (lv_index_5_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9357:1: (lv_index_5_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9357:1: (lv_index_5_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9358:3: lv_index_5_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_insertelementAccess().getIndexTypedValueParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_insertelement20273);
              lv_index_5_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_insertelementRule());
                	        }
                       		set(
                       			current, 
                       			"index",
                        		lv_index_5_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_insertelement"
  
  
      // $ANTLR start "entryRuleInstruction_shufflevector"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9382:1: entryRuleInstruction_shufflevector returns [EObject current=null] : iv_ruleInstruction_shufflevector= ruleInstruction_shufflevector EOF ;
      public final EObject entryRuleInstruction_shufflevector() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_shufflevector = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9383:2: (iv_ruleInstruction_shufflevector= ruleInstruction_shufflevector EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9384:2: iv_ruleInstruction_shufflevector= ruleInstruction_shufflevector EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_shufflevectorRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_shufflevector_in_entryRuleInstruction_shufflevector20309);
              iv_ruleInstruction_shufflevector=ruleInstruction_shufflevector();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_shufflevector; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_shufflevector20319); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_shufflevector"
  
  
      // $ANTLR start "ruleInstruction_shufflevector"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9391:1: ruleInstruction_shufflevector returns [EObject current=null] : ( ( (lv_opcode_0_0= 'shufflevector' ) ) ( (lv_vector1_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_vector2_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_mask_5_0= ruleTypedValue ) ) ) ;
      public final EObject ruleInstruction_shufflevector() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          EObject lv_vector1_1_0 = null;
  
          EObject lv_vector2_3_0 = null;
  
          EObject lv_mask_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9394:28: ( ( ( (lv_opcode_0_0= 'shufflevector' ) ) ( (lv_vector1_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_vector2_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_mask_5_0= ruleTypedValue ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9395:1: ( ( (lv_opcode_0_0= 'shufflevector' ) ) ( (lv_vector1_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_vector2_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_mask_5_0= ruleTypedValue ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9395:1: ( ( (lv_opcode_0_0= 'shufflevector' ) ) ( (lv_vector1_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_vector2_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_mask_5_0= ruleTypedValue ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9395:2: ( (lv_opcode_0_0= 'shufflevector' ) ) ( (lv_vector1_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_vector2_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_mask_5_0= ruleTypedValue ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9395:2: ( (lv_opcode_0_0= 'shufflevector' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9396:1: (lv_opcode_0_0= 'shufflevector' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9396:1: (lv_opcode_0_0= 'shufflevector' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9397:3: lv_opcode_0_0= 'shufflevector'
              {
              lv_opcode_0_0=(Token)match(input,49,FollowSets001.FOLLOW_49_in_ruleInstruction_shufflevector20362); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_shufflevectorAccess().getOpcodeShufflevectorKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_shufflevectorRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "shufflevector");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9410:2: ( (lv_vector1_1_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9411:1: (lv_vector1_1_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9411:1: (lv_vector1_1_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9412:3: lv_vector1_1_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_shufflevectorAccess().getVector1TypedValueParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_shufflevector20396);
              lv_vector1_1_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_shufflevectorRule());
                	        }
                       		set(
                       			current, 
                       			"vector1",
                        		lv_vector1_1_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_shufflevector20408); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getInstruction_shufflevectorAccess().getCommaKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9432:1: ( (lv_vector2_3_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9433:1: (lv_vector2_3_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9433:1: (lv_vector2_3_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9434:3: lv_vector2_3_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_shufflevectorAccess().getVector2TypedValueParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_shufflevector20429);
              lv_vector2_3_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_shufflevectorRule());
                	        }
                       		set(
                       			current, 
                       			"vector2",
                        		lv_vector2_3_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_shufflevector20441); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_shufflevectorAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9454:1: ( (lv_mask_5_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9455:1: (lv_mask_5_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9455:1: (lv_mask_5_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9456:3: lv_mask_5_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_shufflevectorAccess().getMaskTypedValueParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_shufflevector20462);
              lv_mask_5_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_shufflevectorRule());
                	        }
                       		set(
                       			current, 
                       			"mask",
                        		lv_mask_5_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_shufflevector"
  
  
      // $ANTLR start "entryRuleAggregateInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9480:1: entryRuleAggregateInstruction returns [EObject current=null] : iv_ruleAggregateInstruction= ruleAggregateInstruction EOF ;
      public final EObject entryRuleAggregateInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleAggregateInstruction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9481:2: (iv_ruleAggregateInstruction= ruleAggregateInstruction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9482:2: iv_ruleAggregateInstruction= ruleAggregateInstruction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getAggregateInstructionRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleAggregateInstruction_in_entryRuleAggregateInstruction20498);
              iv_ruleAggregateInstruction=ruleAggregateInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleAggregateInstruction; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleAggregateInstruction20508); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleAggregateInstruction"
  
  
      // $ANTLR start "ruleAggregateInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9489:1: ruleAggregateInstruction returns [EObject current=null] : (this_Instruction_extractvalue_0= ruleInstruction_extractvalue | this_Instruction_insertvalue_1= ruleInstruction_insertvalue ) ;
      public final EObject ruleAggregateInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject this_Instruction_extractvalue_0 = null;
  
          EObject this_Instruction_insertvalue_1 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9492:28: ( (this_Instruction_extractvalue_0= ruleInstruction_extractvalue | this_Instruction_insertvalue_1= ruleInstruction_insertvalue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9493:1: (this_Instruction_extractvalue_0= ruleInstruction_extractvalue | this_Instruction_insertvalue_1= ruleInstruction_insertvalue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9493:1: (this_Instruction_extractvalue_0= ruleInstruction_extractvalue | this_Instruction_insertvalue_1= ruleInstruction_insertvalue )
              int alt106=2;
              int LA106_0 = input.LA(1);
  
              if ( (LA106_0==50) ) {
                  alt106=1;
              }
              else if ( (LA106_0==51) ) {
                  alt106=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 106, 0, input);
  
                  throw nvae;
              }
              switch (alt106) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9494:5: this_Instruction_extractvalue_0= ruleInstruction_extractvalue
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getAggregateInstructionAccess().getInstruction_extractvalueParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_extractvalue_in_ruleAggregateInstruction20555);
                      this_Instruction_extractvalue_0=ruleInstruction_extractvalue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_extractvalue_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9504:5: this_Instruction_insertvalue_1= ruleInstruction_insertvalue
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getAggregateInstructionAccess().getInstruction_insertvalueParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_insertvalue_in_ruleAggregateInstruction20582);
                      this_Instruction_insertvalue_1=ruleInstruction_insertvalue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_insertvalue_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleAggregateInstruction"
  
  
      // $ANTLR start "entryRuleInstruction_extractvalue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9520:1: entryRuleInstruction_extractvalue returns [EObject current=null] : iv_ruleInstruction_extractvalue= ruleInstruction_extractvalue EOF ;
      public final EObject entryRuleInstruction_extractvalue() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_extractvalue = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9521:2: (iv_ruleInstruction_extractvalue= ruleInstruction_extractvalue EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9522:2: iv_ruleInstruction_extractvalue= ruleInstruction_extractvalue EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_extractvalueRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_extractvalue_in_entryRuleInstruction_extractvalue20617);
              iv_ruleInstruction_extractvalue=ruleInstruction_extractvalue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_extractvalue; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_extractvalue20627); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_extractvalue"
  
  
      // $ANTLR start "ruleInstruction_extractvalue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9529:1: ruleInstruction_extractvalue returns [EObject current=null] : ( ( (lv_opcode_0_0= 'extractvalue' ) ) ( (lv_aggregate_1_0= ruleTypedValue ) ) (otherlv_2= ',' ( (lv_indices_3_0= ruleConstant ) ) )+ ) ;
      public final EObject ruleInstruction_extractvalue() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          EObject lv_aggregate_1_0 = null;
  
          EObject lv_indices_3_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9532:28: ( ( ( (lv_opcode_0_0= 'extractvalue' ) ) ( (lv_aggregate_1_0= ruleTypedValue ) ) (otherlv_2= ',' ( (lv_indices_3_0= ruleConstant ) ) )+ ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9533:1: ( ( (lv_opcode_0_0= 'extractvalue' ) ) ( (lv_aggregate_1_0= ruleTypedValue ) ) (otherlv_2= ',' ( (lv_indices_3_0= ruleConstant ) ) )+ )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9533:1: ( ( (lv_opcode_0_0= 'extractvalue' ) ) ( (lv_aggregate_1_0= ruleTypedValue ) ) (otherlv_2= ',' ( (lv_indices_3_0= ruleConstant ) ) )+ )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9533:2: ( (lv_opcode_0_0= 'extractvalue' ) ) ( (lv_aggregate_1_0= ruleTypedValue ) ) (otherlv_2= ',' ( (lv_indices_3_0= ruleConstant ) ) )+
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9533:2: ( (lv_opcode_0_0= 'extractvalue' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9534:1: (lv_opcode_0_0= 'extractvalue' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9534:1: (lv_opcode_0_0= 'extractvalue' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9535:3: lv_opcode_0_0= 'extractvalue'
              {
              lv_opcode_0_0=(Token)match(input,50,FollowSets001.FOLLOW_50_in_ruleInstruction_extractvalue20670); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_extractvalueAccess().getOpcodeExtractvalueKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_extractvalueRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "extractvalue");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9548:2: ( (lv_aggregate_1_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9549:1: (lv_aggregate_1_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9549:1: (lv_aggregate_1_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9550:3: lv_aggregate_1_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_extractvalueAccess().getAggregateTypedValueParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_extractvalue20704);
              lv_aggregate_1_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_extractvalueRule());
                	        }
                       		set(
                       			current, 
                       			"aggregate",
                        		lv_aggregate_1_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9566:2: (otherlv_2= ',' ( (lv_indices_3_0= ruleConstant ) ) )+
              int cnt107=0;
              loop107:
              do {
                  int alt107=2;
                  int LA107_0 = input.LA(1);
  
                  if ( (LA107_0==38) ) {
                      int LA107_2 = input.LA(2);
  
                      if ( (LA107_2==RULE_INTEGER||(LA107_2>=RULE_GLOBAL_ID && LA107_2<=RULE_METADATA_STRING)||LA107_2==26||LA107_2==42||(LA107_2>=44 && LA107_2<=55)||(LA107_2>=58 && LA107_2<=61)||(LA107_2>=63 && LA107_2<=76)||LA107_2==78||LA107_2==80||(LA107_2>=157 && LA107_2<=169)) ) {
                          alt107=1;
                      }
  
  
                  }
  
  
                  switch (alt107) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9566:4: otherlv_2= ',' ( (lv_indices_3_0= ruleConstant ) )
              	    {
              	    otherlv_2=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_extractvalue20717); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_2, grammarAccess.getInstruction_extractvalueAccess().getCommaKeyword_2_0());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9570:1: ( (lv_indices_3_0= ruleConstant ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9571:1: (lv_indices_3_0= ruleConstant )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9571:1: (lv_indices_3_0= ruleConstant )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9572:3: lv_indices_3_0= ruleConstant
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_extractvalueAccess().getIndicesConstantParserRuleCall_2_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets001.FOLLOW_ruleConstant_in_ruleInstruction_extractvalue20738);
              	    lv_indices_3_0=ruleConstant();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_extractvalueRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"indices",
              	              		lv_indices_3_0, 
              	              		"Constant");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    if ( cnt107 >= 1 ) break loop107;
              	    if (state.backtracking>0) {state.failed=true; return current;}
                          EarlyExitException eee =
                              new EarlyExitException(107, input);
                          throw eee;
                  }
                  cnt107++;
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_extractvalue"
  
  
      // $ANTLR start "entryRuleInstruction_insertvalue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9596:1: entryRuleInstruction_insertvalue returns [EObject current=null] : iv_ruleInstruction_insertvalue= ruleInstruction_insertvalue EOF ;
      public final EObject entryRuleInstruction_insertvalue() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_insertvalue = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9597:2: (iv_ruleInstruction_insertvalue= ruleInstruction_insertvalue EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9598:2: iv_ruleInstruction_insertvalue= ruleInstruction_insertvalue EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_insertvalueRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_insertvalue_in_entryRuleInstruction_insertvalue20776);
              iv_ruleInstruction_insertvalue=ruleInstruction_insertvalue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_insertvalue; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_insertvalue20786); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_insertvalue"
  
  
      // $ANTLR start "ruleInstruction_insertvalue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9605:1: ruleInstruction_insertvalue returns [EObject current=null] : ( ( (lv_opcode_0_0= 'insertvalue' ) ) ( (lv_aggregate_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_element_3_0= ruleTypedValue ) ) (otherlv_4= ',' ( (lv_indices_5_0= ruleConstant ) ) )+ ) ;
      public final EObject ruleInstruction_insertvalue() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          EObject lv_aggregate_1_0 = null;
  
          EObject lv_element_3_0 = null;
  
          EObject lv_indices_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9608:28: ( ( ( (lv_opcode_0_0= 'insertvalue' ) ) ( (lv_aggregate_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_element_3_0= ruleTypedValue ) ) (otherlv_4= ',' ( (lv_indices_5_0= ruleConstant ) ) )+ ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9609:1: ( ( (lv_opcode_0_0= 'insertvalue' ) ) ( (lv_aggregate_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_element_3_0= ruleTypedValue ) ) (otherlv_4= ',' ( (lv_indices_5_0= ruleConstant ) ) )+ )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9609:1: ( ( (lv_opcode_0_0= 'insertvalue' ) ) ( (lv_aggregate_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_element_3_0= ruleTypedValue ) ) (otherlv_4= ',' ( (lv_indices_5_0= ruleConstant ) ) )+ )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9609:2: ( (lv_opcode_0_0= 'insertvalue' ) ) ( (lv_aggregate_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_element_3_0= ruleTypedValue ) ) (otherlv_4= ',' ( (lv_indices_5_0= ruleConstant ) ) )+
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9609:2: ( (lv_opcode_0_0= 'insertvalue' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9610:1: (lv_opcode_0_0= 'insertvalue' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9610:1: (lv_opcode_0_0= 'insertvalue' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9611:3: lv_opcode_0_0= 'insertvalue'
              {
              lv_opcode_0_0=(Token)match(input,51,FollowSets001.FOLLOW_51_in_ruleInstruction_insertvalue20829); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_insertvalueAccess().getOpcodeInsertvalueKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_insertvalueRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "insertvalue");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9624:2: ( (lv_aggregate_1_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9625:1: (lv_aggregate_1_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9625:1: (lv_aggregate_1_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9626:3: lv_aggregate_1_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_insertvalueAccess().getAggregateTypedValueParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_insertvalue20863);
              lv_aggregate_1_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_insertvalueRule());
                	        }
                       		set(
                       			current, 
                       			"aggregate",
                        		lv_aggregate_1_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_insertvalue20875); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getInstruction_insertvalueAccess().getCommaKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9646:1: ( (lv_element_3_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9647:1: (lv_element_3_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9647:1: (lv_element_3_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9648:3: lv_element_3_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_insertvalueAccess().getElementTypedValueParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_insertvalue20896);
              lv_element_3_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_insertvalueRule());
                	        }
                       		set(
                       			current, 
                       			"element",
                        		lv_element_3_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9664:2: (otherlv_4= ',' ( (lv_indices_5_0= ruleConstant ) ) )+
              int cnt108=0;
              loop108:
              do {
                  int alt108=2;
                  int LA108_0 = input.LA(1);
  
                  if ( (LA108_0==38) ) {
                      int LA108_2 = input.LA(2);
  
                      if ( (LA108_2==RULE_INTEGER||(LA108_2>=RULE_GLOBAL_ID && LA108_2<=RULE_METADATA_STRING)||LA108_2==26||LA108_2==42||(LA108_2>=44 && LA108_2<=55)||(LA108_2>=58 && LA108_2<=61)||(LA108_2>=63 && LA108_2<=76)||LA108_2==78||LA108_2==80||(LA108_2>=157 && LA108_2<=169)) ) {
                          alt108=1;
                      }
  
  
                  }
  
  
                  switch (alt108) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9664:4: otherlv_4= ',' ( (lv_indices_5_0= ruleConstant ) )
              	    {
              	    otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_insertvalue20909); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_4, grammarAccess.getInstruction_insertvalueAccess().getCommaKeyword_4_0());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9668:1: ( (lv_indices_5_0= ruleConstant ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9669:1: (lv_indices_5_0= ruleConstant )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9669:1: (lv_indices_5_0= ruleConstant )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9670:3: lv_indices_5_0= ruleConstant
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_insertvalueAccess().getIndicesConstantParserRuleCall_4_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets001.FOLLOW_ruleConstant_in_ruleInstruction_insertvalue20930);
              	    lv_indices_5_0=ruleConstant();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_insertvalueRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"indices",
              	              		lv_indices_5_0, 
              	              		"Constant");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    if ( cnt108 >= 1 ) break loop108;
              	    if (state.backtracking>0) {state.failed=true; return current;}
                          EarlyExitException eee =
                              new EarlyExitException(108, input);
                          throw eee;
                  }
                  cnt108++;
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_insertvalue"
  
  
      // $ANTLR start "entryRuleInstruction_alloca"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9696:1: entryRuleInstruction_alloca returns [EObject current=null] : iv_ruleInstruction_alloca= ruleInstruction_alloca EOF ;
      public final EObject entryRuleInstruction_alloca() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_alloca = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9697:2: (iv_ruleInstruction_alloca= ruleInstruction_alloca EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9698:2: iv_ruleInstruction_alloca= ruleInstruction_alloca EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_allocaRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_alloca_in_entryRuleInstruction_alloca20970);
              iv_ruleInstruction_alloca=ruleInstruction_alloca();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_alloca; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_alloca20980); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_alloca"
  
  
      // $ANTLR start "ruleInstruction_alloca"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9705:1: ruleInstruction_alloca returns [EObject current=null] : ( ( (lv_opcode_0_0= 'alloca' ) ) ( (lv_type_1_0= ruleType ) ) (otherlv_2= ',' ( (lv_numElements_3_0= ruleTypedValue ) ) )? (otherlv_4= ',' ( (lv_alignment_5_0= ruleAlign ) ) )? ) ;
      public final EObject ruleInstruction_alloca() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          EObject lv_type_1_0 = null;
  
          EObject lv_numElements_3_0 = null;
  
          AntlrDatatypeRuleToken lv_alignment_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9708:28: ( ( ( (lv_opcode_0_0= 'alloca' ) ) ( (lv_type_1_0= ruleType ) ) (otherlv_2= ',' ( (lv_numElements_3_0= ruleTypedValue ) ) )? (otherlv_4= ',' ( (lv_alignment_5_0= ruleAlign ) ) )? ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9709:1: ( ( (lv_opcode_0_0= 'alloca' ) ) ( (lv_type_1_0= ruleType ) ) (otherlv_2= ',' ( (lv_numElements_3_0= ruleTypedValue ) ) )? (otherlv_4= ',' ( (lv_alignment_5_0= ruleAlign ) ) )? )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9709:1: ( ( (lv_opcode_0_0= 'alloca' ) ) ( (lv_type_1_0= ruleType ) ) (otherlv_2= ',' ( (lv_numElements_3_0= ruleTypedValue ) ) )? (otherlv_4= ',' ( (lv_alignment_5_0= ruleAlign ) ) )? )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9709:2: ( (lv_opcode_0_0= 'alloca' ) ) ( (lv_type_1_0= ruleType ) ) (otherlv_2= ',' ( (lv_numElements_3_0= ruleTypedValue ) ) )? (otherlv_4= ',' ( (lv_alignment_5_0= ruleAlign ) ) )?
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9709:2: ( (lv_opcode_0_0= 'alloca' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9710:1: (lv_opcode_0_0= 'alloca' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9710:1: (lv_opcode_0_0= 'alloca' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9711:3: lv_opcode_0_0= 'alloca'
              {
              lv_opcode_0_0=(Token)match(input,140,FollowSets001.FOLLOW_140_in_ruleInstruction_alloca21023); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_allocaAccess().getOpcodeAllocaKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_allocaRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "alloca");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9724:2: ( (lv_type_1_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9725:1: (lv_type_1_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9725:1: (lv_type_1_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9726:3: lv_type_1_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_allocaAccess().getTypeTypeParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_alloca21057);
              lv_type_1_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_allocaRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_1_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9742:2: (otherlv_2= ',' ( (lv_numElements_3_0= ruleTypedValue ) ) )?
              int alt109=2;
              int LA109_0 = input.LA(1);
  
              if ( (LA109_0==38) ) {
                  int LA109_1 = input.LA(2);
  
                  if ( (LA109_1==RULE_LOCAL_ID||LA109_1==RULE_INT_TYPE||LA109_1==26||LA109_1==28||LA109_1==76||LA109_1==78||LA109_1==123||LA109_1==216||(LA109_1>=218 && LA109_1<=224)) ) {
                      alt109=1;
                  }
              }
              switch (alt109) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9742:4: otherlv_2= ',' ( (lv_numElements_3_0= ruleTypedValue ) )
                      {
                      otherlv_2=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_alloca21070); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_2, grammarAccess.getInstruction_allocaAccess().getCommaKeyword_2_0());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9746:1: ( (lv_numElements_3_0= ruleTypedValue ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9747:1: (lv_numElements_3_0= ruleTypedValue )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9747:1: (lv_numElements_3_0= ruleTypedValue )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9748:3: lv_numElements_3_0= ruleTypedValue
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_allocaAccess().getNumElementsTypedValueParserRuleCall_2_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_alloca21091);
                      lv_numElements_3_0=ruleTypedValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_allocaRule());
                        	        }
                               		set(
                               			current, 
                               			"numElements",
                                		lv_numElements_3_0, 
                                		"TypedValue");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9764:4: (otherlv_4= ',' ( (lv_alignment_5_0= ruleAlign ) ) )?
              int alt110=2;
              int LA110_0 = input.LA(1);
  
              if ( (LA110_0==38) ) {
                  int LA110_1 = input.LA(2);
  
                  if ( (LA110_1==87) ) {
                      alt110=1;
                  }
              }
              switch (alt110) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9764:6: otherlv_4= ',' ( (lv_alignment_5_0= ruleAlign ) )
                      {
                      otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_alloca21106); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_4, grammarAccess.getInstruction_allocaAccess().getCommaKeyword_3_0());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9768:1: ( (lv_alignment_5_0= ruleAlign ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9769:1: (lv_alignment_5_0= ruleAlign )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9769:1: (lv_alignment_5_0= ruleAlign )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9770:3: lv_alignment_5_0= ruleAlign
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_allocaAccess().getAlignmentAlignParserRuleCall_3_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleAlign_in_ruleInstruction_alloca21127);
                      lv_alignment_5_0=ruleAlign();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_allocaRule());
                        	        }
                               		set(
                               			current, 
                               			"alignment",
                                		lv_alignment_5_0, 
                                		"Align");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_alloca"
  
  
      // $ANTLR start "entryRuleInstruction_load"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9794:1: entryRuleInstruction_load returns [EObject current=null] : iv_ruleInstruction_load= ruleInstruction_load EOF ;
      public final EObject entryRuleInstruction_load() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_load = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9795:2: (iv_ruleInstruction_load= ruleInstruction_load EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9796:2: iv_ruleInstruction_load= ruleInstruction_load EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_loadRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_load_in_entryRuleInstruction_load21165);
              iv_ruleInstruction_load=ruleInstruction_load();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_load; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_load21175); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_load"
  
  
      // $ANTLR start "ruleInstruction_load"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9803:1: ruleInstruction_load returns [EObject current=null] : ( ( (lv_opcode_0_0= 'load' ) ) ( ( (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_alignment_4_0= ruleAlign ) ) )? (otherlv_5= ',' otherlv_6= '!nontemporal' ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) ) )? (otherlv_8= ',' otherlv_9= '!invariant.load' ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) ) )? ) | (otherlv_11= 'atomic' (otherlv_12= 'volatile' )? ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) ) ) ;
      public final EObject ruleInstruction_load() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token otherlv_6=null;
          Token otherlv_8=null;
          Token otherlv_9=null;
          Token otherlv_11=null;
          Token otherlv_12=null;
          Token otherlv_14=null;
          EObject lv_pointer_2_0 = null;
  
          AntlrDatatypeRuleToken lv_alignment_4_0 = null;
  
          EObject lv_nontemporalIndex_7_0 = null;
  
          EObject lv_invariantLoadIndex_10_0 = null;
  
          EObject lv_pointer_13_0 = null;
  
          AntlrDatatypeRuleToken lv_ordering_15_0 = null;
  
          AntlrDatatypeRuleToken lv_alignment_16_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9806:28: ( ( ( (lv_opcode_0_0= 'load' ) ) ( ( (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_alignment_4_0= ruleAlign ) ) )? (otherlv_5= ',' otherlv_6= '!nontemporal' ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) ) )? (otherlv_8= ',' otherlv_9= '!invariant.load' ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) ) )? ) | (otherlv_11= 'atomic' (otherlv_12= 'volatile' )? ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9807:1: ( ( (lv_opcode_0_0= 'load' ) ) ( ( (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_alignment_4_0= ruleAlign ) ) )? (otherlv_5= ',' otherlv_6= '!nontemporal' ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) ) )? (otherlv_8= ',' otherlv_9= '!invariant.load' ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) ) )? ) | (otherlv_11= 'atomic' (otherlv_12= 'volatile' )? ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9807:1: ( ( (lv_opcode_0_0= 'load' ) ) ( ( (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_alignment_4_0= ruleAlign ) ) )? (otherlv_5= ',' otherlv_6= '!nontemporal' ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) ) )? (otherlv_8= ',' otherlv_9= '!invariant.load' ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) ) )? ) | (otherlv_11= 'atomic' (otherlv_12= 'volatile' )? ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9807:2: ( (lv_opcode_0_0= 'load' ) ) ( ( (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_alignment_4_0= ruleAlign ) ) )? (otherlv_5= ',' otherlv_6= '!nontemporal' ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) ) )? (otherlv_8= ',' otherlv_9= '!invariant.load' ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) ) )? ) | (otherlv_11= 'atomic' (otherlv_12= 'volatile' )? ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9807:2: ( (lv_opcode_0_0= 'load' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9808:1: (lv_opcode_0_0= 'load' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9808:1: (lv_opcode_0_0= 'load' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9809:3: lv_opcode_0_0= 'load'
              {
              lv_opcode_0_0=(Token)match(input,141,FollowSets001.FOLLOW_141_in_ruleInstruction_load21218); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_loadAccess().getOpcodeLoadKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_loadRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "load");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9822:2: ( ( (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_alignment_4_0= ruleAlign ) ) )? (otherlv_5= ',' otherlv_6= '!nontemporal' ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) ) )? (otherlv_8= ',' otherlv_9= '!invariant.load' ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) ) )? ) | (otherlv_11= 'atomic' (otherlv_12= 'volatile' )? ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) )
              int alt117=2;
              int LA117_0 = input.LA(1);
  
              if ( (LA117_0==RULE_LOCAL_ID||LA117_0==RULE_INT_TYPE||LA117_0==26||LA117_0==28||LA117_0==76||LA117_0==78||LA117_0==123||LA117_0==142||LA117_0==216||(LA117_0>=218 && LA117_0<=224)) ) {
                  alt117=1;
              }
              else if ( (LA117_0==145) ) {
                  alt117=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 117, 0, input);
  
                  throw nvae;
              }
              switch (alt117) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9822:3: ( (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_alignment_4_0= ruleAlign ) ) )? (otherlv_5= ',' otherlv_6= '!nontemporal' ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) ) )? (otherlv_8= ',' otherlv_9= '!invariant.load' ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) ) )? )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9822:3: ( (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_alignment_4_0= ruleAlign ) ) )? (otherlv_5= ',' otherlv_6= '!nontemporal' ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) ) )? (otherlv_8= ',' otherlv_9= '!invariant.load' ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) ) )? )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9822:4: (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_alignment_4_0= ruleAlign ) ) )? (otherlv_5= ',' otherlv_6= '!nontemporal' ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) ) )? (otherlv_8= ',' otherlv_9= '!invariant.load' ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) ) )?
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9822:4: (otherlv_1= 'volatile' )?
                      int alt111=2;
                      int LA111_0 = input.LA(1);
  
                      if ( (LA111_0==142) ) {
                          alt111=1;
                      }
                      switch (alt111) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9822:6: otherlv_1= 'volatile'
                              {
                              otherlv_1=(Token)match(input,142,FollowSets001.FOLLOW_142_in_ruleInstruction_load21246); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_1, grammarAccess.getInstruction_loadAccess().getVolatileKeyword_1_0_0());
                                    
                              }
  
                              }
                              break;
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9826:3: ( (lv_pointer_2_0= ruleTypedValue ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9827:1: (lv_pointer_2_0= ruleTypedValue )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9827:1: (lv_pointer_2_0= ruleTypedValue )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9828:3: lv_pointer_2_0= ruleTypedValue
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_loadAccess().getPointerTypedValueParserRuleCall_1_0_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_load21269);
                      lv_pointer_2_0=ruleTypedValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_loadRule());
                        	        }
                               		set(
                               			current, 
                               			"pointer",
                                		lv_pointer_2_0, 
                                		"TypedValue");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9844:2: (otherlv_3= ',' ( (lv_alignment_4_0= ruleAlign ) ) )?
                      int alt112=2;
                      int LA112_0 = input.LA(1);
  
                      if ( (LA112_0==38) ) {
                          int LA112_1 = input.LA(2);
  
                          if ( (LA112_1==87) ) {
                              alt112=1;
                          }
                      }
                      switch (alt112) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9844:4: otherlv_3= ',' ( (lv_alignment_4_0= ruleAlign ) )
                              {
                              otherlv_3=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_load21282); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_3, grammarAccess.getInstruction_loadAccess().getCommaKeyword_1_0_2_0());
                                    
                              }
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9848:1: ( (lv_alignment_4_0= ruleAlign ) )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9849:1: (lv_alignment_4_0= ruleAlign )
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9849:1: (lv_alignment_4_0= ruleAlign )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9850:3: lv_alignment_4_0= ruleAlign
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getInstruction_loadAccess().getAlignmentAlignParserRuleCall_1_0_2_1_0()); 
                                	    
                              }
                              pushFollow(FollowSets001.FOLLOW_ruleAlign_in_ruleInstruction_load21303);
                              lv_alignment_4_0=ruleAlign();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getInstruction_loadRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"alignment",
                                        		lv_alignment_4_0, 
                                        		"Align");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
  
  
                              }
  
  
                              }
                              break;
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9866:4: (otherlv_5= ',' otherlv_6= '!nontemporal' ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) ) )?
                      int alt113=2;
                      int LA113_0 = input.LA(1);
  
                      if ( (LA113_0==38) ) {
                          int LA113_1 = input.LA(2);
  
                          if ( (LA113_1==143) ) {
                              alt113=1;
                          }
                      }
                      switch (alt113) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9866:6: otherlv_5= ',' otherlv_6= '!nontemporal' ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) )
                              {
                              otherlv_5=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_load21318); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_5, grammarAccess.getInstruction_loadAccess().getCommaKeyword_1_0_3_0());
                                    
                              }
                              otherlv_6=(Token)match(input,143,FollowSets001.FOLLOW_143_in_ruleInstruction_load21330); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_6, grammarAccess.getInstruction_loadAccess().getNontemporalKeyword_1_0_3_1());
                                    
                              }
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9874:1: ( (lv_nontemporalIndex_7_0= ruleMetadataRef ) )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9875:1: (lv_nontemporalIndex_7_0= ruleMetadataRef )
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9875:1: (lv_nontemporalIndex_7_0= ruleMetadataRef )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9876:3: lv_nontemporalIndex_7_0= ruleMetadataRef
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getInstruction_loadAccess().getNontemporalIndexMetadataRefParserRuleCall_1_0_3_2_0()); 
                                	    
                              }
                              pushFollow(FollowSets001.FOLLOW_ruleMetadataRef_in_ruleInstruction_load21351);
                              lv_nontemporalIndex_7_0=ruleMetadataRef();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getInstruction_loadRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"nontemporalIndex",
                                        		lv_nontemporalIndex_7_0, 
                                        		"MetadataRef");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
  
  
                              }
  
  
                              }
                              break;
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9892:4: (otherlv_8= ',' otherlv_9= '!invariant.load' ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) ) )?
                      int alt114=2;
                      int LA114_0 = input.LA(1);
  
                      if ( (LA114_0==38) ) {
                          int LA114_1 = input.LA(2);
  
                          if ( (LA114_1==144) ) {
                              alt114=1;
                          }
                      }
                      switch (alt114) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9892:6: otherlv_8= ',' otherlv_9= '!invariant.load' ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) )
                              {
                              otherlv_8=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_load21366); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_8, grammarAccess.getInstruction_loadAccess().getCommaKeyword_1_0_4_0());
                                    
                              }
                              otherlv_9=(Token)match(input,144,FollowSets001.FOLLOW_144_in_ruleInstruction_load21378); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_9, grammarAccess.getInstruction_loadAccess().getInvariantLoadKeyword_1_0_4_1());
                                    
                              }
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9900:1: ( (lv_invariantLoadIndex_10_0= ruleMetadataRef ) )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9901:1: (lv_invariantLoadIndex_10_0= ruleMetadataRef )
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9901:1: (lv_invariantLoadIndex_10_0= ruleMetadataRef )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9902:3: lv_invariantLoadIndex_10_0= ruleMetadataRef
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getInstruction_loadAccess().getInvariantLoadIndexMetadataRefParserRuleCall_1_0_4_2_0()); 
                                	    
                              }
                              pushFollow(FollowSets001.FOLLOW_ruleMetadataRef_in_ruleInstruction_load21399);
                              lv_invariantLoadIndex_10_0=ruleMetadataRef();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getInstruction_loadRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"invariantLoadIndex",
                                        		lv_invariantLoadIndex_10_0, 
                                        		"MetadataRef");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
  
  
                              }
  
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9919:6: (otherlv_11= 'atomic' (otherlv_12= 'volatile' )? ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9919:6: (otherlv_11= 'atomic' (otherlv_12= 'volatile' )? ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9919:8: otherlv_11= 'atomic' (otherlv_12= 'volatile' )? ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) )
                      {
                      otherlv_11=(Token)match(input,145,FollowSets001.FOLLOW_145_in_ruleInstruction_load21421); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_11, grammarAccess.getInstruction_loadAccess().getAtomicKeyword_1_1_0());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9923:1: (otherlv_12= 'volatile' )?
                      int alt115=2;
                      int LA115_0 = input.LA(1);
  
                      if ( (LA115_0==142) ) {
                          alt115=1;
                      }
                      switch (alt115) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9923:3: otherlv_12= 'volatile'
                              {
                              otherlv_12=(Token)match(input,142,FollowSets001.FOLLOW_142_in_ruleInstruction_load21434); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_12, grammarAccess.getInstruction_loadAccess().getVolatileKeyword_1_1_1());
                                    
                              }
  
                              }
                              break;
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9927:3: ( (lv_pointer_13_0= ruleTypedValue ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9928:1: (lv_pointer_13_0= ruleTypedValue )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9928:1: (lv_pointer_13_0= ruleTypedValue )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9929:3: lv_pointer_13_0= ruleTypedValue
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_loadAccess().getPointerTypedValueParserRuleCall_1_1_2_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_load21457);
                      lv_pointer_13_0=ruleTypedValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_loadRule());
                        	        }
                               		set(
                               			current, 
                               			"pointer",
                                		lv_pointer_13_0, 
                                		"TypedValue");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9945:2: (otherlv_14= 'singlethread' )?
                      int alt116=2;
                      int LA116_0 = input.LA(1);
  
                      if ( (LA116_0==146) ) {
                          alt116=1;
                      }
                      switch (alt116) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9945:4: otherlv_14= 'singlethread'
                              {
                              otherlv_14=(Token)match(input,146,FollowSets001.FOLLOW_146_in_ruleInstruction_load21470); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_14, grammarAccess.getInstruction_loadAccess().getSinglethreadKeyword_1_1_3());
                                    
                              }
  
                              }
                              break;
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9949:3: ( (lv_ordering_15_0= ruleOrdering ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9950:1: (lv_ordering_15_0= ruleOrdering )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9950:1: (lv_ordering_15_0= ruleOrdering )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9951:3: lv_ordering_15_0= ruleOrdering
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_loadAccess().getOrderingOrderingParserRuleCall_1_1_4_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleOrdering_in_ruleInstruction_load21493);
                      lv_ordering_15_0=ruleOrdering();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_loadRule());
                        	        }
                               		set(
                               			current, 
                               			"ordering",
                                		lv_ordering_15_0, 
                                		"Ordering");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9967:2: ( (lv_alignment_16_0= ruleAlign ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9968:1: (lv_alignment_16_0= ruleAlign )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9968:1: (lv_alignment_16_0= ruleAlign )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9969:3: lv_alignment_16_0= ruleAlign
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_loadAccess().getAlignmentAlignParserRuleCall_1_1_5_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleAlign_in_ruleInstruction_load21514);
                      lv_alignment_16_0=ruleAlign();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_loadRule());
                        	        }
                               		set(
                               			current, 
                               			"alignment",
                                		lv_alignment_16_0, 
                                		"Align");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_load"
  
  
      // $ANTLR start "entryRuleInstruction_store"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9993:1: entryRuleInstruction_store returns [EObject current=null] : iv_ruleInstruction_store= ruleInstruction_store EOF ;
      public final EObject entryRuleInstruction_store() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_store = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9994:2: (iv_ruleInstruction_store= ruleInstruction_store EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:9995:2: iv_ruleInstruction_store= ruleInstruction_store EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_storeRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_store_in_entryRuleInstruction_store21552);
              iv_ruleInstruction_store=ruleInstruction_store();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_store; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_store21562); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_store"
  
  
      // $ANTLR start "ruleInstruction_store"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10002:1: ruleInstruction_store returns [EObject current=null] : ( ( (lv_opcode_0_0= 'store' ) ) ( ( (otherlv_1= 'volatile' )? ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_pointer_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_alignment_6_0= ruleAlign ) ) )? (otherlv_7= ',' otherlv_8= '!nontemporal' ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) ) )? ) | (otherlv_10= 'atomic' (otherlv_11= 'volatile' )? ( (lv_value_12_0= ruleTypedValue ) ) ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) ) ) ;
      public final EObject ruleInstruction_store() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token otherlv_7=null;
          Token otherlv_8=null;
          Token otherlv_10=null;
          Token otherlv_11=null;
          Token otherlv_14=null;
          EObject lv_value_2_0 = null;
  
          EObject lv_pointer_4_0 = null;
  
          AntlrDatatypeRuleToken lv_alignment_6_0 = null;
  
          EObject lv_nontemporalIndex_9_0 = null;
  
          EObject lv_value_12_0 = null;
  
          EObject lv_pointer_13_0 = null;
  
          AntlrDatatypeRuleToken lv_ordering_15_0 = null;
  
          AntlrDatatypeRuleToken lv_alignment_16_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10005:28: ( ( ( (lv_opcode_0_0= 'store' ) ) ( ( (otherlv_1= 'volatile' )? ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_pointer_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_alignment_6_0= ruleAlign ) ) )? (otherlv_7= ',' otherlv_8= '!nontemporal' ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) ) )? ) | (otherlv_10= 'atomic' (otherlv_11= 'volatile' )? ( (lv_value_12_0= ruleTypedValue ) ) ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10006:1: ( ( (lv_opcode_0_0= 'store' ) ) ( ( (otherlv_1= 'volatile' )? ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_pointer_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_alignment_6_0= ruleAlign ) ) )? (otherlv_7= ',' otherlv_8= '!nontemporal' ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) ) )? ) | (otherlv_10= 'atomic' (otherlv_11= 'volatile' )? ( (lv_value_12_0= ruleTypedValue ) ) ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10006:1: ( ( (lv_opcode_0_0= 'store' ) ) ( ( (otherlv_1= 'volatile' )? ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_pointer_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_alignment_6_0= ruleAlign ) ) )? (otherlv_7= ',' otherlv_8= '!nontemporal' ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) ) )? ) | (otherlv_10= 'atomic' (otherlv_11= 'volatile' )? ( (lv_value_12_0= ruleTypedValue ) ) ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10006:2: ( (lv_opcode_0_0= 'store' ) ) ( ( (otherlv_1= 'volatile' )? ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_pointer_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_alignment_6_0= ruleAlign ) ) )? (otherlv_7= ',' otherlv_8= '!nontemporal' ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) ) )? ) | (otherlv_10= 'atomic' (otherlv_11= 'volatile' )? ( (lv_value_12_0= ruleTypedValue ) ) ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10006:2: ( (lv_opcode_0_0= 'store' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10007:1: (lv_opcode_0_0= 'store' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10007:1: (lv_opcode_0_0= 'store' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10008:3: lv_opcode_0_0= 'store'
              {
              lv_opcode_0_0=(Token)match(input,147,FollowSets001.FOLLOW_147_in_ruleInstruction_store21605); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_storeAccess().getOpcodeStoreKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_storeRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "store");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10021:2: ( ( (otherlv_1= 'volatile' )? ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_pointer_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_alignment_6_0= ruleAlign ) ) )? (otherlv_7= ',' otherlv_8= '!nontemporal' ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) ) )? ) | (otherlv_10= 'atomic' (otherlv_11= 'volatile' )? ( (lv_value_12_0= ruleTypedValue ) ) ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) ) )
              int alt123=2;
              int LA123_0 = input.LA(1);
  
              if ( (LA123_0==RULE_LOCAL_ID||LA123_0==RULE_INT_TYPE||LA123_0==26||LA123_0==28||LA123_0==76||LA123_0==78||LA123_0==123||LA123_0==142||LA123_0==216||(LA123_0>=218 && LA123_0<=224)) ) {
                  alt123=1;
              }
              else if ( (LA123_0==145) ) {
                  alt123=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 123, 0, input);
  
                  throw nvae;
              }
              switch (alt123) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10021:3: ( (otherlv_1= 'volatile' )? ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_pointer_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_alignment_6_0= ruleAlign ) ) )? (otherlv_7= ',' otherlv_8= '!nontemporal' ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) ) )? )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10021:3: ( (otherlv_1= 'volatile' )? ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_pointer_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_alignment_6_0= ruleAlign ) ) )? (otherlv_7= ',' otherlv_8= '!nontemporal' ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) ) )? )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10021:4: (otherlv_1= 'volatile' )? ( (lv_value_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_pointer_4_0= ruleTypedValue ) ) (otherlv_5= ',' ( (lv_alignment_6_0= ruleAlign ) ) )? (otherlv_7= ',' otherlv_8= '!nontemporal' ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) ) )?
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10021:4: (otherlv_1= 'volatile' )?
                      int alt118=2;
                      int LA118_0 = input.LA(1);
  
                      if ( (LA118_0==142) ) {
                          alt118=1;
                      }
                      switch (alt118) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10021:6: otherlv_1= 'volatile'
                              {
                              otherlv_1=(Token)match(input,142,FollowSets001.FOLLOW_142_in_ruleInstruction_store21633); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_1, grammarAccess.getInstruction_storeAccess().getVolatileKeyword_1_0_0());
                                    
                              }
  
                              }
                              break;
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10025:3: ( (lv_value_2_0= ruleTypedValue ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10026:1: (lv_value_2_0= ruleTypedValue )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10026:1: (lv_value_2_0= ruleTypedValue )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10027:3: lv_value_2_0= ruleTypedValue
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_storeAccess().getValueTypedValueParserRuleCall_1_0_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_store21656);
                      lv_value_2_0=ruleTypedValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_storeRule());
                        	        }
                               		set(
                               			current, 
                               			"value",
                                		lv_value_2_0, 
                                		"TypedValue");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      otherlv_3=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_store21668); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_3, grammarAccess.getInstruction_storeAccess().getCommaKeyword_1_0_2());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10047:1: ( (lv_pointer_4_0= ruleTypedValue ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10048:1: (lv_pointer_4_0= ruleTypedValue )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10048:1: (lv_pointer_4_0= ruleTypedValue )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10049:3: lv_pointer_4_0= ruleTypedValue
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_storeAccess().getPointerTypedValueParserRuleCall_1_0_3_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_store21689);
                      lv_pointer_4_0=ruleTypedValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_storeRule());
                        	        }
                               		set(
                               			current, 
                               			"pointer",
                                		lv_pointer_4_0, 
                                		"TypedValue");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10065:2: (otherlv_5= ',' ( (lv_alignment_6_0= ruleAlign ) ) )?
                      int alt119=2;
                      int LA119_0 = input.LA(1);
  
                      if ( (LA119_0==38) ) {
                          int LA119_1 = input.LA(2);
  
                          if ( (LA119_1==87) ) {
                              alt119=1;
                          }
                      }
                      switch (alt119) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10065:4: otherlv_5= ',' ( (lv_alignment_6_0= ruleAlign ) )
                              {
                              otherlv_5=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_store21702); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_5, grammarAccess.getInstruction_storeAccess().getCommaKeyword_1_0_4_0());
                                    
                              }
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10069:1: ( (lv_alignment_6_0= ruleAlign ) )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10070:1: (lv_alignment_6_0= ruleAlign )
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10070:1: (lv_alignment_6_0= ruleAlign )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10071:3: lv_alignment_6_0= ruleAlign
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getInstruction_storeAccess().getAlignmentAlignParserRuleCall_1_0_4_1_0()); 
                                	    
                              }
                              pushFollow(FollowSets001.FOLLOW_ruleAlign_in_ruleInstruction_store21723);
                              lv_alignment_6_0=ruleAlign();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getInstruction_storeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"alignment",
                                        		lv_alignment_6_0, 
                                        		"Align");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
  
  
                              }
  
  
                              }
                              break;
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10087:4: (otherlv_7= ',' otherlv_8= '!nontemporal' ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) ) )?
                      int alt120=2;
                      int LA120_0 = input.LA(1);
  
                      if ( (LA120_0==38) ) {
                          int LA120_1 = input.LA(2);
  
                          if ( (LA120_1==143) ) {
                              alt120=1;
                          }
                      }
                      switch (alt120) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10087:6: otherlv_7= ',' otherlv_8= '!nontemporal' ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) )
                              {
                              otherlv_7=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_store21738); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_7, grammarAccess.getInstruction_storeAccess().getCommaKeyword_1_0_5_0());
                                    
                              }
                              otherlv_8=(Token)match(input,143,FollowSets001.FOLLOW_143_in_ruleInstruction_store21750); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_8, grammarAccess.getInstruction_storeAccess().getNontemporalKeyword_1_0_5_1());
                                    
                              }
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10095:1: ( (lv_nontemporalIndex_9_0= ruleMetadataRef ) )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10096:1: (lv_nontemporalIndex_9_0= ruleMetadataRef )
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10096:1: (lv_nontemporalIndex_9_0= ruleMetadataRef )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10097:3: lv_nontemporalIndex_9_0= ruleMetadataRef
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getInstruction_storeAccess().getNontemporalIndexMetadataRefParserRuleCall_1_0_5_2_0()); 
                                	    
                              }
                              pushFollow(FollowSets001.FOLLOW_ruleMetadataRef_in_ruleInstruction_store21771);
                              lv_nontemporalIndex_9_0=ruleMetadataRef();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getInstruction_storeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"nontemporalIndex",
                                        		lv_nontemporalIndex_9_0, 
                                        		"MetadataRef");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
  
  
                              }
  
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10114:6: (otherlv_10= 'atomic' (otherlv_11= 'volatile' )? ( (lv_value_12_0= ruleTypedValue ) ) ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10114:6: (otherlv_10= 'atomic' (otherlv_11= 'volatile' )? ( (lv_value_12_0= ruleTypedValue ) ) ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10114:8: otherlv_10= 'atomic' (otherlv_11= 'volatile' )? ( (lv_value_12_0= ruleTypedValue ) ) ( (lv_pointer_13_0= ruleTypedValue ) ) (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleOrdering ) ) ( (lv_alignment_16_0= ruleAlign ) )
                      {
                      otherlv_10=(Token)match(input,145,FollowSets001.FOLLOW_145_in_ruleInstruction_store21793); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_10, grammarAccess.getInstruction_storeAccess().getAtomicKeyword_1_1_0());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10118:1: (otherlv_11= 'volatile' )?
                      int alt121=2;
                      int LA121_0 = input.LA(1);
  
                      if ( (LA121_0==142) ) {
                          alt121=1;
                      }
                      switch (alt121) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10118:3: otherlv_11= 'volatile'
                              {
                              otherlv_11=(Token)match(input,142,FollowSets001.FOLLOW_142_in_ruleInstruction_store21806); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_11, grammarAccess.getInstruction_storeAccess().getVolatileKeyword_1_1_1());
                                    
                              }
  
                              }
                              break;
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10122:3: ( (lv_value_12_0= ruleTypedValue ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10123:1: (lv_value_12_0= ruleTypedValue )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10123:1: (lv_value_12_0= ruleTypedValue )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10124:3: lv_value_12_0= ruleTypedValue
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_storeAccess().getValueTypedValueParserRuleCall_1_1_2_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_store21829);
                      lv_value_12_0=ruleTypedValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_storeRule());
                        	        }
                               		set(
                               			current, 
                               			"value",
                                		lv_value_12_0, 
                                		"TypedValue");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10140:2: ( (lv_pointer_13_0= ruleTypedValue ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10141:1: (lv_pointer_13_0= ruleTypedValue )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10141:1: (lv_pointer_13_0= ruleTypedValue )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10142:3: lv_pointer_13_0= ruleTypedValue
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_storeAccess().getPointerTypedValueParserRuleCall_1_1_3_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_store21850);
                      lv_pointer_13_0=ruleTypedValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_storeRule());
                        	        }
                               		set(
                               			current, 
                               			"pointer",
                                		lv_pointer_13_0, 
                                		"TypedValue");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10158:2: (otherlv_14= 'singlethread' )?
                      int alt122=2;
                      int LA122_0 = input.LA(1);
  
                      if ( (LA122_0==146) ) {
                          alt122=1;
                      }
                      switch (alt122) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10158:4: otherlv_14= 'singlethread'
                              {
                              otherlv_14=(Token)match(input,146,FollowSets001.FOLLOW_146_in_ruleInstruction_store21863); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                    	newLeafNode(otherlv_14, grammarAccess.getInstruction_storeAccess().getSinglethreadKeyword_1_1_4());
                                    
                              }
  
                              }
                              break;
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10162:3: ( (lv_ordering_15_0= ruleOrdering ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10163:1: (lv_ordering_15_0= ruleOrdering )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10163:1: (lv_ordering_15_0= ruleOrdering )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10164:3: lv_ordering_15_0= ruleOrdering
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_storeAccess().getOrderingOrderingParserRuleCall_1_1_5_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleOrdering_in_ruleInstruction_store21886);
                      lv_ordering_15_0=ruleOrdering();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_storeRule());
                        	        }
                               		set(
                               			current, 
                               			"ordering",
                                		lv_ordering_15_0, 
                                		"Ordering");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10180:2: ( (lv_alignment_16_0= ruleAlign ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10181:1: (lv_alignment_16_0= ruleAlign )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10181:1: (lv_alignment_16_0= ruleAlign )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10182:3: lv_alignment_16_0= ruleAlign
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_storeAccess().getAlignmentAlignParserRuleCall_1_1_6_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleAlign_in_ruleInstruction_store21907);
                      lv_alignment_16_0=ruleAlign();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_storeRule());
                        	        }
                               		set(
                               			current, 
                               			"alignment",
                                		lv_alignment_16_0, 
                                		"Align");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_store"
  
  
      // $ANTLR start "entryRuleInstruction_fence"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10206:1: entryRuleInstruction_fence returns [EObject current=null] : iv_ruleInstruction_fence= ruleInstruction_fence EOF ;
      public final EObject entryRuleInstruction_fence() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_fence = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10207:2: (iv_ruleInstruction_fence= ruleInstruction_fence EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10208:2: iv_ruleInstruction_fence= ruleInstruction_fence EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_fenceRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_fence_in_entryRuleInstruction_fence21945);
              iv_ruleInstruction_fence=ruleInstruction_fence();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_fence; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_fence21955); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_fence"
  
  
      // $ANTLR start "ruleInstruction_fence"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10215:1: ruleInstruction_fence returns [EObject current=null] : ( ( (lv_opcode_0_0= 'fence' ) ) (otherlv_1= 'singlethread' )? ( (lv_ordering_2_0= ruleOrdering ) ) ) ;
      public final EObject ruleInstruction_fence() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          AntlrDatatypeRuleToken lv_ordering_2_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10218:28: ( ( ( (lv_opcode_0_0= 'fence' ) ) (otherlv_1= 'singlethread' )? ( (lv_ordering_2_0= ruleOrdering ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10219:1: ( ( (lv_opcode_0_0= 'fence' ) ) (otherlv_1= 'singlethread' )? ( (lv_ordering_2_0= ruleOrdering ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10219:1: ( ( (lv_opcode_0_0= 'fence' ) ) (otherlv_1= 'singlethread' )? ( (lv_ordering_2_0= ruleOrdering ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10219:2: ( (lv_opcode_0_0= 'fence' ) ) (otherlv_1= 'singlethread' )? ( (lv_ordering_2_0= ruleOrdering ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10219:2: ( (lv_opcode_0_0= 'fence' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10220:1: (lv_opcode_0_0= 'fence' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10220:1: (lv_opcode_0_0= 'fence' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10221:3: lv_opcode_0_0= 'fence'
              {
              lv_opcode_0_0=(Token)match(input,148,FollowSets001.FOLLOW_148_in_ruleInstruction_fence21998); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_fenceAccess().getOpcodeFenceKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_fenceRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "fence");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10234:2: (otherlv_1= 'singlethread' )?
              int alt124=2;
              int LA124_0 = input.LA(1);
  
              if ( (LA124_0==146) ) {
                  alt124=1;
              }
              switch (alt124) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10234:4: otherlv_1= 'singlethread'
                      {
                      otherlv_1=(Token)match(input,146,FollowSets001.FOLLOW_146_in_ruleInstruction_fence22024); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getInstruction_fenceAccess().getSinglethreadKeyword_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10238:3: ( (lv_ordering_2_0= ruleOrdering ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10239:1: (lv_ordering_2_0= ruleOrdering )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10239:1: (lv_ordering_2_0= ruleOrdering )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10240:3: lv_ordering_2_0= ruleOrdering
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fenceAccess().getOrderingOrderingParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleOrdering_in_ruleInstruction_fence22047);
              lv_ordering_2_0=ruleOrdering();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fenceRule());
                	        }
                       		set(
                       			current, 
                       			"ordering",
                        		lv_ordering_2_0, 
                        		"Ordering");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_fence"
  
  
      // $ANTLR start "entryRuleInstruction_cmpxchg"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10264:1: entryRuleInstruction_cmpxchg returns [EObject current=null] : iv_ruleInstruction_cmpxchg= ruleInstruction_cmpxchg EOF ;
      public final EObject entryRuleInstruction_cmpxchg() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_cmpxchg = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10265:2: (iv_ruleInstruction_cmpxchg= ruleInstruction_cmpxchg EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10266:2: iv_ruleInstruction_cmpxchg= ruleInstruction_cmpxchg EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_cmpxchgRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_cmpxchg_in_entryRuleInstruction_cmpxchg22083);
              iv_ruleInstruction_cmpxchg=ruleInstruction_cmpxchg();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_cmpxchg; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_cmpxchg22093); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_cmpxchg"
  
  
      // $ANTLR start "ruleInstruction_cmpxchg"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10273:1: ruleInstruction_cmpxchg returns [EObject current=null] : ( ( (lv_opcode_0_0= 'cmpxchg' ) ) (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_comparedWith_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_newValue_6_0= ruleTypedValue ) ) (otherlv_7= 'singlethread' )? ( (lv_ordering_8_0= ruleOrdering ) ) ) ;
      public final EObject ruleInstruction_cmpxchg() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token otherlv_7=null;
          EObject lv_pointer_2_0 = null;
  
          EObject lv_comparedWith_4_0 = null;
  
          EObject lv_newValue_6_0 = null;
  
          AntlrDatatypeRuleToken lv_ordering_8_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10276:28: ( ( ( (lv_opcode_0_0= 'cmpxchg' ) ) (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_comparedWith_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_newValue_6_0= ruleTypedValue ) ) (otherlv_7= 'singlethread' )? ( (lv_ordering_8_0= ruleOrdering ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10277:1: ( ( (lv_opcode_0_0= 'cmpxchg' ) ) (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_comparedWith_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_newValue_6_0= ruleTypedValue ) ) (otherlv_7= 'singlethread' )? ( (lv_ordering_8_0= ruleOrdering ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10277:1: ( ( (lv_opcode_0_0= 'cmpxchg' ) ) (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_comparedWith_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_newValue_6_0= ruleTypedValue ) ) (otherlv_7= 'singlethread' )? ( (lv_ordering_8_0= ruleOrdering ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10277:2: ( (lv_opcode_0_0= 'cmpxchg' ) ) (otherlv_1= 'volatile' )? ( (lv_pointer_2_0= ruleTypedValue ) ) otherlv_3= ',' ( (lv_comparedWith_4_0= ruleTypedValue ) ) otherlv_5= ',' ( (lv_newValue_6_0= ruleTypedValue ) ) (otherlv_7= 'singlethread' )? ( (lv_ordering_8_0= ruleOrdering ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10277:2: ( (lv_opcode_0_0= 'cmpxchg' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10278:1: (lv_opcode_0_0= 'cmpxchg' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10278:1: (lv_opcode_0_0= 'cmpxchg' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10279:3: lv_opcode_0_0= 'cmpxchg'
              {
              lv_opcode_0_0=(Token)match(input,149,FollowSets001.FOLLOW_149_in_ruleInstruction_cmpxchg22136); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_cmpxchgAccess().getOpcodeCmpxchgKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_cmpxchgRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "cmpxchg");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10292:2: (otherlv_1= 'volatile' )?
              int alt125=2;
              int LA125_0 = input.LA(1);
  
              if ( (LA125_0==142) ) {
                  alt125=1;
              }
              switch (alt125) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10292:4: otherlv_1= 'volatile'
                      {
                      otherlv_1=(Token)match(input,142,FollowSets001.FOLLOW_142_in_ruleInstruction_cmpxchg22162); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getInstruction_cmpxchgAccess().getVolatileKeyword_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10296:3: ( (lv_pointer_2_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10297:1: (lv_pointer_2_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10297:1: (lv_pointer_2_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10298:3: lv_pointer_2_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_cmpxchgAccess().getPointerTypedValueParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_cmpxchg22185);
              lv_pointer_2_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_cmpxchgRule());
                	        }
                       		set(
                       			current, 
                       			"pointer",
                        		lv_pointer_2_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_cmpxchg22197); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getInstruction_cmpxchgAccess().getCommaKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10318:1: ( (lv_comparedWith_4_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10319:1: (lv_comparedWith_4_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10319:1: (lv_comparedWith_4_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10320:3: lv_comparedWith_4_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_cmpxchgAccess().getComparedWithTypedValueParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_cmpxchg22218);
              lv_comparedWith_4_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_cmpxchgRule());
                	        }
                       		set(
                       			current, 
                       			"comparedWith",
                        		lv_comparedWith_4_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_5=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_cmpxchg22230); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_5, grammarAccess.getInstruction_cmpxchgAccess().getCommaKeyword_5());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10340:1: ( (lv_newValue_6_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10341:1: (lv_newValue_6_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10341:1: (lv_newValue_6_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10342:3: lv_newValue_6_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_cmpxchgAccess().getNewValueTypedValueParserRuleCall_6_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_cmpxchg22251);
              lv_newValue_6_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_cmpxchgRule());
                	        }
                       		set(
                       			current, 
                       			"newValue",
                        		lv_newValue_6_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10358:2: (otherlv_7= 'singlethread' )?
              int alt126=2;
              int LA126_0 = input.LA(1);
  
              if ( (LA126_0==146) ) {
                  alt126=1;
              }
              switch (alt126) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10358:4: otherlv_7= 'singlethread'
                      {
                      otherlv_7=(Token)match(input,146,FollowSets001.FOLLOW_146_in_ruleInstruction_cmpxchg22264); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_7, grammarAccess.getInstruction_cmpxchgAccess().getSinglethreadKeyword_7());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10362:3: ( (lv_ordering_8_0= ruleOrdering ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10363:1: (lv_ordering_8_0= ruleOrdering )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10363:1: (lv_ordering_8_0= ruleOrdering )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10364:3: lv_ordering_8_0= ruleOrdering
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_cmpxchgAccess().getOrderingOrderingParserRuleCall_8_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleOrdering_in_ruleInstruction_cmpxchg22287);
              lv_ordering_8_0=ruleOrdering();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_cmpxchgRule());
                	        }
                       		set(
                       			current, 
                       			"ordering",
                        		lv_ordering_8_0, 
                        		"Ordering");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_cmpxchg"
  
  
      // $ANTLR start "entryRuleInstruction_atomicrmw"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10388:1: entryRuleInstruction_atomicrmw returns [EObject current=null] : iv_ruleInstruction_atomicrmw= ruleInstruction_atomicrmw EOF ;
      public final EObject entryRuleInstruction_atomicrmw() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_atomicrmw = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10389:2: (iv_ruleInstruction_atomicrmw= ruleInstruction_atomicrmw EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10390:2: iv_ruleInstruction_atomicrmw= ruleInstruction_atomicrmw EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_atomicrmwRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_atomicrmw_in_entryRuleInstruction_atomicrmw22323);
              iv_ruleInstruction_atomicrmw=ruleInstruction_atomicrmw();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_atomicrmw; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_atomicrmw22333); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_atomicrmw"
  
  
      // $ANTLR start "ruleInstruction_atomicrmw"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10397:1: ruleInstruction_atomicrmw returns [EObject current=null] : ( ( (lv_opcode_0_0= 'atomicrmw' ) ) (otherlv_1= 'volatile' )? ( (lv_operation_2_0= ruleAtomicrmw_operation ) ) ( (lv_pointer_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_argument_5_0= ruleTypedValue ) ) (otherlv_6= 'singlethread' )? ( (lv_ordering_7_0= ruleOrdering ) ) ) ;
      public final EObject ruleInstruction_atomicrmw() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_4=null;
          Token otherlv_6=null;
          AntlrDatatypeRuleToken lv_operation_2_0 = null;
  
          EObject lv_pointer_3_0 = null;
  
          EObject lv_argument_5_0 = null;
  
          AntlrDatatypeRuleToken lv_ordering_7_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10400:28: ( ( ( (lv_opcode_0_0= 'atomicrmw' ) ) (otherlv_1= 'volatile' )? ( (lv_operation_2_0= ruleAtomicrmw_operation ) ) ( (lv_pointer_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_argument_5_0= ruleTypedValue ) ) (otherlv_6= 'singlethread' )? ( (lv_ordering_7_0= ruleOrdering ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10401:1: ( ( (lv_opcode_0_0= 'atomicrmw' ) ) (otherlv_1= 'volatile' )? ( (lv_operation_2_0= ruleAtomicrmw_operation ) ) ( (lv_pointer_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_argument_5_0= ruleTypedValue ) ) (otherlv_6= 'singlethread' )? ( (lv_ordering_7_0= ruleOrdering ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10401:1: ( ( (lv_opcode_0_0= 'atomicrmw' ) ) (otherlv_1= 'volatile' )? ( (lv_operation_2_0= ruleAtomicrmw_operation ) ) ( (lv_pointer_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_argument_5_0= ruleTypedValue ) ) (otherlv_6= 'singlethread' )? ( (lv_ordering_7_0= ruleOrdering ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10401:2: ( (lv_opcode_0_0= 'atomicrmw' ) ) (otherlv_1= 'volatile' )? ( (lv_operation_2_0= ruleAtomicrmw_operation ) ) ( (lv_pointer_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_argument_5_0= ruleTypedValue ) ) (otherlv_6= 'singlethread' )? ( (lv_ordering_7_0= ruleOrdering ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10401:2: ( (lv_opcode_0_0= 'atomicrmw' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10402:1: (lv_opcode_0_0= 'atomicrmw' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10402:1: (lv_opcode_0_0= 'atomicrmw' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10403:3: lv_opcode_0_0= 'atomicrmw'
              {
              lv_opcode_0_0=(Token)match(input,150,FollowSets001.FOLLOW_150_in_ruleInstruction_atomicrmw22376); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_atomicrmwAccess().getOpcodeAtomicrmwKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_atomicrmwRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "atomicrmw");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10416:2: (otherlv_1= 'volatile' )?
              int alt127=2;
              int LA127_0 = input.LA(1);
  
              if ( (LA127_0==142) ) {
                  alt127=1;
              }
              switch (alt127) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10416:4: otherlv_1= 'volatile'
                      {
                      otherlv_1=(Token)match(input,142,FollowSets001.FOLLOW_142_in_ruleInstruction_atomicrmw22402); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getInstruction_atomicrmwAccess().getVolatileKeyword_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10420:3: ( (lv_operation_2_0= ruleAtomicrmw_operation ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10421:1: (lv_operation_2_0= ruleAtomicrmw_operation )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10421:1: (lv_operation_2_0= ruleAtomicrmw_operation )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10422:3: lv_operation_2_0= ruleAtomicrmw_operation
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_atomicrmwAccess().getOperationAtomicrmw_operationParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleAtomicrmw_operation_in_ruleInstruction_atomicrmw22425);
              lv_operation_2_0=ruleAtomicrmw_operation();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_atomicrmwRule());
                	        }
                       		set(
                       			current, 
                       			"operation",
                        		lv_operation_2_0, 
                        		"Atomicrmw_operation");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10438:2: ( (lv_pointer_3_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10439:1: (lv_pointer_3_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10439:1: (lv_pointer_3_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10440:3: lv_pointer_3_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_atomicrmwAccess().getPointerTypedValueParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_atomicrmw22446);
              lv_pointer_3_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_atomicrmwRule());
                	        }
                       		set(
                       			current, 
                       			"pointer",
                        		lv_pointer_3_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_atomicrmw22458); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_atomicrmwAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10460:1: ( (lv_argument_5_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10461:1: (lv_argument_5_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10461:1: (lv_argument_5_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10462:3: lv_argument_5_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_atomicrmwAccess().getArgumentTypedValueParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_atomicrmw22479);
              lv_argument_5_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_atomicrmwRule());
                	        }
                       		set(
                       			current, 
                       			"argument",
                        		lv_argument_5_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10478:2: (otherlv_6= 'singlethread' )?
              int alt128=2;
              int LA128_0 = input.LA(1);
  
              if ( (LA128_0==146) ) {
                  alt128=1;
              }
              switch (alt128) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10478:4: otherlv_6= 'singlethread'
                      {
                      otherlv_6=(Token)match(input,146,FollowSets001.FOLLOW_146_in_ruleInstruction_atomicrmw22492); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_6, grammarAccess.getInstruction_atomicrmwAccess().getSinglethreadKeyword_6());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10482:3: ( (lv_ordering_7_0= ruleOrdering ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10483:1: (lv_ordering_7_0= ruleOrdering )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10483:1: (lv_ordering_7_0= ruleOrdering )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10484:3: lv_ordering_7_0= ruleOrdering
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_atomicrmwAccess().getOrderingOrderingParserRuleCall_7_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleOrdering_in_ruleInstruction_atomicrmw22515);
              lv_ordering_7_0=ruleOrdering();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_atomicrmwRule());
                	        }
                       		set(
                       			current, 
                       			"ordering",
                        		lv_ordering_7_0, 
                        		"Ordering");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_atomicrmw"
  
  
      // $ANTLR start "entryRuleAtomicrmw_operation"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10508:1: entryRuleAtomicrmw_operation returns [String current=null] : iv_ruleAtomicrmw_operation= ruleAtomicrmw_operation EOF ;
      public final String entryRuleAtomicrmw_operation() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleAtomicrmw_operation = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10509:2: (iv_ruleAtomicrmw_operation= ruleAtomicrmw_operation EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10510:2: iv_ruleAtomicrmw_operation= ruleAtomicrmw_operation EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getAtomicrmw_operationRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleAtomicrmw_operation_in_entryRuleAtomicrmw_operation22552);
              iv_ruleAtomicrmw_operation=ruleAtomicrmw_operation();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleAtomicrmw_operation.getText(); 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleAtomicrmw_operation22563); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleAtomicrmw_operation"
  
  
      // $ANTLR start "ruleAtomicrmw_operation"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10517:1: ruleAtomicrmw_operation returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'xchg' | kw= 'add' | kw= 'sub' | kw= 'and' | kw= 'nand' | kw= 'or' | kw= 'xor' | kw= 'max' | kw= 'min' | kw= 'umax' | kw= 'umin' ) ;
      public final AntlrDatatypeRuleToken ruleAtomicrmw_operation() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10520:28: ( (kw= 'xchg' | kw= 'add' | kw= 'sub' | kw= 'and' | kw= 'nand' | kw= 'or' | kw= 'xor' | kw= 'max' | kw= 'min' | kw= 'umax' | kw= 'umin' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10521:1: (kw= 'xchg' | kw= 'add' | kw= 'sub' | kw= 'and' | kw= 'nand' | kw= 'or' | kw= 'xor' | kw= 'max' | kw= 'min' | kw= 'umax' | kw= 'umin' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10521:1: (kw= 'xchg' | kw= 'add' | kw= 'sub' | kw= 'and' | kw= 'nand' | kw= 'or' | kw= 'xor' | kw= 'max' | kw= 'min' | kw= 'umax' | kw= 'umin' )
              int alt129=11;
              switch ( input.LA(1) ) {
              case 151:
                  {
                  alt129=1;
                  }
                  break;
              case 52:
                  {
                  alt129=2;
                  }
                  break;
              case 53:
                  {
                  alt129=3;
                  }
                  break;
              case 70:
                  {
                  alt129=4;
                  }
                  break;
              case 152:
                  {
                  alt129=5;
                  }
                  break;
              case 71:
                  {
                  alt129=6;
                  }
                  break;
              case 72:
                  {
                  alt129=7;
                  }
                  break;
              case 153:
                  {
                  alt129=8;
                  }
                  break;
              case 154:
                  {
                  alt129=9;
                  }
                  break;
              case 155:
                  {
                  alt129=10;
                  }
                  break;
              case 156:
                  {
                  alt129=11;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 129, 0, input);
  
                  throw nvae;
              }
  
              switch (alt129) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10522:2: kw= 'xchg'
                      {
                      kw=(Token)match(input,151,FollowSets001.FOLLOW_151_in_ruleAtomicrmw_operation22601); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getAtomicrmw_operationAccess().getXchgKeyword_0()); 
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10529:2: kw= 'add'
                      {
                      kw=(Token)match(input,52,FollowSets001.FOLLOW_52_in_ruleAtomicrmw_operation22620); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getAtomicrmw_operationAccess().getAddKeyword_1()); 
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10536:2: kw= 'sub'
                      {
                      kw=(Token)match(input,53,FollowSets001.FOLLOW_53_in_ruleAtomicrmw_operation22639); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getAtomicrmw_operationAccess().getSubKeyword_2()); 
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10543:2: kw= 'and'
                      {
                      kw=(Token)match(input,70,FollowSets001.FOLLOW_70_in_ruleAtomicrmw_operation22658); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getAtomicrmw_operationAccess().getAndKeyword_3()); 
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10550:2: kw= 'nand'
                      {
                      kw=(Token)match(input,152,FollowSets001.FOLLOW_152_in_ruleAtomicrmw_operation22677); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getAtomicrmw_operationAccess().getNandKeyword_4()); 
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10557:2: kw= 'or'
                      {
                      kw=(Token)match(input,71,FollowSets001.FOLLOW_71_in_ruleAtomicrmw_operation22696); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getAtomicrmw_operationAccess().getOrKeyword_5()); 
                            
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10564:2: kw= 'xor'
                      {
                      kw=(Token)match(input,72,FollowSets001.FOLLOW_72_in_ruleAtomicrmw_operation22715); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getAtomicrmw_operationAccess().getXorKeyword_6()); 
                            
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10571:2: kw= 'max'
                      {
                      kw=(Token)match(input,153,FollowSets001.FOLLOW_153_in_ruleAtomicrmw_operation22734); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getAtomicrmw_operationAccess().getMaxKeyword_7()); 
                            
                      }
  
                      }
                      break;
                  case 9 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10578:2: kw= 'min'
                      {
                      kw=(Token)match(input,154,FollowSets001.FOLLOW_154_in_ruleAtomicrmw_operation22753); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getAtomicrmw_operationAccess().getMinKeyword_8()); 
                            
                      }
  
                      }
                      break;
                  case 10 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10585:2: kw= 'umax'
                      {
                      kw=(Token)match(input,155,FollowSets001.FOLLOW_155_in_ruleAtomicrmw_operation22772); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getAtomicrmw_operationAccess().getUmaxKeyword_9()); 
                            
                      }
  
                      }
                      break;
                  case 11 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10592:2: kw= 'umin'
                      {
                      kw=(Token)match(input,156,FollowSets001.FOLLOW_156_in_ruleAtomicrmw_operation22791); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getAtomicrmw_operationAccess().getUminKeyword_10()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleAtomicrmw_operation"
  
  
      // $ANTLR start "entryRuleInstruction_getelementptr"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10605:1: entryRuleInstruction_getelementptr returns [EObject current=null] : iv_ruleInstruction_getelementptr= ruleInstruction_getelementptr EOF ;
      public final EObject entryRuleInstruction_getelementptr() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_getelementptr = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10606:2: (iv_ruleInstruction_getelementptr= ruleInstruction_getelementptr EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10607:2: iv_ruleInstruction_getelementptr= ruleInstruction_getelementptr EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_getelementptrRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_getelementptr_in_entryRuleInstruction_getelementptr22831);
              iv_ruleInstruction_getelementptr=ruleInstruction_getelementptr();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_getelementptr; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_getelementptr22841); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_getelementptr"
  
  
      // $ANTLR start "ruleInstruction_getelementptr"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10614:1: ruleInstruction_getelementptr returns [EObject current=null] : ( ( (lv_opcode_0_0= 'getelementptr' ) ) (otherlv_1= 'inbounds' )? ( (lv_base_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_indices_4_0= ruleTypedValue ) ) )* ) ;
      public final EObject ruleInstruction_getelementptr() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_1=null;
          Token otherlv_3=null;
          EObject lv_base_2_0 = null;
  
          EObject lv_indices_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10617:28: ( ( ( (lv_opcode_0_0= 'getelementptr' ) ) (otherlv_1= 'inbounds' )? ( (lv_base_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_indices_4_0= ruleTypedValue ) ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10618:1: ( ( (lv_opcode_0_0= 'getelementptr' ) ) (otherlv_1= 'inbounds' )? ( (lv_base_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_indices_4_0= ruleTypedValue ) ) )* )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10618:1: ( ( (lv_opcode_0_0= 'getelementptr' ) ) (otherlv_1= 'inbounds' )? ( (lv_base_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_indices_4_0= ruleTypedValue ) ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10618:2: ( (lv_opcode_0_0= 'getelementptr' ) ) (otherlv_1= 'inbounds' )? ( (lv_base_2_0= ruleTypedValue ) ) (otherlv_3= ',' ( (lv_indices_4_0= ruleTypedValue ) ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10618:2: ( (lv_opcode_0_0= 'getelementptr' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10619:1: (lv_opcode_0_0= 'getelementptr' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10619:1: (lv_opcode_0_0= 'getelementptr' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10620:3: lv_opcode_0_0= 'getelementptr'
              {
              lv_opcode_0_0=(Token)match(input,42,FollowSets001.FOLLOW_42_in_ruleInstruction_getelementptr22884); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_getelementptrAccess().getOpcodeGetelementptrKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_getelementptrRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "getelementptr");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10633:2: (otherlv_1= 'inbounds' )?
              int alt130=2;
              int LA130_0 = input.LA(1);
  
              if ( (LA130_0==43) ) {
                  alt130=1;
              }
              switch (alt130) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10633:4: otherlv_1= 'inbounds'
                      {
                      otherlv_1=(Token)match(input,43,FollowSets001.FOLLOW_43_in_ruleInstruction_getelementptr22910); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getInstruction_getelementptrAccess().getInboundsKeyword_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10637:3: ( (lv_base_2_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10638:1: (lv_base_2_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10638:1: (lv_base_2_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10639:3: lv_base_2_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_getelementptrAccess().getBaseTypedValueParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_getelementptr22933);
              lv_base_2_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_getelementptrRule());
                	        }
                       		set(
                       			current, 
                       			"base",
                        		lv_base_2_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10655:2: (otherlv_3= ',' ( (lv_indices_4_0= ruleTypedValue ) ) )*
              loop131:
              do {
                  int alt131=2;
                  int LA131_0 = input.LA(1);
  
                  if ( (LA131_0==38) ) {
                      int LA131_2 = input.LA(2);
  
                      if ( (LA131_2==RULE_LOCAL_ID||LA131_2==RULE_INT_TYPE||LA131_2==26||LA131_2==28||LA131_2==76||LA131_2==78||LA131_2==123||LA131_2==216||(LA131_2>=218 && LA131_2<=224)) ) {
                          alt131=1;
                      }
  
  
                  }
  
  
                  switch (alt131) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10655:4: otherlv_3= ',' ( (lv_indices_4_0= ruleTypedValue ) )
              	    {
              	    otherlv_3=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_getelementptr22946); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_3, grammarAccess.getInstruction_getelementptrAccess().getCommaKeyword_3_0());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10659:1: ( (lv_indices_4_0= ruleTypedValue ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10660:1: (lv_indices_4_0= ruleTypedValue )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10660:1: (lv_indices_4_0= ruleTypedValue )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10661:3: lv_indices_4_0= ruleTypedValue
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_getelementptrAccess().getIndicesTypedValueParserRuleCall_3_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_getelementptr22967);
              	    lv_indices_4_0=ruleTypedValue();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_getelementptrRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"indices",
              	              		lv_indices_4_0, 
              	              		"TypedValue");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop131;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_getelementptr"
  
  
      // $ANTLR start "entryRuleConversionInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10685:1: entryRuleConversionInstruction returns [EObject current=null] : iv_ruleConversionInstruction= ruleConversionInstruction EOF ;
      public final EObject entryRuleConversionInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleConversionInstruction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10686:2: (iv_ruleConversionInstruction= ruleConversionInstruction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10687:2: iv_ruleConversionInstruction= ruleConversionInstruction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConversionInstructionRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleConversionInstruction_in_entryRuleConversionInstruction23005);
              iv_ruleConversionInstruction=ruleConversionInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConversionInstruction; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleConversionInstruction23015); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConversionInstruction"
  
  
      // $ANTLR start "ruleConversionInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10694:1: ruleConversionInstruction returns [EObject current=null] : ( ( (lv_opcode_0_0= ruleConvertionOpcode ) ) ( (lv_fromType_1_0= ruleType ) ) ( (lv_value_2_0= ruleValueRef ) ) otherlv_3= 'to' ( (lv_targetType_4_0= ruleType ) ) ) ;
      public final EObject ruleConversionInstruction() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_3=null;
          AntlrDatatypeRuleToken lv_opcode_0_0 = null;
  
          EObject lv_fromType_1_0 = null;
  
          EObject lv_value_2_0 = null;
  
          EObject lv_targetType_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10697:28: ( ( ( (lv_opcode_0_0= ruleConvertionOpcode ) ) ( (lv_fromType_1_0= ruleType ) ) ( (lv_value_2_0= ruleValueRef ) ) otherlv_3= 'to' ( (lv_targetType_4_0= ruleType ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10698:1: ( ( (lv_opcode_0_0= ruleConvertionOpcode ) ) ( (lv_fromType_1_0= ruleType ) ) ( (lv_value_2_0= ruleValueRef ) ) otherlv_3= 'to' ( (lv_targetType_4_0= ruleType ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10698:1: ( ( (lv_opcode_0_0= ruleConvertionOpcode ) ) ( (lv_fromType_1_0= ruleType ) ) ( (lv_value_2_0= ruleValueRef ) ) otherlv_3= 'to' ( (lv_targetType_4_0= ruleType ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10698:2: ( (lv_opcode_0_0= ruleConvertionOpcode ) ) ( (lv_fromType_1_0= ruleType ) ) ( (lv_value_2_0= ruleValueRef ) ) otherlv_3= 'to' ( (lv_targetType_4_0= ruleType ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10698:2: ( (lv_opcode_0_0= ruleConvertionOpcode ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10699:1: (lv_opcode_0_0= ruleConvertionOpcode )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10699:1: (lv_opcode_0_0= ruleConvertionOpcode )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10700:3: lv_opcode_0_0= ruleConvertionOpcode
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConversionInstructionAccess().getOpcodeConvertionOpcodeParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleConvertionOpcode_in_ruleConversionInstruction23061);
              lv_opcode_0_0=ruleConvertionOpcode();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConversionInstructionRule());
                	        }
                       		set(
                       			current, 
                       			"opcode",
                        		lv_opcode_0_0, 
                        		"ConvertionOpcode");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10716:2: ( (lv_fromType_1_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10717:1: (lv_fromType_1_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10717:1: (lv_fromType_1_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10718:3: lv_fromType_1_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConversionInstructionAccess().getFromTypeTypeParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleConversionInstruction23082);
              lv_fromType_1_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConversionInstructionRule());
                	        }
                       		set(
                       			current, 
                       			"fromType",
                        		lv_fromType_1_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10734:2: ( (lv_value_2_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10735:1: (lv_value_2_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10735:1: (lv_value_2_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10736:3: lv_value_2_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConversionInstructionAccess().getValueValueRefParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleConversionInstruction23103);
              lv_value_2_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConversionInstructionRule());
                	        }
                       		set(
                       			current, 
                       			"value",
                        		lv_value_2_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_3=(Token)match(input,40,FollowSets001.FOLLOW_40_in_ruleConversionInstruction23115); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_3, grammarAccess.getConversionInstructionAccess().getToKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10756:1: ( (lv_targetType_4_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10757:1: (lv_targetType_4_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10757:1: (lv_targetType_4_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10758:3: lv_targetType_4_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getConversionInstructionAccess().getTargetTypeTypeParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleConversionInstruction23136);
              lv_targetType_4_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getConversionInstructionRule());
                	        }
                       		set(
                       			current, 
                       			"targetType",
                        		lv_targetType_4_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConversionInstruction"
  
  
      // $ANTLR start "entryRuleConvertionOpcode"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10782:1: entryRuleConvertionOpcode returns [String current=null] : iv_ruleConvertionOpcode= ruleConvertionOpcode EOF ;
      public final String entryRuleConvertionOpcode() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleConvertionOpcode = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10783:2: (iv_ruleConvertionOpcode= ruleConvertionOpcode EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10784:2: iv_ruleConvertionOpcode= ruleConvertionOpcode EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getConvertionOpcodeRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleConvertionOpcode_in_entryRuleConvertionOpcode23173);
              iv_ruleConvertionOpcode=ruleConvertionOpcode();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleConvertionOpcode.getText(); 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleConvertionOpcode23184); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleConvertionOpcode"
  
  
      // $ANTLR start "ruleConvertionOpcode"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10791:1: ruleConvertionOpcode returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'trunc' | kw= 'zext' | kw= 'sext' | kw= 'fptrunc' | kw= 'fpext' | kw= 'fptoui' | kw= 'fptosi' | kw= 'uitofp' | kw= 'sitofp' | kw= 'ptrtoint' | kw= 'inttoptr' | kw= 'bitcast' | kw= 'addrspacecast' ) ;
      public final AntlrDatatypeRuleToken ruleConvertionOpcode() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10794:28: ( (kw= 'trunc' | kw= 'zext' | kw= 'sext' | kw= 'fptrunc' | kw= 'fpext' | kw= 'fptoui' | kw= 'fptosi' | kw= 'uitofp' | kw= 'sitofp' | kw= 'ptrtoint' | kw= 'inttoptr' | kw= 'bitcast' | kw= 'addrspacecast' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10795:1: (kw= 'trunc' | kw= 'zext' | kw= 'sext' | kw= 'fptrunc' | kw= 'fpext' | kw= 'fptoui' | kw= 'fptosi' | kw= 'uitofp' | kw= 'sitofp' | kw= 'ptrtoint' | kw= 'inttoptr' | kw= 'bitcast' | kw= 'addrspacecast' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10795:1: (kw= 'trunc' | kw= 'zext' | kw= 'sext' | kw= 'fptrunc' | kw= 'fpext' | kw= 'fptoui' | kw= 'fptosi' | kw= 'uitofp' | kw= 'sitofp' | kw= 'ptrtoint' | kw= 'inttoptr' | kw= 'bitcast' | kw= 'addrspacecast' )
              int alt132=13;
              switch ( input.LA(1) ) {
              case 157:
                  {
                  alt132=1;
                  }
                  break;
              case 158:
                  {
                  alt132=2;
                  }
                  break;
              case 159:
                  {
                  alt132=3;
                  }
                  break;
              case 160:
                  {
                  alt132=4;
                  }
                  break;
              case 161:
                  {
                  alt132=5;
                  }
                  break;
              case 162:
                  {
                  alt132=6;
                  }
                  break;
              case 163:
                  {
                  alt132=7;
                  }
                  break;
              case 164:
                  {
                  alt132=8;
                  }
                  break;
              case 165:
                  {
                  alt132=9;
                  }
                  break;
              case 166:
                  {
                  alt132=10;
                  }
                  break;
              case 167:
                  {
                  alt132=11;
                  }
                  break;
              case 168:
                  {
                  alt132=12;
                  }
                  break;
              case 169:
                  {
                  alt132=13;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 132, 0, input);
  
                  throw nvae;
              }
  
              switch (alt132) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10796:2: kw= 'trunc'
                      {
                      kw=(Token)match(input,157,FollowSets001.FOLLOW_157_in_ruleConvertionOpcode23222); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getTruncKeyword_0()); 
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10803:2: kw= 'zext'
                      {
                      kw=(Token)match(input,158,FollowSets001.FOLLOW_158_in_ruleConvertionOpcode23241); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getZextKeyword_1()); 
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10810:2: kw= 'sext'
                      {
                      kw=(Token)match(input,159,FollowSets001.FOLLOW_159_in_ruleConvertionOpcode23260); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getSextKeyword_2()); 
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10817:2: kw= 'fptrunc'
                      {
                      kw=(Token)match(input,160,FollowSets001.FOLLOW_160_in_ruleConvertionOpcode23279); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getFptruncKeyword_3()); 
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10824:2: kw= 'fpext'
                      {
                      kw=(Token)match(input,161,FollowSets001.FOLLOW_161_in_ruleConvertionOpcode23298); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getFpextKeyword_4()); 
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10831:2: kw= 'fptoui'
                      {
                      kw=(Token)match(input,162,FollowSets001.FOLLOW_162_in_ruleConvertionOpcode23317); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getFptouiKeyword_5()); 
                            
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10838:2: kw= 'fptosi'
                      {
                      kw=(Token)match(input,163,FollowSets001.FOLLOW_163_in_ruleConvertionOpcode23336); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getFptosiKeyword_6()); 
                            
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10845:2: kw= 'uitofp'
                      {
                      kw=(Token)match(input,164,FollowSets001.FOLLOW_164_in_ruleConvertionOpcode23355); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getUitofpKeyword_7()); 
                            
                      }
  
                      }
                      break;
                  case 9 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10852:2: kw= 'sitofp'
                      {
                      kw=(Token)match(input,165,FollowSets001.FOLLOW_165_in_ruleConvertionOpcode23374); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getSitofpKeyword_8()); 
                            
                      }
  
                      }
                      break;
                  case 10 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10859:2: kw= 'ptrtoint'
                      {
                      kw=(Token)match(input,166,FollowSets001.FOLLOW_166_in_ruleConvertionOpcode23393); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getPtrtointKeyword_9()); 
                            
                      }
  
                      }
                      break;
                  case 11 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10866:2: kw= 'inttoptr'
                      {
                      kw=(Token)match(input,167,FollowSets001.FOLLOW_167_in_ruleConvertionOpcode23412); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getInttoptrKeyword_10()); 
                            
                      }
  
                      }
                      break;
                  case 12 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10873:2: kw= 'bitcast'
                      {
                      kw=(Token)match(input,168,FollowSets001.FOLLOW_168_in_ruleConvertionOpcode23431); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getBitcastKeyword_11()); 
                            
                      }
  
                      }
                      break;
                  case 13 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10880:2: kw= 'addrspacecast'
                      {
                      kw=(Token)match(input,169,FollowSets001.FOLLOW_169_in_ruleConvertionOpcode23450); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getConvertionOpcodeAccess().getAddrspacecastKeyword_12()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleConvertionOpcode"
  
  
      // $ANTLR start "entryRuleOtherInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10893:1: entryRuleOtherInstruction returns [EObject current=null] : iv_ruleOtherInstruction= ruleOtherInstruction EOF ;
      public final EObject entryRuleOtherInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleOtherInstruction = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10894:2: (iv_ruleOtherInstruction= ruleOtherInstruction EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10895:2: iv_ruleOtherInstruction= ruleOtherInstruction EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getOtherInstructionRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleOtherInstruction_in_entryRuleOtherInstruction23490);
              iv_ruleOtherInstruction=ruleOtherInstruction();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleOtherInstruction; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleOtherInstruction23500); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleOtherInstruction"
  
  
      // $ANTLR start "ruleOtherInstruction"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10902:1: ruleOtherInstruction returns [EObject current=null] : (this_Instruction_icmp_0= ruleInstruction_icmp | this_Instruction_fcmp_1= ruleInstruction_fcmp | this_Instruction_select_2= ruleInstruction_select | this_Instruction_va_arg_3= ruleInstruction_va_arg | this_Instruction_landingpad_4= ruleInstruction_landingpad ) ;
      public final EObject ruleOtherInstruction() throws RecognitionException {
          EObject current = null;
  
          EObject this_Instruction_icmp_0 = null;
  
          EObject this_Instruction_fcmp_1 = null;
  
          EObject this_Instruction_select_2 = null;
  
          EObject this_Instruction_va_arg_3 = null;
  
          EObject this_Instruction_landingpad_4 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10905:28: ( (this_Instruction_icmp_0= ruleInstruction_icmp | this_Instruction_fcmp_1= ruleInstruction_fcmp | this_Instruction_select_2= ruleInstruction_select | this_Instruction_va_arg_3= ruleInstruction_va_arg | this_Instruction_landingpad_4= ruleInstruction_landingpad ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10906:1: (this_Instruction_icmp_0= ruleInstruction_icmp | this_Instruction_fcmp_1= ruleInstruction_fcmp | this_Instruction_select_2= ruleInstruction_select | this_Instruction_va_arg_3= ruleInstruction_va_arg | this_Instruction_landingpad_4= ruleInstruction_landingpad )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10906:1: (this_Instruction_icmp_0= ruleInstruction_icmp | this_Instruction_fcmp_1= ruleInstruction_fcmp | this_Instruction_select_2= ruleInstruction_select | this_Instruction_va_arg_3= ruleInstruction_va_arg | this_Instruction_landingpad_4= ruleInstruction_landingpad )
              int alt133=5;
              switch ( input.LA(1) ) {
              case 45:
                  {
                  alt133=1;
                  }
                  break;
              case 46:
                  {
                  alt133=2;
                  }
                  break;
              case 44:
                  {
                  alt133=3;
                  }
                  break;
              case 195:
                  {
                  alt133=4;
                  }
                  break;
              case 196:
                  {
                  alt133=5;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 133, 0, input);
  
                  throw nvae;
              }
  
              switch (alt133) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10907:5: this_Instruction_icmp_0= ruleInstruction_icmp
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getOtherInstructionAccess().getInstruction_icmpParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_icmp_in_ruleOtherInstruction23547);
                      this_Instruction_icmp_0=ruleInstruction_icmp();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_icmp_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10917:5: this_Instruction_fcmp_1= ruleInstruction_fcmp
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getOtherInstructionAccess().getInstruction_fcmpParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_fcmp_in_ruleOtherInstruction23574);
                      this_Instruction_fcmp_1=ruleInstruction_fcmp();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_fcmp_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10927:5: this_Instruction_select_2= ruleInstruction_select
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getOtherInstructionAccess().getInstruction_selectParserRuleCall_2()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_select_in_ruleOtherInstruction23601);
                      this_Instruction_select_2=ruleInstruction_select();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_select_2; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10937:5: this_Instruction_va_arg_3= ruleInstruction_va_arg
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getOtherInstructionAccess().getInstruction_va_argParserRuleCall_3()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_va_arg_in_ruleOtherInstruction23628);
                      this_Instruction_va_arg_3=ruleInstruction_va_arg();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_va_arg_3; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10947:5: this_Instruction_landingpad_4= ruleInstruction_landingpad
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getOtherInstructionAccess().getInstruction_landingpadParserRuleCall_4()); 
                            
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleInstruction_landingpad_in_ruleOtherInstruction23655);
                      this_Instruction_landingpad_4=ruleInstruction_landingpad();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_Instruction_landingpad_4; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleOtherInstruction"
  
  
      // $ANTLR start "entryRuleInstruction_icmp"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10963:1: entryRuleInstruction_icmp returns [EObject current=null] : iv_ruleInstruction_icmp= ruleInstruction_icmp EOF ;
      public final EObject entryRuleInstruction_icmp() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_icmp = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10964:2: (iv_ruleInstruction_icmp= ruleInstruction_icmp EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10965:2: iv_ruleInstruction_icmp= ruleInstruction_icmp EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_icmpRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_icmp_in_entryRuleInstruction_icmp23690);
              iv_ruleInstruction_icmp=ruleInstruction_icmp();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_icmp; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_icmp23700); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_icmp"
  
  
      // $ANTLR start "ruleInstruction_icmp"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10972:1: ruleInstruction_icmp returns [EObject current=null] : ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_icmp() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_4=null;
          AntlrDatatypeRuleToken lv_condition_1_0 = null;
  
          EObject lv_type_2_0 = null;
  
          EObject lv_op1_3_0 = null;
  
          EObject lv_op2_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10975:28: ( ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10976:1: ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10976:1: ( ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10976:2: ( (lv_opcode_0_0= 'icmp' ) ) ( (lv_condition_1_0= ruleIcmpCondition ) ) ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10976:2: ( (lv_opcode_0_0= 'icmp' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10977:1: (lv_opcode_0_0= 'icmp' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10977:1: (lv_opcode_0_0= 'icmp' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10978:3: lv_opcode_0_0= 'icmp'
              {
              lv_opcode_0_0=(Token)match(input,45,FollowSets001.FOLLOW_45_in_ruleInstruction_icmp23743); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_icmpAccess().getOpcodeIcmpKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_icmpRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "icmp");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10991:2: ( (lv_condition_1_0= ruleIcmpCondition ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10992:1: (lv_condition_1_0= ruleIcmpCondition )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10992:1: (lv_condition_1_0= ruleIcmpCondition )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:10993:3: lv_condition_1_0= ruleIcmpCondition
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_icmpAccess().getConditionIcmpConditionParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleIcmpCondition_in_ruleInstruction_icmp23777);
              lv_condition_1_0=ruleIcmpCondition();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_icmpRule());
                	        }
                       		set(
                       			current, 
                       			"condition",
                        		lv_condition_1_0, 
                        		"IcmpCondition");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11009:2: ( (lv_type_2_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11010:1: (lv_type_2_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11010:1: (lv_type_2_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11011:3: lv_type_2_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_icmpAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_icmp23798);
              lv_type_2_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_icmpRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_2_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11027:2: ( (lv_op1_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11028:1: (lv_op1_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11028:1: (lv_op1_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11029:3: lv_op1_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_icmpAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_icmp23819);
              lv_op1_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_icmpRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_icmp23831); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_icmpAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11049:1: ( (lv_op2_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11050:1: (lv_op2_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11050:1: (lv_op2_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11051:3: lv_op2_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_icmpAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_icmp23852);
              lv_op2_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_icmpRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_icmp"
  
  
      // $ANTLR start "entryRuleIcmpCondition"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11075:1: entryRuleIcmpCondition returns [String current=null] : iv_ruleIcmpCondition= ruleIcmpCondition EOF ;
      public final String entryRuleIcmpCondition() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleIcmpCondition = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11076:2: (iv_ruleIcmpCondition= ruleIcmpCondition EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11077:2: iv_ruleIcmpCondition= ruleIcmpCondition EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getIcmpConditionRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleIcmpCondition_in_entryRuleIcmpCondition23889);
              iv_ruleIcmpCondition=ruleIcmpCondition();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleIcmpCondition.getText(); 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleIcmpCondition23900); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleIcmpCondition"
  
  
      // $ANTLR start "ruleIcmpCondition"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11084:1: ruleIcmpCondition returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'eq' | kw= 'ne' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'sgt' | kw= 'sge' | kw= 'slt' | kw= 'sle' ) ;
      public final AntlrDatatypeRuleToken ruleIcmpCondition() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11087:28: ( (kw= 'eq' | kw= 'ne' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'sgt' | kw= 'sge' | kw= 'slt' | kw= 'sle' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11088:1: (kw= 'eq' | kw= 'ne' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'sgt' | kw= 'sge' | kw= 'slt' | kw= 'sle' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11088:1: (kw= 'eq' | kw= 'ne' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'sgt' | kw= 'sge' | kw= 'slt' | kw= 'sle' )
              int alt134=10;
              switch ( input.LA(1) ) {
              case 170:
                  {
                  alt134=1;
                  }
                  break;
              case 171:
                  {
                  alt134=2;
                  }
                  break;
              case 172:
                  {
                  alt134=3;
                  }
                  break;
              case 173:
                  {
                  alt134=4;
                  }
                  break;
              case 174:
                  {
                  alt134=5;
                  }
                  break;
              case 175:
                  {
                  alt134=6;
                  }
                  break;
              case 176:
                  {
                  alt134=7;
                  }
                  break;
              case 177:
                  {
                  alt134=8;
                  }
                  break;
              case 178:
                  {
                  alt134=9;
                  }
                  break;
              case 179:
                  {
                  alt134=10;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 134, 0, input);
  
                  throw nvae;
              }
  
              switch (alt134) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11089:2: kw= 'eq'
                      {
                      kw=(Token)match(input,170,FollowSets001.FOLLOW_170_in_ruleIcmpCondition23938); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getIcmpConditionAccess().getEqKeyword_0()); 
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11096:2: kw= 'ne'
                      {
                      kw=(Token)match(input,171,FollowSets001.FOLLOW_171_in_ruleIcmpCondition23957); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getIcmpConditionAccess().getNeKeyword_1()); 
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11103:2: kw= 'ugt'
                      {
                      kw=(Token)match(input,172,FollowSets001.FOLLOW_172_in_ruleIcmpCondition23976); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getIcmpConditionAccess().getUgtKeyword_2()); 
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11110:2: kw= 'uge'
                      {
                      kw=(Token)match(input,173,FollowSets001.FOLLOW_173_in_ruleIcmpCondition23995); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getIcmpConditionAccess().getUgeKeyword_3()); 
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11117:2: kw= 'ult'
                      {
                      kw=(Token)match(input,174,FollowSets001.FOLLOW_174_in_ruleIcmpCondition24014); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getIcmpConditionAccess().getUltKeyword_4()); 
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11124:2: kw= 'ule'
                      {
                      kw=(Token)match(input,175,FollowSets001.FOLLOW_175_in_ruleIcmpCondition24033); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getIcmpConditionAccess().getUleKeyword_5()); 
                            
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11131:2: kw= 'sgt'
                      {
                      kw=(Token)match(input,176,FollowSets001.FOLLOW_176_in_ruleIcmpCondition24052); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getIcmpConditionAccess().getSgtKeyword_6()); 
                            
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11138:2: kw= 'sge'
                      {
                      kw=(Token)match(input,177,FollowSets001.FOLLOW_177_in_ruleIcmpCondition24071); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getIcmpConditionAccess().getSgeKeyword_7()); 
                            
                      }
  
                      }
                      break;
                  case 9 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11145:2: kw= 'slt'
                      {
                      kw=(Token)match(input,178,FollowSets001.FOLLOW_178_in_ruleIcmpCondition24090); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getIcmpConditionAccess().getSltKeyword_8()); 
                            
                      }
  
                      }
                      break;
                  case 10 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11152:2: kw= 'sle'
                      {
                      kw=(Token)match(input,179,FollowSets001.FOLLOW_179_in_ruleIcmpCondition24109); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getIcmpConditionAccess().getSleKeyword_9()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleIcmpCondition"
  
  
      // $ANTLR start "entryRuleInstruction_fcmp"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11165:1: entryRuleInstruction_fcmp returns [EObject current=null] : iv_ruleInstruction_fcmp= ruleInstruction_fcmp EOF ;
      public final EObject entryRuleInstruction_fcmp() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_fcmp = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11166:2: (iv_ruleInstruction_fcmp= ruleInstruction_fcmp EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11167:2: iv_ruleInstruction_fcmp= ruleInstruction_fcmp EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_fcmpRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_fcmp_in_entryRuleInstruction_fcmp24149);
              iv_ruleInstruction_fcmp=ruleInstruction_fcmp();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_fcmp; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_fcmp24159); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_fcmp"
  
  
      // $ANTLR start "ruleInstruction_fcmp"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11174:1: ruleInstruction_fcmp returns [EObject current=null] : ( ( (lv_opcode_0_0= 'fcmp' ) ) ( (lv_condition_1_0= ruleFcmpCondition ) ) ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) ;
      public final EObject ruleInstruction_fcmp() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_4=null;
          AntlrDatatypeRuleToken lv_condition_1_0 = null;
  
          EObject lv_type_2_0 = null;
  
          EObject lv_op1_3_0 = null;
  
          EObject lv_op2_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11177:28: ( ( ( (lv_opcode_0_0= 'fcmp' ) ) ( (lv_condition_1_0= ruleFcmpCondition ) ) ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11178:1: ( ( (lv_opcode_0_0= 'fcmp' ) ) ( (lv_condition_1_0= ruleFcmpCondition ) ) ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11178:1: ( ( (lv_opcode_0_0= 'fcmp' ) ) ( (lv_condition_1_0= ruleFcmpCondition ) ) ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11178:2: ( (lv_opcode_0_0= 'fcmp' ) ) ( (lv_condition_1_0= ruleFcmpCondition ) ) ( (lv_type_2_0= ruleType ) ) ( (lv_op1_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_op2_5_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11178:2: ( (lv_opcode_0_0= 'fcmp' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11179:1: (lv_opcode_0_0= 'fcmp' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11179:1: (lv_opcode_0_0= 'fcmp' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11180:3: lv_opcode_0_0= 'fcmp'
              {
              lv_opcode_0_0=(Token)match(input,46,FollowSets001.FOLLOW_46_in_ruleInstruction_fcmp24202); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_fcmpAccess().getOpcodeFcmpKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_fcmpRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "fcmp");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11193:2: ( (lv_condition_1_0= ruleFcmpCondition ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11194:1: (lv_condition_1_0= ruleFcmpCondition )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11194:1: (lv_condition_1_0= ruleFcmpCondition )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11195:3: lv_condition_1_0= ruleFcmpCondition
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fcmpAccess().getConditionFcmpConditionParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleFcmpCondition_in_ruleInstruction_fcmp24236);
              lv_condition_1_0=ruleFcmpCondition();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fcmpRule());
                	        }
                       		set(
                       			current, 
                       			"condition",
                        		lv_condition_1_0, 
                        		"FcmpCondition");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11211:2: ( (lv_type_2_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11212:1: (lv_type_2_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11212:1: (lv_type_2_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11213:3: lv_type_2_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fcmpAccess().getTypeTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_fcmp24257);
              lv_type_2_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fcmpRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_2_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11229:2: ( (lv_op1_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11230:1: (lv_op1_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11230:1: (lv_op1_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11231:3: lv_op1_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fcmpAccess().getOp1ValueRefParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_fcmp24278);
              lv_op1_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fcmpRule());
                	        }
                       		set(
                       			current, 
                       			"op1",
                        		lv_op1_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_fcmp24290); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_fcmpAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11251:1: ( (lv_op2_5_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11252:1: (lv_op2_5_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11252:1: (lv_op2_5_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11253:3: lv_op2_5_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_fcmpAccess().getOp2ValueRefParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_fcmp24311);
              lv_op2_5_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_fcmpRule());
                	        }
                       		set(
                       			current, 
                       			"op2",
                        		lv_op2_5_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_fcmp"
  
  
      // $ANTLR start "entryRuleFcmpCondition"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11277:1: entryRuleFcmpCondition returns [String current=null] : iv_ruleFcmpCondition= ruleFcmpCondition EOF ;
      public final String entryRuleFcmpCondition() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleFcmpCondition = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11278:2: (iv_ruleFcmpCondition= ruleFcmpCondition EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11279:2: iv_ruleFcmpCondition= ruleFcmpCondition EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getFcmpConditionRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleFcmpCondition_in_entryRuleFcmpCondition24348);
              iv_ruleFcmpCondition=ruleFcmpCondition();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleFcmpCondition.getText(); 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleFcmpCondition24359); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleFcmpCondition"
  
  
      // $ANTLR start "ruleFcmpCondition"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11286:1: ruleFcmpCondition returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_BOOLEAN_0= RULE_BOOLEAN | kw= 'oeq' | kw= 'ogt' | kw= 'oge' | kw= 'olt' | kw= 'ole' | kw= 'one' | kw= 'ord' | kw= 'ueq' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'une' | kw= 'uno' ) ;
      public final AntlrDatatypeRuleToken ruleFcmpCondition() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token this_BOOLEAN_0=null;
          Token kw=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11289:28: ( (this_BOOLEAN_0= RULE_BOOLEAN | kw= 'oeq' | kw= 'ogt' | kw= 'oge' | kw= 'olt' | kw= 'ole' | kw= 'one' | kw= 'ord' | kw= 'ueq' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'une' | kw= 'uno' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11290:1: (this_BOOLEAN_0= RULE_BOOLEAN | kw= 'oeq' | kw= 'ogt' | kw= 'oge' | kw= 'olt' | kw= 'ole' | kw= 'one' | kw= 'ord' | kw= 'ueq' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'une' | kw= 'uno' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11290:1: (this_BOOLEAN_0= RULE_BOOLEAN | kw= 'oeq' | kw= 'ogt' | kw= 'oge' | kw= 'olt' | kw= 'ole' | kw= 'one' | kw= 'ord' | kw= 'ueq' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'une' | kw= 'uno' )
              int alt135=15;
              switch ( input.LA(1) ) {
              case RULE_BOOLEAN:
                  {
                  alt135=1;
                  }
                  break;
              case 180:
                  {
                  alt135=2;
                  }
                  break;
              case 181:
                  {
                  alt135=3;
                  }
                  break;
              case 182:
                  {
                  alt135=4;
                  }
                  break;
              case 183:
                  {
                  alt135=5;
                  }
                  break;
              case 184:
                  {
                  alt135=6;
                  }
                  break;
              case 185:
                  {
                  alt135=7;
                  }
                  break;
              case 186:
                  {
                  alt135=8;
                  }
                  break;
              case 187:
                  {
                  alt135=9;
                  }
                  break;
              case 172:
                  {
                  alt135=10;
                  }
                  break;
              case 173:
                  {
                  alt135=11;
                  }
                  break;
              case 174:
                  {
                  alt135=12;
                  }
                  break;
              case 175:
                  {
                  alt135=13;
                  }
                  break;
              case 188:
                  {
                  alt135=14;
                  }
                  break;
              case 189:
                  {
                  alt135=15;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 135, 0, input);
  
                  throw nvae;
              }
  
              switch (alt135) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11290:6: this_BOOLEAN_0= RULE_BOOLEAN
                      {
                      this_BOOLEAN_0=(Token)match(input,RULE_BOOLEAN,FollowSets001.FOLLOW_RULE_BOOLEAN_in_ruleFcmpCondition24399); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        		current.merge(this_BOOLEAN_0);
                            
                      }
                      if ( state.backtracking==0 ) {
                         
                            newLeafNode(this_BOOLEAN_0, grammarAccess.getFcmpConditionAccess().getBOOLEANTerminalRuleCall_0()); 
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11299:2: kw= 'oeq'
                      {
                      kw=(Token)match(input,180,FollowSets001.FOLLOW_180_in_ruleFcmpCondition24423); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getOeqKeyword_1()); 
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11306:2: kw= 'ogt'
                      {
                      kw=(Token)match(input,181,FollowSets001.FOLLOW_181_in_ruleFcmpCondition24442); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getOgtKeyword_2()); 
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11313:2: kw= 'oge'
                      {
                      kw=(Token)match(input,182,FollowSets001.FOLLOW_182_in_ruleFcmpCondition24461); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getOgeKeyword_3()); 
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11320:2: kw= 'olt'
                      {
                      kw=(Token)match(input,183,FollowSets001.FOLLOW_183_in_ruleFcmpCondition24480); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getOltKeyword_4()); 
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11327:2: kw= 'ole'
                      {
                      kw=(Token)match(input,184,FollowSets001.FOLLOW_184_in_ruleFcmpCondition24499); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getOleKeyword_5()); 
                            
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11334:2: kw= 'one'
                      {
                      kw=(Token)match(input,185,FollowSets001.FOLLOW_185_in_ruleFcmpCondition24518); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getOneKeyword_6()); 
                            
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11341:2: kw= 'ord'
                      {
                      kw=(Token)match(input,186,FollowSets001.FOLLOW_186_in_ruleFcmpCondition24537); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getOrdKeyword_7()); 
                            
                      }
  
                      }
                      break;
                  case 9 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11348:2: kw= 'ueq'
                      {
                      kw=(Token)match(input,187,FollowSets001.FOLLOW_187_in_ruleFcmpCondition24556); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getUeqKeyword_8()); 
                            
                      }
  
                      }
                      break;
                  case 10 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11355:2: kw= 'ugt'
                      {
                      kw=(Token)match(input,172,FollowSets001.FOLLOW_172_in_ruleFcmpCondition24575); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getUgtKeyword_9()); 
                            
                      }
  
                      }
                      break;
                  case 11 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11362:2: kw= 'uge'
                      {
                      kw=(Token)match(input,173,FollowSets001.FOLLOW_173_in_ruleFcmpCondition24594); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getUgeKeyword_10()); 
                            
                      }
  
                      }
                      break;
                  case 12 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11369:2: kw= 'ult'
                      {
                      kw=(Token)match(input,174,FollowSets001.FOLLOW_174_in_ruleFcmpCondition24613); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getUltKeyword_11()); 
                            
                      }
  
                      }
                      break;
                  case 13 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11376:2: kw= 'ule'
                      {
                      kw=(Token)match(input,175,FollowSets001.FOLLOW_175_in_ruleFcmpCondition24632); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getUleKeyword_12()); 
                            
                      }
  
                      }
                      break;
                  case 14 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11383:2: kw= 'une'
                      {
                      kw=(Token)match(input,188,FollowSets001.FOLLOW_188_in_ruleFcmpCondition24651); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getUneKeyword_13()); 
                            
                      }
  
                      }
                      break;
                  case 15 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11390:2: kw= 'uno'
                      {
                      kw=(Token)match(input,189,FollowSets001.FOLLOW_189_in_ruleFcmpCondition24670); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getFcmpConditionAccess().getUnoKeyword_14()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleFcmpCondition"
  
  
      // $ANTLR start "entryRuleInstruction_phi"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11403:1: entryRuleInstruction_phi returns [EObject current=null] : iv_ruleInstruction_phi= ruleInstruction_phi EOF ;
      public final EObject entryRuleInstruction_phi() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_phi = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11404:2: (iv_ruleInstruction_phi= ruleInstruction_phi EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11405:2: iv_ruleInstruction_phi= ruleInstruction_phi EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_phiRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_phi_in_entryRuleInstruction_phi24710);
              iv_ruleInstruction_phi=ruleInstruction_phi();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_phi; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_phi24720); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_phi"
  
  
      // $ANTLR start "ruleInstruction_phi"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11412:1: ruleInstruction_phi returns [EObject current=null] : ( ( (lv_opcode_0_0= 'phi' ) ) ( (lv_type_1_0= ruleType ) ) (otherlv_2= '[' ( (lv_values_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_labels_5_0= ruleBasicBlockRef ) ) otherlv_6= ']' ) (otherlv_7= ',' otherlv_8= '[' ( (lv_values_9_0= ruleValueRef ) ) otherlv_10= ',' ( (lv_labels_11_0= ruleBasicBlockRef ) ) otherlv_12= ']' )* ) ;
      public final EObject ruleInstruction_phi() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          Token otherlv_6=null;
          Token otherlv_7=null;
          Token otherlv_8=null;
          Token otherlv_10=null;
          Token otherlv_12=null;
          EObject lv_type_1_0 = null;
  
          EObject lv_values_3_0 = null;
  
          EObject lv_labels_5_0 = null;
  
          EObject lv_values_9_0 = null;
  
          EObject lv_labels_11_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11415:28: ( ( ( (lv_opcode_0_0= 'phi' ) ) ( (lv_type_1_0= ruleType ) ) (otherlv_2= '[' ( (lv_values_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_labels_5_0= ruleBasicBlockRef ) ) otherlv_6= ']' ) (otherlv_7= ',' otherlv_8= '[' ( (lv_values_9_0= ruleValueRef ) ) otherlv_10= ',' ( (lv_labels_11_0= ruleBasicBlockRef ) ) otherlv_12= ']' )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11416:1: ( ( (lv_opcode_0_0= 'phi' ) ) ( (lv_type_1_0= ruleType ) ) (otherlv_2= '[' ( (lv_values_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_labels_5_0= ruleBasicBlockRef ) ) otherlv_6= ']' ) (otherlv_7= ',' otherlv_8= '[' ( (lv_values_9_0= ruleValueRef ) ) otherlv_10= ',' ( (lv_labels_11_0= ruleBasicBlockRef ) ) otherlv_12= ']' )* )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11416:1: ( ( (lv_opcode_0_0= 'phi' ) ) ( (lv_type_1_0= ruleType ) ) (otherlv_2= '[' ( (lv_values_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_labels_5_0= ruleBasicBlockRef ) ) otherlv_6= ']' ) (otherlv_7= ',' otherlv_8= '[' ( (lv_values_9_0= ruleValueRef ) ) otherlv_10= ',' ( (lv_labels_11_0= ruleBasicBlockRef ) ) otherlv_12= ']' )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11416:2: ( (lv_opcode_0_0= 'phi' ) ) ( (lv_type_1_0= ruleType ) ) (otherlv_2= '[' ( (lv_values_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_labels_5_0= ruleBasicBlockRef ) ) otherlv_6= ']' ) (otherlv_7= ',' otherlv_8= '[' ( (lv_values_9_0= ruleValueRef ) ) otherlv_10= ',' ( (lv_labels_11_0= ruleBasicBlockRef ) ) otherlv_12= ']' )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11416:2: ( (lv_opcode_0_0= 'phi' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11417:1: (lv_opcode_0_0= 'phi' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11417:1: (lv_opcode_0_0= 'phi' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11418:3: lv_opcode_0_0= 'phi'
              {
              lv_opcode_0_0=(Token)match(input,190,FollowSets001.FOLLOW_190_in_ruleInstruction_phi24763); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_phiAccess().getOpcodePhiKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_phiRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "phi");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11431:2: ( (lv_type_1_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11432:1: (lv_type_1_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11432:1: (lv_type_1_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11433:3: lv_type_1_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_phiAccess().getTypeTypeParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleType_in_ruleInstruction_phi24797);
              lv_type_1_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_phiRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_1_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11449:2: (otherlv_2= '[' ( (lv_values_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_labels_5_0= ruleBasicBlockRef ) ) otherlv_6= ']' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11449:4: otherlv_2= '[' ( (lv_values_3_0= ruleValueRef ) ) otherlv_4= ',' ( (lv_labels_5_0= ruleBasicBlockRef ) ) otherlv_6= ']'
              {
              otherlv_2=(Token)match(input,78,FollowSets001.FOLLOW_78_in_ruleInstruction_phi24810); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getInstruction_phiAccess().getLeftSquareBracketKeyword_2_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11453:1: ( (lv_values_3_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11454:1: (lv_values_3_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11454:1: (lv_values_3_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11455:3: lv_values_3_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_phiAccess().getValuesValueRefParserRuleCall_2_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_phi24831);
              lv_values_3_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_phiRule());
                	        }
                       		add(
                       			current, 
                       			"values",
                        		lv_values_3_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_phi24843); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_phiAccess().getCommaKeyword_2_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11475:1: ( (lv_labels_5_0= ruleBasicBlockRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11476:1: (lv_labels_5_0= ruleBasicBlockRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11476:1: (lv_labels_5_0= ruleBasicBlockRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11477:3: lv_labels_5_0= ruleBasicBlockRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_phiAccess().getLabelsBasicBlockRefParserRuleCall_2_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_phi24864);
              lv_labels_5_0=ruleBasicBlockRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_phiRule());
                	        }
                       		add(
                       			current, 
                       			"labels",
                        		lv_labels_5_0, 
                        		"BasicBlockRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_6=(Token)match(input,79,FollowSets001.FOLLOW_79_in_ruleInstruction_phi24876); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_6, grammarAccess.getInstruction_phiAccess().getRightSquareBracketKeyword_2_4());
                    
              }
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11497:2: (otherlv_7= ',' otherlv_8= '[' ( (lv_values_9_0= ruleValueRef ) ) otherlv_10= ',' ( (lv_labels_11_0= ruleBasicBlockRef ) ) otherlv_12= ']' )*
              loop136:
              do {
                  int alt136=2;
                  int LA136_0 = input.LA(1);
  
                  if ( (LA136_0==38) ) {
                      int LA136_1 = input.LA(2);
  
                      if ( (LA136_1==78) ) {
                          alt136=1;
                      }
  
  
                  }
  
  
                  switch (alt136) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11497:4: otherlv_7= ',' otherlv_8= '[' ( (lv_values_9_0= ruleValueRef ) ) otherlv_10= ',' ( (lv_labels_11_0= ruleBasicBlockRef ) ) otherlv_12= ']'
              	    {
              	    otherlv_7=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_phi24890); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_7, grammarAccess.getInstruction_phiAccess().getCommaKeyword_3_0());
              	          
              	    }
              	    otherlv_8=(Token)match(input,78,FollowSets001.FOLLOW_78_in_ruleInstruction_phi24902); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_8, grammarAccess.getInstruction_phiAccess().getLeftSquareBracketKeyword_3_1());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11505:1: ( (lv_values_9_0= ruleValueRef ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11506:1: (lv_values_9_0= ruleValueRef )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11506:1: (lv_values_9_0= ruleValueRef )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11507:3: lv_values_9_0= ruleValueRef
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_phiAccess().getValuesValueRefParserRuleCall_3_2_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets001.FOLLOW_ruleValueRef_in_ruleInstruction_phi24923);
              	    lv_values_9_0=ruleValueRef();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_phiRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"values",
              	              		lv_values_9_0, 
              	              		"ValueRef");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
              	    otherlv_10=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_phi24935); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_10, grammarAccess.getInstruction_phiAccess().getCommaKeyword_3_3());
              	          
              	    }
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11527:1: ( (lv_labels_11_0= ruleBasicBlockRef ) )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11528:1: (lv_labels_11_0= ruleBasicBlockRef )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11528:1: (lv_labels_11_0= ruleBasicBlockRef )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11529:3: lv_labels_11_0= ruleBasicBlockRef
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_phiAccess().getLabelsBasicBlockRefParserRuleCall_3_4_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets001.FOLLOW_ruleBasicBlockRef_in_ruleInstruction_phi24956);
              	    lv_labels_11_0=ruleBasicBlockRef();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_phiRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"labels",
              	              		lv_labels_11_0, 
              	              		"BasicBlockRef");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
  
              	    otherlv_12=(Token)match(input,79,FollowSets001.FOLLOW_79_in_ruleInstruction_phi24968); if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	          	newLeafNode(otherlv_12, grammarAccess.getInstruction_phiAccess().getRightSquareBracketKeyword_3_5());
              	          
              	    }
  
              	    }
              	    break;
  
              	default :
              	    break loop136;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_phi"
  
  
      // $ANTLR start "entryRuleInstruction_select"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11557:1: entryRuleInstruction_select returns [EObject current=null] : iv_ruleInstruction_select= ruleInstruction_select EOF ;
      public final EObject entryRuleInstruction_select() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_select = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11558:2: (iv_ruleInstruction_select= ruleInstruction_select EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11559:2: iv_ruleInstruction_select= ruleInstruction_select EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_selectRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_select_in_entryRuleInstruction_select25006);
              iv_ruleInstruction_select=ruleInstruction_select();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_select; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_select25016); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_select"
  
  
      // $ANTLR start "ruleInstruction_select"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11566:1: ruleInstruction_select returns [EObject current=null] : ( ( (lv_opcode_0_0= 'select' ) ) ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_value1_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleTypedValue ) ) ) ;
      public final EObject ruleInstruction_select() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          EObject lv_condition_1_0 = null;
  
          EObject lv_value1_3_0 = null;
  
          EObject lv_value2_5_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11569:28: ( ( ( (lv_opcode_0_0= 'select' ) ) ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_value1_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleTypedValue ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11570:1: ( ( (lv_opcode_0_0= 'select' ) ) ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_value1_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleTypedValue ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11570:1: ( ( (lv_opcode_0_0= 'select' ) ) ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_value1_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleTypedValue ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11570:2: ( (lv_opcode_0_0= 'select' ) ) ( (lv_condition_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_value1_3_0= ruleTypedValue ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleTypedValue ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11570:2: ( (lv_opcode_0_0= 'select' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11571:1: (lv_opcode_0_0= 'select' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11571:1: (lv_opcode_0_0= 'select' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11572:3: lv_opcode_0_0= 'select'
              {
              lv_opcode_0_0=(Token)match(input,44,FollowSets001.FOLLOW_44_in_ruleInstruction_select25059); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_selectAccess().getOpcodeSelectKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_selectRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "select");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11585:2: ( (lv_condition_1_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11586:1: (lv_condition_1_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11586:1: (lv_condition_1_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11587:3: lv_condition_1_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_selectAccess().getConditionTypedValueParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_select25093);
              lv_condition_1_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_selectRule());
                	        }
                       		set(
                       			current, 
                       			"condition",
                        		lv_condition_1_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_select25105); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getInstruction_selectAccess().getCommaKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11607:1: ( (lv_value1_3_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11608:1: (lv_value1_3_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11608:1: (lv_value1_3_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11609:3: lv_value1_3_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_selectAccess().getValue1TypedValueParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_select25126);
              lv_value1_3_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_selectRule());
                	        }
                       		set(
                       			current, 
                       			"value1",
                        		lv_value1_3_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,38,FollowSets001.FOLLOW_38_in_ruleInstruction_select25138); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getInstruction_selectAccess().getCommaKeyword_4());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11629:1: ( (lv_value2_5_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11630:1: (lv_value2_5_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11630:1: (lv_value2_5_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11631:3: lv_value2_5_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_selectAccess().getValue2TypedValueParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleTypedValue_in_ruleInstruction_select25159);
              lv_value2_5_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_selectRule());
                	        }
                       		set(
                       			current, 
                       			"value2",
                        		lv_value2_5_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_select"
  
  
      // $ANTLR start "entryRuleInstruction_call_nonVoid"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11655:1: entryRuleInstruction_call_nonVoid returns [EObject current=null] : iv_ruleInstruction_call_nonVoid= ruleInstruction_call_nonVoid EOF ;
      public final EObject entryRuleInstruction_call_nonVoid() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_call_nonVoid = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11656:2: (iv_ruleInstruction_call_nonVoid= ruleInstruction_call_nonVoid EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11657:2: iv_ruleInstruction_call_nonVoid= ruleInstruction_call_nonVoid EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_call_nonVoidRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_call_nonVoid_in_entryRuleInstruction_call_nonVoid25195);
              iv_ruleInstruction_call_nonVoid=ruleInstruction_call_nonVoid();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_call_nonVoid; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_call_nonVoid25205); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_call_nonVoid"
  
  
      // $ANTLR start "ruleInstruction_call_nonVoid"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11664:1: ruleInstruction_call_nonVoid returns [EObject current=null] : ( ( (lv_isTail_0_0= 'tail' ) )? ( (lv_opcode_1_0= 'call' ) ) ( (lv_cconv_2_0= ruleCConv ) )? ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )? ( (lv_type_4_0= ruleNonVoidType ) ) ( (lv_callee_5_0= ruleCallee ) ) ( (lv_args_6_0= ruleArgList ) ) ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )? ) ;
      public final EObject ruleInstruction_call_nonVoid() throws RecognitionException {
          EObject current = null;
  
          Token lv_isTail_0_0=null;
          Token lv_opcode_1_0=null;
          EObject lv_cconv_2_0 = null;
  
          EObject lv_returnAttributes_3_0 = null;
  
          EObject lv_type_4_0 = null;
  
          EObject lv_callee_5_0 = null;
  
          EObject lv_args_6_0 = null;
  
          EObject lv_functionAttributes_7_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11667:28: ( ( ( (lv_isTail_0_0= 'tail' ) )? ( (lv_opcode_1_0= 'call' ) ) ( (lv_cconv_2_0= ruleCConv ) )? ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )? ( (lv_type_4_0= ruleNonVoidType ) ) ( (lv_callee_5_0= ruleCallee ) ) ( (lv_args_6_0= ruleArgList ) ) ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )? ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11668:1: ( ( (lv_isTail_0_0= 'tail' ) )? ( (lv_opcode_1_0= 'call' ) ) ( (lv_cconv_2_0= ruleCConv ) )? ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )? ( (lv_type_4_0= ruleNonVoidType ) ) ( (lv_callee_5_0= ruleCallee ) ) ( (lv_args_6_0= ruleArgList ) ) ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )? )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11668:1: ( ( (lv_isTail_0_0= 'tail' ) )? ( (lv_opcode_1_0= 'call' ) ) ( (lv_cconv_2_0= ruleCConv ) )? ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )? ( (lv_type_4_0= ruleNonVoidType ) ) ( (lv_callee_5_0= ruleCallee ) ) ( (lv_args_6_0= ruleArgList ) ) ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )? )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11668:2: ( (lv_isTail_0_0= 'tail' ) )? ( (lv_opcode_1_0= 'call' ) ) ( (lv_cconv_2_0= ruleCConv ) )? ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )? ( (lv_type_4_0= ruleNonVoidType ) ) ( (lv_callee_5_0= ruleCallee ) ) ( (lv_args_6_0= ruleArgList ) ) ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )?
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11668:2: ( (lv_isTail_0_0= 'tail' ) )?
              int alt137=2;
              int LA137_0 = input.LA(1);
  
              if ( (LA137_0==191) ) {
                  alt137=1;
              }
              switch (alt137) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11669:1: (lv_isTail_0_0= 'tail' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11669:1: (lv_isTail_0_0= 'tail' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11670:3: lv_isTail_0_0= 'tail'
                      {
                      lv_isTail_0_0=(Token)match(input,191,FollowSets001.FOLLOW_191_in_ruleInstruction_call_nonVoid25248); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_isTail_0_0, grammarAccess.getInstruction_call_nonVoidAccess().getIsTailTailKeyword_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getInstruction_call_nonVoidRule());
                        	        }
                               		setWithLastConsumed(current, "isTail", true, "tail");
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11683:3: ( (lv_opcode_1_0= 'call' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11684:1: (lv_opcode_1_0= 'call' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11684:1: (lv_opcode_1_0= 'call' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11685:3: lv_opcode_1_0= 'call'
              {
              lv_opcode_1_0=(Token)match(input,192,FollowSets001.FOLLOW_192_in_ruleInstruction_call_nonVoid25280); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_1_0, grammarAccess.getInstruction_call_nonVoidAccess().getOpcodeCallKeyword_1_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_call_nonVoidRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_1_0, "call");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11698:2: ( (lv_cconv_2_0= ruleCConv ) )?
              int alt138=2;
              int LA138_0 = input.LA(1);
  
              if ( ((LA138_0>=241 && LA138_0<=262)) ) {
                  alt138=1;
              }
              switch (alt138) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11699:1: (lv_cconv_2_0= ruleCConv )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11699:1: (lv_cconv_2_0= ruleCConv )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11700:3: lv_cconv_2_0= ruleCConv
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_call_nonVoidAccess().getCconvCConvParserRuleCall_2_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleCConv_in_ruleInstruction_call_nonVoid25314);
                      lv_cconv_2_0=ruleCConv();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_call_nonVoidRule());
                        	        }
                               		set(
                               			current, 
                               			"cconv",
                                		lv_cconv_2_0, 
                                		"CConv");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11716:3: ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )?
              int alt139=2;
              int LA139_0 = input.LA(1);
  
              if ( ((LA139_0>=129 && LA139_0<=131)||(LA139_0>=207 && LA139_0<=213)) ) {
                  alt139=1;
              }
              switch (alt139) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11717:1: (lv_returnAttributes_3_0= ruleParameterAttributes )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11717:1: (lv_returnAttributes_3_0= ruleParameterAttributes )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11718:3: lv_returnAttributes_3_0= ruleParameterAttributes
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_call_nonVoidAccess().getReturnAttributesParameterAttributesParserRuleCall_3_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleParameterAttributes_in_ruleInstruction_call_nonVoid25336);
                      lv_returnAttributes_3_0=ruleParameterAttributes();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_call_nonVoidRule());
                        	        }
                               		set(
                               			current, 
                               			"returnAttributes",
                                		lv_returnAttributes_3_0, 
                                		"ParameterAttributes");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11734:3: ( (lv_type_4_0= ruleNonVoidType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11735:1: (lv_type_4_0= ruleNonVoidType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11735:1: (lv_type_4_0= ruleNonVoidType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11736:3: lv_type_4_0= ruleNonVoidType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_call_nonVoidAccess().getTypeNonVoidTypeParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleNonVoidType_in_ruleInstruction_call_nonVoid25358);
              lv_type_4_0=ruleNonVoidType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_call_nonVoidRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_4_0, 
                        		"NonVoidType");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11752:2: ( (lv_callee_5_0= ruleCallee ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11753:1: (lv_callee_5_0= ruleCallee )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11753:1: (lv_callee_5_0= ruleCallee )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11754:3: lv_callee_5_0= ruleCallee
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_call_nonVoidAccess().getCalleeCalleeParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleCallee_in_ruleInstruction_call_nonVoid25379);
              lv_callee_5_0=ruleCallee();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_call_nonVoidRule());
                	        }
                       		set(
                       			current, 
                       			"callee",
                        		lv_callee_5_0, 
                        		"Callee");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11770:2: ( (lv_args_6_0= ruleArgList ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11771:1: (lv_args_6_0= ruleArgList )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11771:1: (lv_args_6_0= ruleArgList )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11772:3: lv_args_6_0= ruleArgList
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_call_nonVoidAccess().getArgsArgListParserRuleCall_6_0()); 
                	    
              }
              pushFollow(FollowSets001.FOLLOW_ruleArgList_in_ruleInstruction_call_nonVoid25400);
              lv_args_6_0=ruleArgList();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_call_nonVoidRule());
                	        }
                       		set(
                       			current, 
                       			"args",
                        		lv_args_6_0, 
                        		"ArgList");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11788:2: ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )?
              int alt140=2;
              int LA140_0 = input.LA(1);
  
              if ( (LA140_0==RULE_ATTRIBUTE_ID||(LA140_0>=93 && LA140_0<=121)) ) {
                  alt140=1;
              }
              switch (alt140) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11789:1: (lv_functionAttributes_7_0= ruleFunctionAttributes )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11789:1: (lv_functionAttributes_7_0= ruleFunctionAttributes )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11790:3: lv_functionAttributes_7_0= ruleFunctionAttributes
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_call_nonVoidAccess().getFunctionAttributesFunctionAttributesParserRuleCall_7_0()); 
                        	    
                      }
                      pushFollow(FollowSets001.FOLLOW_ruleFunctionAttributes_in_ruleInstruction_call_nonVoid25421);
                      lv_functionAttributes_7_0=ruleFunctionAttributes();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_call_nonVoidRule());
                        	        }
                               		set(
                               			current, 
                               			"functionAttributes",
                                		lv_functionAttributes_7_0, 
                                		"FunctionAttributes");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_call_nonVoid"
  
  
      // $ANTLR start "entryRuleInstruction_call_void"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11814:1: entryRuleInstruction_call_void returns [EObject current=null] : iv_ruleInstruction_call_void= ruleInstruction_call_void EOF ;
      public final EObject entryRuleInstruction_call_void() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_call_void = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11815:2: (iv_ruleInstruction_call_void= ruleInstruction_call_void EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11816:2: iv_ruleInstruction_call_void= ruleInstruction_call_void EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_call_voidRule()); 
              }
              pushFollow(FollowSets001.FOLLOW_ruleInstruction_call_void_in_entryRuleInstruction_call_void25458);
              iv_ruleInstruction_call_void=ruleInstruction_call_void();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_call_void; 
              }
              match(input,EOF,FollowSets001.FOLLOW_EOF_in_entryRuleInstruction_call_void25468); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_call_void"
  
  
      // $ANTLR start "ruleInstruction_call_void"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11823:1: ruleInstruction_call_void returns [EObject current=null] : ( ( (lv_isTail_0_0= 'tail' ) )? ( (lv_opcode_1_0= 'call' ) ) ( (lv_cconv_2_0= ruleCConv ) )? ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )? ( (lv_type_4_0= ruleVoidType ) ) ( (lv_callee_5_0= ruleCallee ) ) ( (lv_args_6_0= ruleArgList ) ) ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )? ) ;
      public final EObject ruleInstruction_call_void() throws RecognitionException {
          EObject current = null;
  
          Token lv_isTail_0_0=null;
          Token lv_opcode_1_0=null;
          EObject lv_cconv_2_0 = null;
  
          EObject lv_returnAttributes_3_0 = null;
  
          EObject lv_type_4_0 = null;
  
          EObject lv_callee_5_0 = null;
  
          EObject lv_args_6_0 = null;
  
          EObject lv_functionAttributes_7_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11826:28: ( ( ( (lv_isTail_0_0= 'tail' ) )? ( (lv_opcode_1_0= 'call' ) ) ( (lv_cconv_2_0= ruleCConv ) )? ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )? ( (lv_type_4_0= ruleVoidType ) ) ( (lv_callee_5_0= ruleCallee ) ) ( (lv_args_6_0= ruleArgList ) ) ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )? ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11827:1: ( ( (lv_isTail_0_0= 'tail' ) )? ( (lv_opcode_1_0= 'call' ) ) ( (lv_cconv_2_0= ruleCConv ) )? ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )? ( (lv_type_4_0= ruleVoidType ) ) ( (lv_callee_5_0= ruleCallee ) ) ( (lv_args_6_0= ruleArgList ) ) ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )? )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11827:1: ( ( (lv_isTail_0_0= 'tail' ) )? ( (lv_opcode_1_0= 'call' ) ) ( (lv_cconv_2_0= ruleCConv ) )? ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )? ( (lv_type_4_0= ruleVoidType ) ) ( (lv_callee_5_0= ruleCallee ) ) ( (lv_args_6_0= ruleArgList ) ) ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )? )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11827:2: ( (lv_isTail_0_0= 'tail' ) )? ( (lv_opcode_1_0= 'call' ) ) ( (lv_cconv_2_0= ruleCConv ) )? ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )? ( (lv_type_4_0= ruleVoidType ) ) ( (lv_callee_5_0= ruleCallee ) ) ( (lv_args_6_0= ruleArgList ) ) ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )?
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11827:2: ( (lv_isTail_0_0= 'tail' ) )?
              int alt141=2;
              int LA141_0 = input.LA(1);
  
              if ( (LA141_0==191) ) {
                  alt141=1;
              }
              switch (alt141) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11828:1: (lv_isTail_0_0= 'tail' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11828:1: (lv_isTail_0_0= 'tail' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11829:3: lv_isTail_0_0= 'tail'
                      {
                      lv_isTail_0_0=(Token)match(input,191,FollowSets001.FOLLOW_191_in_ruleInstruction_call_void25511); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_isTail_0_0, grammarAccess.getInstruction_call_voidAccess().getIsTailTailKeyword_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getInstruction_call_voidRule());
                        	        }
                               		setWithLastConsumed(current, "isTail", true, "tail");
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11842:3: ( (lv_opcode_1_0= 'call' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11843:1: (lv_opcode_1_0= 'call' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11843:1: (lv_opcode_1_0= 'call' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11844:3: lv_opcode_1_0= 'call'
              {
              lv_opcode_1_0=(Token)match(input,192,FollowSets001.FOLLOW_192_in_ruleInstruction_call_void25543); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_1_0, grammarAccess.getInstruction_call_voidAccess().getOpcodeCallKeyword_1_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_call_voidRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_1_0, "call");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11857:2: ( (lv_cconv_2_0= ruleCConv ) )?
              int alt142=2;
              int LA142_0 = input.LA(1);
  
              if ( ((LA142_0>=241 && LA142_0<=262)) ) {
                  alt142=1;
              }
              switch (alt142) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11858:1: (lv_cconv_2_0= ruleCConv )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11858:1: (lv_cconv_2_0= ruleCConv )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11859:3: lv_cconv_2_0= ruleCConv
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_call_voidAccess().getCconvCConvParserRuleCall_2_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleCConv_in_ruleInstruction_call_void25577);
                      lv_cconv_2_0=ruleCConv();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_call_voidRule());
                        	        }
                               		set(
                               			current, 
                               			"cconv",
                                		lv_cconv_2_0, 
                                		"CConv");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11875:3: ( (lv_returnAttributes_3_0= ruleParameterAttributes ) )?
              int alt143=2;
              int LA143_0 = input.LA(1);
  
              if ( ((LA143_0>=129 && LA143_0<=131)||(LA143_0>=207 && LA143_0<=213)) ) {
                  alt143=1;
              }
              switch (alt143) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11876:1: (lv_returnAttributes_3_0= ruleParameterAttributes )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11876:1: (lv_returnAttributes_3_0= ruleParameterAttributes )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11877:3: lv_returnAttributes_3_0= ruleParameterAttributes
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_call_voidAccess().getReturnAttributesParameterAttributesParserRuleCall_3_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleParameterAttributes_in_ruleInstruction_call_void25599);
                      lv_returnAttributes_3_0=ruleParameterAttributes();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_call_voidRule());
                        	        }
                               		set(
                               			current, 
                               			"returnAttributes",
                                		lv_returnAttributes_3_0, 
                                		"ParameterAttributes");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11893:3: ( (lv_type_4_0= ruleVoidType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11894:1: (lv_type_4_0= ruleVoidType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11894:1: (lv_type_4_0= ruleVoidType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11895:3: lv_type_4_0= ruleVoidType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_call_voidAccess().getTypeVoidTypeParserRuleCall_4_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleVoidType_in_ruleInstruction_call_void25621);
              lv_type_4_0=ruleVoidType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_call_voidRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_4_0, 
                        		"VoidType");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11911:2: ( (lv_callee_5_0= ruleCallee ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11912:1: (lv_callee_5_0= ruleCallee )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11912:1: (lv_callee_5_0= ruleCallee )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11913:3: lv_callee_5_0= ruleCallee
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_call_voidAccess().getCalleeCalleeParserRuleCall_5_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleCallee_in_ruleInstruction_call_void25642);
              lv_callee_5_0=ruleCallee();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_call_voidRule());
                	        }
                       		set(
                       			current, 
                       			"callee",
                        		lv_callee_5_0, 
                        		"Callee");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11929:2: ( (lv_args_6_0= ruleArgList ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11930:1: (lv_args_6_0= ruleArgList )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11930:1: (lv_args_6_0= ruleArgList )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11931:3: lv_args_6_0= ruleArgList
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_call_voidAccess().getArgsArgListParserRuleCall_6_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleArgList_in_ruleInstruction_call_void25663);
              lv_args_6_0=ruleArgList();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_call_voidRule());
                	        }
                       		set(
                       			current, 
                       			"args",
                        		lv_args_6_0, 
                        		"ArgList");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11947:2: ( (lv_functionAttributes_7_0= ruleFunctionAttributes ) )?
              int alt144=2;
              int LA144_0 = input.LA(1);
  
              if ( (LA144_0==RULE_ATTRIBUTE_ID||(LA144_0>=93 && LA144_0<=121)) ) {
                  alt144=1;
              }
              switch (alt144) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11948:1: (lv_functionAttributes_7_0= ruleFunctionAttributes )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11948:1: (lv_functionAttributes_7_0= ruleFunctionAttributes )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11949:3: lv_functionAttributes_7_0= ruleFunctionAttributes
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_call_voidAccess().getFunctionAttributesFunctionAttributesParserRuleCall_7_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleFunctionAttributes_in_ruleInstruction_call_void25684);
                      lv_functionAttributes_7_0=ruleFunctionAttributes();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_call_voidRule());
                        	        }
                               		set(
                               			current, 
                               			"functionAttributes",
                                		lv_functionAttributes_7_0, 
                                		"FunctionAttributes");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_call_void"
  
  
      // $ANTLR start "entryRuleArgList"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11973:1: entryRuleArgList returns [EObject current=null] : iv_ruleArgList= ruleArgList EOF ;
      public final EObject entryRuleArgList() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleArgList = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11974:2: (iv_ruleArgList= ruleArgList EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11975:2: iv_ruleArgList= ruleArgList EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getArgListRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleArgList_in_entryRuleArgList25721);
              iv_ruleArgList=ruleArgList();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleArgList; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleArgList25731); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleArgList"
  
  
      // $ANTLR start "ruleArgList"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11982:1: ruleArgList returns [EObject current=null] : ( () otherlv_1= '(' ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )? otherlv_5= ')' ) ;
      public final EObject ruleArgList() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          EObject lv_arguments_2_0 = null;
  
          EObject lv_arguments_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11985:28: ( ( () otherlv_1= '(' ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )? otherlv_5= ')' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11986:1: ( () otherlv_1= '(' ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )? otherlv_5= ')' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11986:1: ( () otherlv_1= '(' ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )? otherlv_5= ')' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11986:2: () otherlv_1= '(' ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )? otherlv_5= ')'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11986:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11987:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getArgListAccess().getArgListAction_0(),
                            current);
                    
              }
  
              }
  
              otherlv_1=(Token)match(input,39,FollowSets002.FOLLOW_39_in_ruleArgList25777); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getArgListAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11996:1: ( ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )* )?
              int alt146=2;
              int LA146_0 = input.LA(1);
  
              if ( (LA146_0==RULE_LOCAL_ID||LA146_0==RULE_INT_TYPE||LA146_0==26||LA146_0==28||LA146_0==76||LA146_0==78||LA146_0==123||LA146_0==216||(LA146_0>=218 && LA146_0<=224)) ) {
                  alt146=1;
              }
              switch (alt146) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11996:2: ( (lv_arguments_2_0= ruleArgument ) ) (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )*
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11996:2: ( (lv_arguments_2_0= ruleArgument ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11997:1: (lv_arguments_2_0= ruleArgument )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11997:1: (lv_arguments_2_0= ruleArgument )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:11998:3: lv_arguments_2_0= ruleArgument
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getArgListAccess().getArgumentsArgumentParserRuleCall_2_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleArgument_in_ruleArgList25799);
                      lv_arguments_2_0=ruleArgument();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getArgListRule());
                        	        }
                               		add(
                               			current, 
                               			"arguments",
                                		lv_arguments_2_0, 
                                		"Argument");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12014:2: (otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) ) )*
                      loop145:
                      do {
                          int alt145=2;
                          int LA145_0 = input.LA(1);
  
                          if ( (LA145_0==38) ) {
                              alt145=1;
                          }
  
  
                          switch (alt145) {
                      	case 1 :
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12014:4: otherlv_3= ',' ( (lv_arguments_4_0= ruleArgument ) )
                      	    {
                      	    otherlv_3=(Token)match(input,38,FollowSets002.FOLLOW_38_in_ruleArgList25812); if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	          	newLeafNode(otherlv_3, grammarAccess.getArgListAccess().getCommaKeyword_2_1_0());
                      	          
                      	    }
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12018:1: ( (lv_arguments_4_0= ruleArgument ) )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12019:1: (lv_arguments_4_0= ruleArgument )
                      	    {
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12019:1: (lv_arguments_4_0= ruleArgument )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12020:3: lv_arguments_4_0= ruleArgument
                      	    {
                      	    if ( state.backtracking==0 ) {
                      	       
                      	      	        newCompositeNode(grammarAccess.getArgListAccess().getArgumentsArgumentParserRuleCall_2_1_1_0()); 
                      	      	    
                      	    }
                      	    pushFollow(FollowSets002.FOLLOW_ruleArgument_in_ruleArgList25833);
                      	    lv_arguments_4_0=ruleArgument();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      	        if (current==null) {
                      	      	            current = createModelElementForParent(grammarAccess.getArgListRule());
                      	      	        }
                      	             		add(
                      	             			current, 
                      	             			"arguments",
                      	              		lv_arguments_4_0, 
                      	              		"Argument");
                      	      	        afterParserOrEnumRuleCall();
                      	      	    
                      	    }
  
                      	    }
  
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop145;
                          }
                      } while (true);
  
  
                      }
                      break;
  
              }
  
              otherlv_5=(Token)match(input,41,FollowSets002.FOLLOW_41_in_ruleArgList25849); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_5, grammarAccess.getArgListAccess().getRightParenthesisKeyword_3());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleArgList"
  
  
      // $ANTLR start "entryRuleCallee"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12048:1: entryRuleCallee returns [EObject current=null] : iv_ruleCallee= ruleCallee EOF ;
      public final EObject entryRuleCallee() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleCallee = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12049:2: (iv_ruleCallee= ruleCallee EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12050:2: iv_ruleCallee= ruleCallee EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getCalleeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleCallee_in_entryRuleCallee25885);
              iv_ruleCallee=ruleCallee();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleCallee; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleCallee25895); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleCallee"
  
  
      // $ANTLR start "ruleCallee"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12057:1: ruleCallee returns [EObject current=null] : (this_ValueRef_0= ruleValueRef | this_InlineAssembler_1= ruleInlineAssembler ) ;
      public final EObject ruleCallee() throws RecognitionException {
          EObject current = null;
  
          EObject this_ValueRef_0 = null;
  
          EObject this_InlineAssembler_1 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12060:28: ( (this_ValueRef_0= ruleValueRef | this_InlineAssembler_1= ruleInlineAssembler ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12061:1: (this_ValueRef_0= ruleValueRef | this_InlineAssembler_1= ruleInlineAssembler )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12061:1: (this_ValueRef_0= ruleValueRef | this_InlineAssembler_1= ruleInlineAssembler )
              int alt147=2;
              int LA147_0 = input.LA(1);
  
              if ( (LA147_0==RULE_INTEGER||(LA147_0>=RULE_META_INT && LA147_0<=RULE_METADATA_STRING)||LA147_0==26||LA147_0==42||(LA147_0>=44 && LA147_0<=55)||(LA147_0>=58 && LA147_0<=61)||(LA147_0>=63 && LA147_0<=76)||LA147_0==78||LA147_0==80||(LA147_0>=157 && LA147_0<=169)) ) {
                  alt147=1;
              }
              else if ( (LA147_0==34) ) {
                  alt147=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 147, 0, input);
  
                  throw nvae;
              }
              switch (alt147) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12062:5: this_ValueRef_0= ruleValueRef
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getCalleeAccess().getValueRefParserRuleCall_0()); 
                            
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleValueRef_in_ruleCallee25942);
                      this_ValueRef_0=ruleValueRef();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_ValueRef_0; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12072:5: this_InlineAssembler_1= ruleInlineAssembler
                      {
                      if ( state.backtracking==0 ) {
                         
                                newCompositeNode(grammarAccess.getCalleeAccess().getInlineAssemblerParserRuleCall_1()); 
                            
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleInlineAssembler_in_ruleCallee25969);
                      this_InlineAssembler_1=ruleInlineAssembler();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
                         
                                current = this_InlineAssembler_1; 
                                afterParserOrEnumRuleCall();
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleCallee"
  
  
      // $ANTLR start "entryRuleInlineAssembler"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12088:1: entryRuleInlineAssembler returns [EObject current=null] : iv_ruleInlineAssembler= ruleInlineAssembler EOF ;
      public final EObject entryRuleInlineAssembler() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInlineAssembler = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12089:2: (iv_ruleInlineAssembler= ruleInlineAssembler EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12090:2: iv_ruleInlineAssembler= ruleInlineAssembler EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInlineAssemblerRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleInlineAssembler_in_entryRuleInlineAssembler26004);
              iv_ruleInlineAssembler=ruleInlineAssembler();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInlineAssembler; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleInlineAssembler26014); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInlineAssembler"
  
  
      // $ANTLR start "ruleInlineAssembler"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12097:1: ruleInlineAssembler returns [EObject current=null] : (otherlv_0= 'asm' (otherlv_1= 'sideeffect' )? (otherlv_2= 'alignstack' )? (otherlv_3= 'inteldialect' )? ( (lv_assembler_4_0= RULE_STRING ) ) otherlv_5= ',' ( (lv_flags_6_0= RULE_STRING ) ) ) ;
      public final EObject ruleInlineAssembler() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token otherlv_1=null;
          Token otherlv_2=null;
          Token otherlv_3=null;
          Token lv_assembler_4_0=null;
          Token otherlv_5=null;
          Token lv_flags_6_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12100:28: ( (otherlv_0= 'asm' (otherlv_1= 'sideeffect' )? (otherlv_2= 'alignstack' )? (otherlv_3= 'inteldialect' )? ( (lv_assembler_4_0= RULE_STRING ) ) otherlv_5= ',' ( (lv_flags_6_0= RULE_STRING ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12101:1: (otherlv_0= 'asm' (otherlv_1= 'sideeffect' )? (otherlv_2= 'alignstack' )? (otherlv_3= 'inteldialect' )? ( (lv_assembler_4_0= RULE_STRING ) ) otherlv_5= ',' ( (lv_flags_6_0= RULE_STRING ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12101:1: (otherlv_0= 'asm' (otherlv_1= 'sideeffect' )? (otherlv_2= 'alignstack' )? (otherlv_3= 'inteldialect' )? ( (lv_assembler_4_0= RULE_STRING ) ) otherlv_5= ',' ( (lv_flags_6_0= RULE_STRING ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12101:3: otherlv_0= 'asm' (otherlv_1= 'sideeffect' )? (otherlv_2= 'alignstack' )? (otherlv_3= 'inteldialect' )? ( (lv_assembler_4_0= RULE_STRING ) ) otherlv_5= ',' ( (lv_flags_6_0= RULE_STRING ) )
              {
              otherlv_0=(Token)match(input,34,FollowSets002.FOLLOW_34_in_ruleInlineAssembler26051); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getInlineAssemblerAccess().getAsmKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12105:1: (otherlv_1= 'sideeffect' )?
              int alt148=2;
              int LA148_0 = input.LA(1);
  
              if ( (LA148_0==193) ) {
                  alt148=1;
              }
              switch (alt148) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12105:3: otherlv_1= 'sideeffect'
                      {
                      otherlv_1=(Token)match(input,193,FollowSets002.FOLLOW_193_in_ruleInlineAssembler26064); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getInlineAssemblerAccess().getSideeffectKeyword_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12109:3: (otherlv_2= 'alignstack' )?
              int alt149=2;
              int LA149_0 = input.LA(1);
  
              if ( (LA149_0==93) ) {
                  alt149=1;
              }
              switch (alt149) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12109:5: otherlv_2= 'alignstack'
                      {
                      otherlv_2=(Token)match(input,93,FollowSets002.FOLLOW_93_in_ruleInlineAssembler26079); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_2, grammarAccess.getInlineAssemblerAccess().getAlignstackKeyword_2());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12113:3: (otherlv_3= 'inteldialect' )?
              int alt150=2;
              int LA150_0 = input.LA(1);
  
              if ( (LA150_0==194) ) {
                  alt150=1;
              }
              switch (alt150) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12113:5: otherlv_3= 'inteldialect'
                      {
                      otherlv_3=(Token)match(input,194,FollowSets002.FOLLOW_194_in_ruleInlineAssembler26094); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_3, grammarAccess.getInlineAssemblerAccess().getInteldialectKeyword_3());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12117:3: ( (lv_assembler_4_0= RULE_STRING ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12118:1: (lv_assembler_4_0= RULE_STRING )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12118:1: (lv_assembler_4_0= RULE_STRING )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12119:3: lv_assembler_4_0= RULE_STRING
              {
              lv_assembler_4_0=(Token)match(input,RULE_STRING,FollowSets002.FOLLOW_RULE_STRING_in_ruleInlineAssembler26113); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_assembler_4_0, grammarAccess.getInlineAssemblerAccess().getAssemblerSTRINGTerminalRuleCall_4_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInlineAssemblerRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"assembler",
                        		lv_assembler_4_0, 
                        		"STRING");
                	    
              }
  
              }
  
  
              }
  
              otherlv_5=(Token)match(input,38,FollowSets002.FOLLOW_38_in_ruleInlineAssembler26130); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_5, grammarAccess.getInlineAssemblerAccess().getCommaKeyword_5());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12139:1: ( (lv_flags_6_0= RULE_STRING ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12140:1: (lv_flags_6_0= RULE_STRING )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12140:1: (lv_flags_6_0= RULE_STRING )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12141:3: lv_flags_6_0= RULE_STRING
              {
              lv_flags_6_0=(Token)match(input,RULE_STRING,FollowSets002.FOLLOW_RULE_STRING_in_ruleInlineAssembler26147); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_flags_6_0, grammarAccess.getInlineAssemblerAccess().getFlagsSTRINGTerminalRuleCall_6_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInlineAssemblerRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"flags",
                        		lv_flags_6_0, 
                        		"STRING");
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInlineAssembler"
  
  
      // $ANTLR start "entryRuleInstruction_va_arg"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12165:1: entryRuleInstruction_va_arg returns [EObject current=null] : iv_ruleInstruction_va_arg= ruleInstruction_va_arg EOF ;
      public final EObject entryRuleInstruction_va_arg() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_va_arg = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12166:2: (iv_ruleInstruction_va_arg= ruleInstruction_va_arg EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12167:2: iv_ruleInstruction_va_arg= ruleInstruction_va_arg EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_va_argRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleInstruction_va_arg_in_entryRuleInstruction_va_arg26188);
              iv_ruleInstruction_va_arg=ruleInstruction_va_arg();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_va_arg; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleInstruction_va_arg26198); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_va_arg"
  
  
      // $ANTLR start "ruleInstruction_va_arg"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12174:1: ruleInstruction_va_arg returns [EObject current=null] : ( ( (lv_opcode_0_0= 'va_arg' ) ) ( (lv_arglist_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_type_3_0= ruleType ) ) ) ;
      public final EObject ruleInstruction_va_arg() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          EObject lv_arglist_1_0 = null;
  
          EObject lv_type_3_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12177:28: ( ( ( (lv_opcode_0_0= 'va_arg' ) ) ( (lv_arglist_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_type_3_0= ruleType ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12178:1: ( ( (lv_opcode_0_0= 'va_arg' ) ) ( (lv_arglist_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_type_3_0= ruleType ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12178:1: ( ( (lv_opcode_0_0= 'va_arg' ) ) ( (lv_arglist_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_type_3_0= ruleType ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12178:2: ( (lv_opcode_0_0= 'va_arg' ) ) ( (lv_arglist_1_0= ruleTypedValue ) ) otherlv_2= ',' ( (lv_type_3_0= ruleType ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12178:2: ( (lv_opcode_0_0= 'va_arg' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12179:1: (lv_opcode_0_0= 'va_arg' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12179:1: (lv_opcode_0_0= 'va_arg' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12180:3: lv_opcode_0_0= 'va_arg'
              {
              lv_opcode_0_0=(Token)match(input,195,FollowSets002.FOLLOW_195_in_ruleInstruction_va_arg26241); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_va_argAccess().getOpcodeVa_argKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_va_argRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "va_arg");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12193:2: ( (lv_arglist_1_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12194:1: (lv_arglist_1_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12194:1: (lv_arglist_1_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12195:3: lv_arglist_1_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_va_argAccess().getArglistTypedValueParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleTypedValue_in_ruleInstruction_va_arg26275);
              lv_arglist_1_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_va_argRule());
                	        }
                       		set(
                       			current, 
                       			"arglist",
                        		lv_arglist_1_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,38,FollowSets002.FOLLOW_38_in_ruleInstruction_va_arg26287); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getInstruction_va_argAccess().getCommaKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12215:1: ( (lv_type_3_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12216:1: (lv_type_3_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12216:1: (lv_type_3_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12217:3: lv_type_3_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_va_argAccess().getTypeTypeParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleType_in_ruleInstruction_va_arg26308);
              lv_type_3_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_va_argRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_3_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_va_arg"
  
  
      // $ANTLR start "entryRuleInstruction_landingpad"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12241:1: entryRuleInstruction_landingpad returns [EObject current=null] : iv_ruleInstruction_landingpad= ruleInstruction_landingpad EOF ;
      public final EObject entryRuleInstruction_landingpad() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleInstruction_landingpad = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12242:2: (iv_ruleInstruction_landingpad= ruleInstruction_landingpad EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12243:2: iv_ruleInstruction_landingpad= ruleInstruction_landingpad EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getInstruction_landingpadRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleInstruction_landingpad_in_entryRuleInstruction_landingpad26344);
              iv_ruleInstruction_landingpad=ruleInstruction_landingpad();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleInstruction_landingpad; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleInstruction_landingpad26354); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleInstruction_landingpad"
  
  
      // $ANTLR start "ruleInstruction_landingpad"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12250:1: ruleInstruction_landingpad returns [EObject current=null] : ( ( (lv_opcode_0_0= 'landingpad' ) ) ( (lv_resultType_1_0= ruleType ) ) otherlv_2= 'personality' ( (lv_personality_3_0= ruleTypedValue ) ) ( ( (lv_clauses_4_0= ruleLandingpadClause ) ) | otherlv_5= 'cleanup' ) ( (lv_clauses_6_0= ruleLandingpadClause ) )* ) ;
      public final EObject ruleInstruction_landingpad() throws RecognitionException {
          EObject current = null;
  
          Token lv_opcode_0_0=null;
          Token otherlv_2=null;
          Token otherlv_5=null;
          EObject lv_resultType_1_0 = null;
  
          EObject lv_personality_3_0 = null;
  
          EObject lv_clauses_4_0 = null;
  
          EObject lv_clauses_6_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12253:28: ( ( ( (lv_opcode_0_0= 'landingpad' ) ) ( (lv_resultType_1_0= ruleType ) ) otherlv_2= 'personality' ( (lv_personality_3_0= ruleTypedValue ) ) ( ( (lv_clauses_4_0= ruleLandingpadClause ) ) | otherlv_5= 'cleanup' ) ( (lv_clauses_6_0= ruleLandingpadClause ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12254:1: ( ( (lv_opcode_0_0= 'landingpad' ) ) ( (lv_resultType_1_0= ruleType ) ) otherlv_2= 'personality' ( (lv_personality_3_0= ruleTypedValue ) ) ( ( (lv_clauses_4_0= ruleLandingpadClause ) ) | otherlv_5= 'cleanup' ) ( (lv_clauses_6_0= ruleLandingpadClause ) )* )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12254:1: ( ( (lv_opcode_0_0= 'landingpad' ) ) ( (lv_resultType_1_0= ruleType ) ) otherlv_2= 'personality' ( (lv_personality_3_0= ruleTypedValue ) ) ( ( (lv_clauses_4_0= ruleLandingpadClause ) ) | otherlv_5= 'cleanup' ) ( (lv_clauses_6_0= ruleLandingpadClause ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12254:2: ( (lv_opcode_0_0= 'landingpad' ) ) ( (lv_resultType_1_0= ruleType ) ) otherlv_2= 'personality' ( (lv_personality_3_0= ruleTypedValue ) ) ( ( (lv_clauses_4_0= ruleLandingpadClause ) ) | otherlv_5= 'cleanup' ) ( (lv_clauses_6_0= ruleLandingpadClause ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12254:2: ( (lv_opcode_0_0= 'landingpad' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12255:1: (lv_opcode_0_0= 'landingpad' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12255:1: (lv_opcode_0_0= 'landingpad' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12256:3: lv_opcode_0_0= 'landingpad'
              {
              lv_opcode_0_0=(Token)match(input,196,FollowSets002.FOLLOW_196_in_ruleInstruction_landingpad26397); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                        newLeafNode(lv_opcode_0_0, grammarAccess.getInstruction_landingpadAccess().getOpcodeLandingpadKeyword_0_0());
                    
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getInstruction_landingpadRule());
                	        }
                       		setWithLastConsumed(current, "opcode", lv_opcode_0_0, "landingpad");
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12269:2: ( (lv_resultType_1_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12270:1: (lv_resultType_1_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12270:1: (lv_resultType_1_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12271:3: lv_resultType_1_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_landingpadAccess().getResultTypeTypeParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleType_in_ruleInstruction_landingpad26431);
              lv_resultType_1_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_landingpadRule());
                	        }
                       		set(
                       			current, 
                       			"resultType",
                        		lv_resultType_1_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,197,FollowSets002.FOLLOW_197_in_ruleInstruction_landingpad26443); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getInstruction_landingpadAccess().getPersonalityKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12291:1: ( (lv_personality_3_0= ruleTypedValue ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12292:1: (lv_personality_3_0= ruleTypedValue )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12292:1: (lv_personality_3_0= ruleTypedValue )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12293:3: lv_personality_3_0= ruleTypedValue
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getInstruction_landingpadAccess().getPersonalityTypedValueParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleTypedValue_in_ruleInstruction_landingpad26464);
              lv_personality_3_0=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getInstruction_landingpadRule());
                	        }
                       		set(
                       			current, 
                       			"personality",
                        		lv_personality_3_0, 
                        		"TypedValue");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12309:2: ( ( (lv_clauses_4_0= ruleLandingpadClause ) ) | otherlv_5= 'cleanup' )
              int alt151=2;
              int LA151_0 = input.LA(1);
  
              if ( ((LA151_0>=199 && LA151_0<=200)) ) {
                  alt151=1;
              }
              else if ( (LA151_0==198) ) {
                  alt151=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 151, 0, input);
  
                  throw nvae;
              }
              switch (alt151) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12309:3: ( (lv_clauses_4_0= ruleLandingpadClause ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12309:3: ( (lv_clauses_4_0= ruleLandingpadClause ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12310:1: (lv_clauses_4_0= ruleLandingpadClause )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12310:1: (lv_clauses_4_0= ruleLandingpadClause )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12311:3: lv_clauses_4_0= ruleLandingpadClause
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getInstruction_landingpadAccess().getClausesLandingpadClauseParserRuleCall_4_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleLandingpadClause_in_ruleInstruction_landingpad26486);
                      lv_clauses_4_0=ruleLandingpadClause();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getInstruction_landingpadRule());
                        	        }
                               		add(
                               			current, 
                               			"clauses",
                                		lv_clauses_4_0, 
                                		"LandingpadClause");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12328:7: otherlv_5= 'cleanup'
                      {
                      otherlv_5=(Token)match(input,198,FollowSets002.FOLLOW_198_in_ruleInstruction_landingpad26504); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_5, grammarAccess.getInstruction_landingpadAccess().getCleanupKeyword_4_1());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12332:2: ( (lv_clauses_6_0= ruleLandingpadClause ) )*
              loop152:
              do {
                  int alt152=2;
                  int LA152_0 = input.LA(1);
  
                  if ( ((LA152_0>=199 && LA152_0<=200)) ) {
                      alt152=1;
                  }
  
  
                  switch (alt152) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12333:1: (lv_clauses_6_0= ruleLandingpadClause )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12333:1: (lv_clauses_6_0= ruleLandingpadClause )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12334:3: lv_clauses_6_0= ruleLandingpadClause
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getInstruction_landingpadAccess().getClausesLandingpadClauseParserRuleCall_5_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets002.FOLLOW_ruleLandingpadClause_in_ruleInstruction_landingpad26526);
              	    lv_clauses_6_0=ruleLandingpadClause();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getInstruction_landingpadRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"clauses",
              	              		lv_clauses_6_0, 
              	              		"LandingpadClause");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop152;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleInstruction_landingpad"
  
  
      // $ANTLR start "entryRuleLandingpadClause"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12358:1: entryRuleLandingpadClause returns [EObject current=null] : iv_ruleLandingpadClause= ruleLandingpadClause EOF ;
      public final EObject entryRuleLandingpadClause() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleLandingpadClause = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12359:2: (iv_ruleLandingpadClause= ruleLandingpadClause EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12360:2: iv_ruleLandingpadClause= ruleLandingpadClause EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getLandingpadClauseRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleLandingpadClause_in_entryRuleLandingpadClause26563);
              iv_ruleLandingpadClause=ruleLandingpadClause();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleLandingpadClause; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleLandingpadClause26573); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleLandingpadClause"
  
  
      // $ANTLR start "ruleLandingpadClause"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12367:1: ruleLandingpadClause returns [EObject current=null] : ( ( ( (lv_landingPadType_0_0= 'catch' ) ) ( (lv_catchType_1_0= ruleTypedValue ) ) ) | ( ( (lv_landingPadType_2_0= 'filter' ) ) ( (lv_arrayType_3_0= ruleArrayType ) ) ( (lv_arrayConstant_4_0= ruleArrayConstant ) ) ) ) ;
      public final EObject ruleLandingpadClause() throws RecognitionException {
          EObject current = null;
  
          Token lv_landingPadType_0_0=null;
          Token lv_landingPadType_2_0=null;
          EObject lv_catchType_1_0 = null;
  
          EObject lv_arrayType_3_0 = null;
  
          EObject lv_arrayConstant_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12370:28: ( ( ( ( (lv_landingPadType_0_0= 'catch' ) ) ( (lv_catchType_1_0= ruleTypedValue ) ) ) | ( ( (lv_landingPadType_2_0= 'filter' ) ) ( (lv_arrayType_3_0= ruleArrayType ) ) ( (lv_arrayConstant_4_0= ruleArrayConstant ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12371:1: ( ( ( (lv_landingPadType_0_0= 'catch' ) ) ( (lv_catchType_1_0= ruleTypedValue ) ) ) | ( ( (lv_landingPadType_2_0= 'filter' ) ) ( (lv_arrayType_3_0= ruleArrayType ) ) ( (lv_arrayConstant_4_0= ruleArrayConstant ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12371:1: ( ( ( (lv_landingPadType_0_0= 'catch' ) ) ( (lv_catchType_1_0= ruleTypedValue ) ) ) | ( ( (lv_landingPadType_2_0= 'filter' ) ) ( (lv_arrayType_3_0= ruleArrayType ) ) ( (lv_arrayConstant_4_0= ruleArrayConstant ) ) ) )
              int alt153=2;
              int LA153_0 = input.LA(1);
  
              if ( (LA153_0==199) ) {
                  alt153=1;
              }
              else if ( (LA153_0==200) ) {
                  alt153=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 153, 0, input);
  
                  throw nvae;
              }
              switch (alt153) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12371:2: ( ( (lv_landingPadType_0_0= 'catch' ) ) ( (lv_catchType_1_0= ruleTypedValue ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12371:2: ( ( (lv_landingPadType_0_0= 'catch' ) ) ( (lv_catchType_1_0= ruleTypedValue ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12371:3: ( (lv_landingPadType_0_0= 'catch' ) ) ( (lv_catchType_1_0= ruleTypedValue ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12371:3: ( (lv_landingPadType_0_0= 'catch' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12372:1: (lv_landingPadType_0_0= 'catch' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12372:1: (lv_landingPadType_0_0= 'catch' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12373:3: lv_landingPadType_0_0= 'catch'
                      {
                      lv_landingPadType_0_0=(Token)match(input,199,FollowSets002.FOLLOW_199_in_ruleLandingpadClause26617); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_landingPadType_0_0, grammarAccess.getLandingpadClauseAccess().getLandingPadTypeCatchKeyword_0_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getLandingpadClauseRule());
                        	        }
                               		setWithLastConsumed(current, "landingPadType", lv_landingPadType_0_0, "catch");
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12386:2: ( (lv_catchType_1_0= ruleTypedValue ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12387:1: (lv_catchType_1_0= ruleTypedValue )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12387:1: (lv_catchType_1_0= ruleTypedValue )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12388:3: lv_catchType_1_0= ruleTypedValue
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getLandingpadClauseAccess().getCatchTypeTypedValueParserRuleCall_0_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleTypedValue_in_ruleLandingpadClause26651);
                      lv_catchType_1_0=ruleTypedValue();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getLandingpadClauseRule());
                        	        }
                               		set(
                               			current, 
                               			"catchType",
                                		lv_catchType_1_0, 
                                		"TypedValue");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12405:6: ( ( (lv_landingPadType_2_0= 'filter' ) ) ( (lv_arrayType_3_0= ruleArrayType ) ) ( (lv_arrayConstant_4_0= ruleArrayConstant ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12405:6: ( ( (lv_landingPadType_2_0= 'filter' ) ) ( (lv_arrayType_3_0= ruleArrayType ) ) ( (lv_arrayConstant_4_0= ruleArrayConstant ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12405:7: ( (lv_landingPadType_2_0= 'filter' ) ) ( (lv_arrayType_3_0= ruleArrayType ) ) ( (lv_arrayConstant_4_0= ruleArrayConstant ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12405:7: ( (lv_landingPadType_2_0= 'filter' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12406:1: (lv_landingPadType_2_0= 'filter' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12406:1: (lv_landingPadType_2_0= 'filter' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12407:3: lv_landingPadType_2_0= 'filter'
                      {
                      lv_landingPadType_2_0=(Token)match(input,200,FollowSets002.FOLLOW_200_in_ruleLandingpadClause26677); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_landingPadType_2_0, grammarAccess.getLandingpadClauseAccess().getLandingPadTypeFilterKeyword_1_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getLandingpadClauseRule());
                        	        }
                               		setWithLastConsumed(current, "landingPadType", lv_landingPadType_2_0, "filter");
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12420:2: ( (lv_arrayType_3_0= ruleArrayType ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12421:1: (lv_arrayType_3_0= ruleArrayType )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12421:1: (lv_arrayType_3_0= ruleArrayType )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12422:3: lv_arrayType_3_0= ruleArrayType
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getLandingpadClauseAccess().getArrayTypeArrayTypeParserRuleCall_1_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleArrayType_in_ruleLandingpadClause26711);
                      lv_arrayType_3_0=ruleArrayType();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getLandingpadClauseRule());
                        	        }
                               		set(
                               			current, 
                               			"arrayType",
                                		lv_arrayType_3_0, 
                                		"ArrayType");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12438:2: ( (lv_arrayConstant_4_0= ruleArrayConstant ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12439:1: (lv_arrayConstant_4_0= ruleArrayConstant )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12439:1: (lv_arrayConstant_4_0= ruleArrayConstant )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12440:3: lv_arrayConstant_4_0= ruleArrayConstant
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getLandingpadClauseAccess().getArrayConstantArrayConstantParserRuleCall_1_2_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleArrayConstant_in_ruleLandingpadClause26732);
                      lv_arrayConstant_4_0=ruleArrayConstant();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getLandingpadClauseRule());
                        	        }
                               		set(
                               			current, 
                               			"arrayConstant",
                                		lv_arrayConstant_4_0, 
                                		"ArrayConstant");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleLandingpadClause"
  
  
      // $ANTLR start "entryRuleOrdering"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12464:1: entryRuleOrdering returns [String current=null] : iv_ruleOrdering= ruleOrdering EOF ;
      public final String entryRuleOrdering() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleOrdering = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12465:2: (iv_ruleOrdering= ruleOrdering EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12466:2: iv_ruleOrdering= ruleOrdering EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getOrderingRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleOrdering_in_entryRuleOrdering26770);
              iv_ruleOrdering=ruleOrdering();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleOrdering.getText(); 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleOrdering26781); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleOrdering"
  
  
      // $ANTLR start "ruleOrdering"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12473:1: ruleOrdering returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'unordered' | kw= 'monotonic' | kw= 'acquire' | kw= 'release' | kw= 'acq_rel' | kw= 'seq_cst' ) ;
      public final AntlrDatatypeRuleToken ruleOrdering() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12476:28: ( (kw= 'unordered' | kw= 'monotonic' | kw= 'acquire' | kw= 'release' | kw= 'acq_rel' | kw= 'seq_cst' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12477:1: (kw= 'unordered' | kw= 'monotonic' | kw= 'acquire' | kw= 'release' | kw= 'acq_rel' | kw= 'seq_cst' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12477:1: (kw= 'unordered' | kw= 'monotonic' | kw= 'acquire' | kw= 'release' | kw= 'acq_rel' | kw= 'seq_cst' )
              int alt154=6;
              switch ( input.LA(1) ) {
              case 201:
                  {
                  alt154=1;
                  }
                  break;
              case 202:
                  {
                  alt154=2;
                  }
                  break;
              case 203:
                  {
                  alt154=3;
                  }
                  break;
              case 204:
                  {
                  alt154=4;
                  }
                  break;
              case 205:
                  {
                  alt154=5;
                  }
                  break;
              case 206:
                  {
                  alt154=6;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 154, 0, input);
  
                  throw nvae;
              }
  
              switch (alt154) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12478:2: kw= 'unordered'
                      {
                      kw=(Token)match(input,201,FollowSets002.FOLLOW_201_in_ruleOrdering26819); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getOrderingAccess().getUnorderedKeyword_0()); 
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12485:2: kw= 'monotonic'
                      {
                      kw=(Token)match(input,202,FollowSets002.FOLLOW_202_in_ruleOrdering26838); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getOrderingAccess().getMonotonicKeyword_1()); 
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12492:2: kw= 'acquire'
                      {
                      kw=(Token)match(input,203,FollowSets002.FOLLOW_203_in_ruleOrdering26857); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getOrderingAccess().getAcquireKeyword_2()); 
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12499:2: kw= 'release'
                      {
                      kw=(Token)match(input,204,FollowSets002.FOLLOW_204_in_ruleOrdering26876); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getOrderingAccess().getReleaseKeyword_3()); 
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12506:2: kw= 'acq_rel'
                      {
                      kw=(Token)match(input,205,FollowSets002.FOLLOW_205_in_ruleOrdering26895); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getOrderingAccess().getAcq_relKeyword_4()); 
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12513:2: kw= 'seq_cst'
                      {
                      kw=(Token)match(input,206,FollowSets002.FOLLOW_206_in_ruleOrdering26914); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getOrderingAccess().getSeq_cstKeyword_5()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleOrdering"
  
  
      // $ANTLR start "entryRuleTypedValue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12526:1: entryRuleTypedValue returns [EObject current=null] : iv_ruleTypedValue= ruleTypedValue EOF ;
      public final EObject entryRuleTypedValue() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleTypedValue = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12527:2: (iv_ruleTypedValue= ruleTypedValue EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12528:2: iv_ruleTypedValue= ruleTypedValue EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getTypedValueRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleTypedValue_in_entryRuleTypedValue26954);
              iv_ruleTypedValue=ruleTypedValue();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleTypedValue; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleTypedValue26964); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleTypedValue"
  
  
      // $ANTLR start "ruleTypedValue"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12535:1: ruleTypedValue returns [EObject current=null] : ( ( (lv_type_0_0= ruleType ) ) ( (lv_ref_1_0= ruleValueRef ) ) ) ;
      public final EObject ruleTypedValue() throws RecognitionException {
          EObject current = null;
  
          EObject lv_type_0_0 = null;
  
          EObject lv_ref_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12538:28: ( ( ( (lv_type_0_0= ruleType ) ) ( (lv_ref_1_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12539:1: ( ( (lv_type_0_0= ruleType ) ) ( (lv_ref_1_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12539:1: ( ( (lv_type_0_0= ruleType ) ) ( (lv_ref_1_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12539:2: ( (lv_type_0_0= ruleType ) ) ( (lv_ref_1_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12539:2: ( (lv_type_0_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12540:1: (lv_type_0_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12540:1: (lv_type_0_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12541:3: lv_type_0_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getTypedValueAccess().getTypeTypeParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleType_in_ruleTypedValue27010);
              lv_type_0_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getTypedValueRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_0_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12557:2: ( (lv_ref_1_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12558:1: (lv_ref_1_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12558:1: (lv_ref_1_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12559:3: lv_ref_1_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getTypedValueAccess().getRefValueRefParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleValueRef_in_ruleTypedValue27031);
              lv_ref_1_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getTypedValueRule());
                	        }
                       		set(
                       			current, 
                       			"ref",
                        		lv_ref_1_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleTypedValue"
  
  
      // $ANTLR start "entryRuleParameterType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12583:1: entryRuleParameterType returns [EObject current=null] : iv_ruleParameterType= ruleParameterType EOF ;
      public final EObject entryRuleParameterType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleParameterType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12584:2: (iv_ruleParameterType= ruleParameterType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12585:2: iv_ruleParameterType= ruleParameterType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getParameterTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleParameterType_in_entryRuleParameterType27067);
              iv_ruleParameterType=ruleParameterType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleParameterType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleParameterType27077); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleParameterType"
  
  
      // $ANTLR start "ruleParameterType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12592:1: ruleParameterType returns [EObject current=null] : ( ( (lv_type_0_0= ruleType ) ) ( (lv_attrs_1_0= ruleParameterAttributes ) )? ) ;
      public final EObject ruleParameterType() throws RecognitionException {
          EObject current = null;
  
          EObject lv_type_0_0 = null;
  
          EObject lv_attrs_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12595:28: ( ( ( (lv_type_0_0= ruleType ) ) ( (lv_attrs_1_0= ruleParameterAttributes ) )? ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12596:1: ( ( (lv_type_0_0= ruleType ) ) ( (lv_attrs_1_0= ruleParameterAttributes ) )? )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12596:1: ( ( (lv_type_0_0= ruleType ) ) ( (lv_attrs_1_0= ruleParameterAttributes ) )? )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12596:2: ( (lv_type_0_0= ruleType ) ) ( (lv_attrs_1_0= ruleParameterAttributes ) )?
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12596:2: ( (lv_type_0_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12597:1: (lv_type_0_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12597:1: (lv_type_0_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12598:3: lv_type_0_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getParameterTypeAccess().getTypeTypeParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleType_in_ruleParameterType27123);
              lv_type_0_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getParameterTypeRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_0_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12614:2: ( (lv_attrs_1_0= ruleParameterAttributes ) )?
              int alt155=2;
              int LA155_0 = input.LA(1);
  
              if ( ((LA155_0>=129 && LA155_0<=131)||(LA155_0>=207 && LA155_0<=213)) ) {
                  alt155=1;
              }
              switch (alt155) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12615:1: (lv_attrs_1_0= ruleParameterAttributes )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12615:1: (lv_attrs_1_0= ruleParameterAttributes )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12616:3: lv_attrs_1_0= ruleParameterAttributes
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getParameterTypeAccess().getAttrsParameterAttributesParserRuleCall_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleParameterAttributes_in_ruleParameterType27144);
                      lv_attrs_1_0=ruleParameterAttributes();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getParameterTypeRule());
                        	        }
                               		set(
                               			current, 
                               			"attrs",
                                		lv_attrs_1_0, 
                                		"ParameterAttributes");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleParameterType"
  
  
      // $ANTLR start "entryRuleParameterAttributes"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12640:1: entryRuleParameterAttributes returns [EObject current=null] : iv_ruleParameterAttributes= ruleParameterAttributes EOF ;
      public final EObject entryRuleParameterAttributes() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleParameterAttributes = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12641:2: (iv_ruleParameterAttributes= ruleParameterAttributes EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12642:2: iv_ruleParameterAttributes= ruleParameterAttributes EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getParameterAttributesRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleParameterAttributes_in_entryRuleParameterAttributes27181);
              iv_ruleParameterAttributes=ruleParameterAttributes();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleParameterAttributes; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleParameterAttributes27191); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleParameterAttributes"
  
  
      // $ANTLR start "ruleParameterAttributes"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12649:1: ruleParameterAttributes returns [EObject current=null] : ( (lv_attributes_0_0= ruleParameterAttribute ) )+ ;
      public final EObject ruleParameterAttributes() throws RecognitionException {
          EObject current = null;
  
          AntlrDatatypeRuleToken lv_attributes_0_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12652:28: ( ( (lv_attributes_0_0= ruleParameterAttribute ) )+ )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12653:1: ( (lv_attributes_0_0= ruleParameterAttribute ) )+
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12653:1: ( (lv_attributes_0_0= ruleParameterAttribute ) )+
              int cnt156=0;
              loop156:
              do {
                  int alt156=2;
                  int LA156_0 = input.LA(1);
  
                  if ( ((LA156_0>=129 && LA156_0<=131)||(LA156_0>=207 && LA156_0<=213)) ) {
                      alt156=1;
                  }
  
  
                  switch (alt156) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12654:1: (lv_attributes_0_0= ruleParameterAttribute )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12654:1: (lv_attributes_0_0= ruleParameterAttribute )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12655:3: lv_attributes_0_0= ruleParameterAttribute
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getParameterAttributesAccess().getAttributesParameterAttributeParserRuleCall_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets002.FOLLOW_ruleParameterAttribute_in_ruleParameterAttributes27236);
              	    lv_attributes_0_0=ruleParameterAttribute();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getParameterAttributesRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"attributes",
              	              		lv_attributes_0_0, 
              	              		"ParameterAttribute");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    if ( cnt156 >= 1 ) break loop156;
              	    if (state.backtracking>0) {state.failed=true; return current;}
                          EarlyExitException eee =
                              new EarlyExitException(156, input);
                          throw eee;
                  }
                  cnt156++;
              } while (true);
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleParameterAttributes"
  
  
      // $ANTLR start "entryRuleParameterAttribute"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12679:1: entryRuleParameterAttribute returns [String current=null] : iv_ruleParameterAttribute= ruleParameterAttribute EOF ;
      public final String entryRuleParameterAttribute() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleParameterAttribute = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12680:2: (iv_ruleParameterAttribute= ruleParameterAttribute EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12681:2: iv_ruleParameterAttribute= ruleParameterAttribute EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getParameterAttributeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleParameterAttribute_in_entryRuleParameterAttribute27273);
              iv_ruleParameterAttribute=ruleParameterAttribute();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleParameterAttribute.getText(); 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleParameterAttribute27284); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleParameterAttribute"
  
  
      // $ANTLR start "ruleParameterAttribute"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12688:1: ruleParameterAttribute returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'zeroext' | kw= 'signext' | kw= 'inreg' | (kw= 'byval' (kw= 'align' this_INTEGER_5= RULE_INTEGER )? ) | kw= 'sret' | kw= 'noalias' | kw= 'nocapture' | kw= 'nest' | kw= 'returned' | kw= 'inalloca' ) ;
      public final AntlrDatatypeRuleToken ruleParameterAttribute() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
          Token this_INTEGER_5=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12691:28: ( (kw= 'zeroext' | kw= 'signext' | kw= 'inreg' | (kw= 'byval' (kw= 'align' this_INTEGER_5= RULE_INTEGER )? ) | kw= 'sret' | kw= 'noalias' | kw= 'nocapture' | kw= 'nest' | kw= 'returned' | kw= 'inalloca' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12692:1: (kw= 'zeroext' | kw= 'signext' | kw= 'inreg' | (kw= 'byval' (kw= 'align' this_INTEGER_5= RULE_INTEGER )? ) | kw= 'sret' | kw= 'noalias' | kw= 'nocapture' | kw= 'nest' | kw= 'returned' | kw= 'inalloca' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12692:1: (kw= 'zeroext' | kw= 'signext' | kw= 'inreg' | (kw= 'byval' (kw= 'align' this_INTEGER_5= RULE_INTEGER )? ) | kw= 'sret' | kw= 'noalias' | kw= 'nocapture' | kw= 'nest' | kw= 'returned' | kw= 'inalloca' )
              int alt158=10;
              switch ( input.LA(1) ) {
              case 129:
                  {
                  alt158=1;
                  }
                  break;
              case 130:
                  {
                  alt158=2;
                  }
                  break;
              case 131:
                  {
                  alt158=3;
                  }
                  break;
              case 207:
                  {
                  alt158=4;
                  }
                  break;
              case 208:
                  {
                  alt158=5;
                  }
                  break;
              case 209:
                  {
                  alt158=6;
                  }
                  break;
              case 210:
                  {
                  alt158=7;
                  }
                  break;
              case 211:
                  {
                  alt158=8;
                  }
                  break;
              case 212:
                  {
                  alt158=9;
                  }
                  break;
              case 213:
                  {
                  alt158=10;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 158, 0, input);
  
                  throw nvae;
              }
  
              switch (alt158) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12693:2: kw= 'zeroext'
                      {
                      kw=(Token)match(input,129,FollowSets002.FOLLOW_129_in_ruleParameterAttribute27322); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getParameterAttributeAccess().getZeroextKeyword_0()); 
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12700:2: kw= 'signext'
                      {
                      kw=(Token)match(input,130,FollowSets002.FOLLOW_130_in_ruleParameterAttribute27341); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getParameterAttributeAccess().getSignextKeyword_1()); 
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12707:2: kw= 'inreg'
                      {
                      kw=(Token)match(input,131,FollowSets002.FOLLOW_131_in_ruleParameterAttribute27360); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getParameterAttributeAccess().getInregKeyword_2()); 
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12713:6: (kw= 'byval' (kw= 'align' this_INTEGER_5= RULE_INTEGER )? )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12713:6: (kw= 'byval' (kw= 'align' this_INTEGER_5= RULE_INTEGER )? )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12714:2: kw= 'byval' (kw= 'align' this_INTEGER_5= RULE_INTEGER )?
                      {
                      kw=(Token)match(input,207,FollowSets002.FOLLOW_207_in_ruleParameterAttribute27380); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getParameterAttributeAccess().getByvalKeyword_3_0()); 
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12719:1: (kw= 'align' this_INTEGER_5= RULE_INTEGER )?
                      int alt157=2;
                      int LA157_0 = input.LA(1);
  
                      if ( (LA157_0==87) ) {
                          alt157=1;
                      }
                      switch (alt157) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12720:2: kw= 'align' this_INTEGER_5= RULE_INTEGER
                              {
                              kw=(Token)match(input,87,FollowSets002.FOLLOW_87_in_ruleParameterAttribute27394); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        current.merge(kw);
                                        newLeafNode(kw, grammarAccess.getParameterAttributeAccess().getAlignKeyword_3_1_0()); 
                                    
                              }
                              this_INTEGER_5=(Token)match(input,RULE_INTEGER,FollowSets002.FOLLOW_RULE_INTEGER_in_ruleParameterAttribute27409); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                		current.merge(this_INTEGER_5);
                                    
                              }
                              if ( state.backtracking==0 ) {
                                 
                                    newLeafNode(this_INTEGER_5, grammarAccess.getParameterAttributeAccess().getINTEGERTerminalRuleCall_3_1_1()); 
                                    
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12734:2: kw= 'sret'
                      {
                      kw=(Token)match(input,208,FollowSets002.FOLLOW_208_in_ruleParameterAttribute27436); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getParameterAttributeAccess().getSretKeyword_4()); 
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12741:2: kw= 'noalias'
                      {
                      kw=(Token)match(input,209,FollowSets002.FOLLOW_209_in_ruleParameterAttribute27455); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getParameterAttributeAccess().getNoaliasKeyword_5()); 
                            
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12748:2: kw= 'nocapture'
                      {
                      kw=(Token)match(input,210,FollowSets002.FOLLOW_210_in_ruleParameterAttribute27474); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getParameterAttributeAccess().getNocaptureKeyword_6()); 
                            
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12755:2: kw= 'nest'
                      {
                      kw=(Token)match(input,211,FollowSets002.FOLLOW_211_in_ruleParameterAttribute27493); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getParameterAttributeAccess().getNestKeyword_7()); 
                            
                      }
  
                      }
                      break;
                  case 9 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12762:2: kw= 'returned'
                      {
                      kw=(Token)match(input,212,FollowSets002.FOLLOW_212_in_ruleParameterAttribute27512); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getParameterAttributeAccess().getReturnedKeyword_8()); 
                            
                      }
  
                      }
                      break;
                  case 10 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12769:2: kw= 'inalloca'
                      {
                      kw=(Token)match(input,213,FollowSets002.FOLLOW_213_in_ruleParameterAttribute27531); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getParameterAttributeAccess().getInallocaKeyword_9()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleParameterAttribute"
  
  
      // $ANTLR start "entryRuleArgument"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12782:1: entryRuleArgument returns [EObject current=null] : iv_ruleArgument= ruleArgument EOF ;
      public final EObject entryRuleArgument() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleArgument = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12783:2: (iv_ruleArgument= ruleArgument EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12784:2: iv_ruleArgument= ruleArgument EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getArgumentRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleArgument_in_entryRuleArgument27571);
              iv_ruleArgument=ruleArgument();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleArgument; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleArgument27581); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleArgument"
  
  
      // $ANTLR start "ruleArgument"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12791:1: ruleArgument returns [EObject current=null] : ( ( (lv_type_0_0= ruleParameterType ) ) ( (lv_ref_1_0= ruleValueRef ) ) ) ;
      public final EObject ruleArgument() throws RecognitionException {
          EObject current = null;
  
          EObject lv_type_0_0 = null;
  
          EObject lv_ref_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12794:28: ( ( ( (lv_type_0_0= ruleParameterType ) ) ( (lv_ref_1_0= ruleValueRef ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12795:1: ( ( (lv_type_0_0= ruleParameterType ) ) ( (lv_ref_1_0= ruleValueRef ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12795:1: ( ( (lv_type_0_0= ruleParameterType ) ) ( (lv_ref_1_0= ruleValueRef ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12795:2: ( (lv_type_0_0= ruleParameterType ) ) ( (lv_ref_1_0= ruleValueRef ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12795:2: ( (lv_type_0_0= ruleParameterType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12796:1: (lv_type_0_0= ruleParameterType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12796:1: (lv_type_0_0= ruleParameterType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12797:3: lv_type_0_0= ruleParameterType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getArgumentAccess().getTypeParameterTypeParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleParameterType_in_ruleArgument27627);
              lv_type_0_0=ruleParameterType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getArgumentRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_0_0, 
                        		"ParameterType");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12813:2: ( (lv_ref_1_0= ruleValueRef ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12814:1: (lv_ref_1_0= ruleValueRef )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12814:1: (lv_ref_1_0= ruleValueRef )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12815:3: lv_ref_1_0= ruleValueRef
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getArgumentAccess().getRefValueRefParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleValueRef_in_ruleArgument27648);
              lv_ref_1_0=ruleValueRef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getArgumentRule());
                	        }
                       		set(
                       			current, 
                       			"ref",
                        		lv_ref_1_0, 
                        		"ValueRef");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleArgument"
  
  
      // $ANTLR start "entryRuleParameter"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12839:1: entryRuleParameter returns [EObject current=null] : iv_ruleParameter= ruleParameter EOF ;
      public final EObject entryRuleParameter() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleParameter = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12840:2: (iv_ruleParameter= ruleParameter EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12841:2: iv_ruleParameter= ruleParameter EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getParameterRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleParameter_in_entryRuleParameter27684);
              iv_ruleParameter=ruleParameter();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleParameter; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleParameter27694); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleParameter"
  
  
      // $ANTLR start "ruleParameter"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12848:1: ruleParameter returns [EObject current=null] : ( ( (lv_type_0_0= ruleParameterType ) ) ( (lv_name_1_0= ruleParamName ) ) ) ;
      public final EObject ruleParameter() throws RecognitionException {
          EObject current = null;
  
          EObject lv_type_0_0 = null;
  
          AntlrDatatypeRuleToken lv_name_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12851:28: ( ( ( (lv_type_0_0= ruleParameterType ) ) ( (lv_name_1_0= ruleParamName ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12852:1: ( ( (lv_type_0_0= ruleParameterType ) ) ( (lv_name_1_0= ruleParamName ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12852:1: ( ( (lv_type_0_0= ruleParameterType ) ) ( (lv_name_1_0= ruleParamName ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12852:2: ( (lv_type_0_0= ruleParameterType ) ) ( (lv_name_1_0= ruleParamName ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12852:2: ( (lv_type_0_0= ruleParameterType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12853:1: (lv_type_0_0= ruleParameterType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12853:1: (lv_type_0_0= ruleParameterType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12854:3: lv_type_0_0= ruleParameterType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getParameterAccess().getTypeParameterTypeParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleParameterType_in_ruleParameter27740);
              lv_type_0_0=ruleParameterType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getParameterRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_0_0, 
                        		"ParameterType");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12870:2: ( (lv_name_1_0= ruleParamName ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12871:1: (lv_name_1_0= ruleParamName )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12871:1: (lv_name_1_0= ruleParamName )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12872:3: lv_name_1_0= ruleParamName
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getParameterAccess().getNameParamNameParserRuleCall_1_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleParamName_in_ruleParameter27761);
              lv_name_1_0=ruleParamName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getParameterRule());
                	        }
                       		set(
                       			current, 
                       			"name",
                        		lv_name_1_0, 
                        		"ParamName");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleParameter"
  
  
      // $ANTLR start "entryRuleNonVoidType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12896:1: entryRuleNonVoidType returns [EObject current=null] : iv_ruleNonVoidType= ruleNonVoidType EOF ;
      public final EObject entryRuleNonVoidType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleNonVoidType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12897:2: (iv_ruleNonVoidType= ruleNonVoidType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12898:2: iv_ruleNonVoidType= ruleNonVoidType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getNonVoidTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleNonVoidType_in_entryRuleNonVoidType27797);
              iv_ruleNonVoidType=ruleNonVoidType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleNonVoidType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleNonVoidType27807); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleNonVoidType"
  
  
      // $ANTLR start "ruleNonVoidType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12905:1: ruleNonVoidType returns [EObject current=null] : ( ( ( (lv_baseType_0_0= ruleVoidType ) ) ( (lv_suffixes_1_0= ruleTypeSuffix ) )+ ) | ( ( (lv_baseType_2_0= ruleNonLeftRecursiveNonVoidType ) ) ( (lv_stars_3_0= ruleStar ) )* ( (lv_suffixes_4_0= ruleTypeSuffix ) )* ) ) ;
      public final EObject ruleNonVoidType() throws RecognitionException {
          EObject current = null;
  
          EObject lv_baseType_0_0 = null;
  
          EObject lv_suffixes_1_0 = null;
  
          EObject lv_baseType_2_0 = null;
  
          EObject lv_stars_3_0 = null;
  
          EObject lv_suffixes_4_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12908:28: ( ( ( ( (lv_baseType_0_0= ruleVoidType ) ) ( (lv_suffixes_1_0= ruleTypeSuffix ) )+ ) | ( ( (lv_baseType_2_0= ruleNonLeftRecursiveNonVoidType ) ) ( (lv_stars_3_0= ruleStar ) )* ( (lv_suffixes_4_0= ruleTypeSuffix ) )* ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12909:1: ( ( ( (lv_baseType_0_0= ruleVoidType ) ) ( (lv_suffixes_1_0= ruleTypeSuffix ) )+ ) | ( ( (lv_baseType_2_0= ruleNonLeftRecursiveNonVoidType ) ) ( (lv_stars_3_0= ruleStar ) )* ( (lv_suffixes_4_0= ruleTypeSuffix ) )* ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12909:1: ( ( ( (lv_baseType_0_0= ruleVoidType ) ) ( (lv_suffixes_1_0= ruleTypeSuffix ) )+ ) | ( ( (lv_baseType_2_0= ruleNonLeftRecursiveNonVoidType ) ) ( (lv_stars_3_0= ruleStar ) )* ( (lv_suffixes_4_0= ruleTypeSuffix ) )* ) )
              int alt162=2;
              int LA162_0 = input.LA(1);
  
              if ( (LA162_0==123) ) {
                  alt162=1;
              }
              else if ( (LA162_0==RULE_LOCAL_ID||LA162_0==RULE_INT_TYPE||LA162_0==26||LA162_0==28||LA162_0==76||LA162_0==78||LA162_0==216||(LA162_0>=218 && LA162_0<=224)) ) {
                  alt162=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 162, 0, input);
  
                  throw nvae;
              }
              switch (alt162) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12909:2: ( ( (lv_baseType_0_0= ruleVoidType ) ) ( (lv_suffixes_1_0= ruleTypeSuffix ) )+ )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12909:2: ( ( (lv_baseType_0_0= ruleVoidType ) ) ( (lv_suffixes_1_0= ruleTypeSuffix ) )+ )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12909:3: ( (lv_baseType_0_0= ruleVoidType ) ) ( (lv_suffixes_1_0= ruleTypeSuffix ) )+
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12909:3: ( (lv_baseType_0_0= ruleVoidType ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12910:1: (lv_baseType_0_0= ruleVoidType )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12910:1: (lv_baseType_0_0= ruleVoidType )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12911:3: lv_baseType_0_0= ruleVoidType
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNonVoidTypeAccess().getBaseTypeVoidTypeParserRuleCall_0_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleVoidType_in_ruleNonVoidType27854);
                      lv_baseType_0_0=ruleVoidType();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNonVoidTypeRule());
                        	        }
                               		set(
                               			current, 
                               			"baseType",
                                		lv_baseType_0_0, 
                                		"VoidType");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12927:2: ( (lv_suffixes_1_0= ruleTypeSuffix ) )+
                      int cnt159=0;
                      loop159:
                      do {
                          int alt159=2;
                          int LA159_0 = input.LA(1);
  
                          if ( (LA159_0==39) ) {
                              alt159=1;
                          }
  
  
                          switch (alt159) {
                      	case 1 :
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12928:1: (lv_suffixes_1_0= ruleTypeSuffix )
                      	    {
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12928:1: (lv_suffixes_1_0= ruleTypeSuffix )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12929:3: lv_suffixes_1_0= ruleTypeSuffix
                      	    {
                      	    if ( state.backtracking==0 ) {
                      	       
                      	      	        newCompositeNode(grammarAccess.getNonVoidTypeAccess().getSuffixesTypeSuffixParserRuleCall_0_1_0()); 
                      	      	    
                      	    }
                      	    pushFollow(FollowSets002.FOLLOW_ruleTypeSuffix_in_ruleNonVoidType27875);
                      	    lv_suffixes_1_0=ruleTypeSuffix();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      	        if (current==null) {
                      	      	            current = createModelElementForParent(grammarAccess.getNonVoidTypeRule());
                      	      	        }
                      	             		add(
                      	             			current, 
                      	             			"suffixes",
                      	              		lv_suffixes_1_0, 
                      	              		"TypeSuffix");
                      	      	        afterParserOrEnumRuleCall();
                      	      	    
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    if ( cnt159 >= 1 ) break loop159;
                      	    if (state.backtracking>0) {state.failed=true; return current;}
                                  EarlyExitException eee =
                                      new EarlyExitException(159, input);
                                  throw eee;
                          }
                          cnt159++;
                      } while (true);
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12946:6: ( ( (lv_baseType_2_0= ruleNonLeftRecursiveNonVoidType ) ) ( (lv_stars_3_0= ruleStar ) )* ( (lv_suffixes_4_0= ruleTypeSuffix ) )* )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12946:6: ( ( (lv_baseType_2_0= ruleNonLeftRecursiveNonVoidType ) ) ( (lv_stars_3_0= ruleStar ) )* ( (lv_suffixes_4_0= ruleTypeSuffix ) )* )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12946:7: ( (lv_baseType_2_0= ruleNonLeftRecursiveNonVoidType ) ) ( (lv_stars_3_0= ruleStar ) )* ( (lv_suffixes_4_0= ruleTypeSuffix ) )*
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12946:7: ( (lv_baseType_2_0= ruleNonLeftRecursiveNonVoidType ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12947:1: (lv_baseType_2_0= ruleNonLeftRecursiveNonVoidType )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12947:1: (lv_baseType_2_0= ruleNonLeftRecursiveNonVoidType )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12948:3: lv_baseType_2_0= ruleNonLeftRecursiveNonVoidType
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getNonVoidTypeAccess().getBaseTypeNonLeftRecursiveNonVoidTypeParserRuleCall_1_0_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleNonLeftRecursiveNonVoidType_in_ruleNonVoidType27905);
                      lv_baseType_2_0=ruleNonLeftRecursiveNonVoidType();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getNonVoidTypeRule());
                        	        }
                               		set(
                               			current, 
                               			"baseType",
                                		lv_baseType_2_0, 
                                		"NonLeftRecursiveNonVoidType");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12964:2: ( (lv_stars_3_0= ruleStar ) )*
                      loop160:
                      do {
                          int alt160=2;
                          int LA160_0 = input.LA(1);
  
                          if ( (LA160_0==85) ) {
                              int LA160_2 = input.LA(2);
  
                              if ( (LA160_2==39) ) {
                                  int LA160_4 = input.LA(3);
  
                                  if ( (LA160_4==RULE_INTEGER) ) {
                                      int LA160_5 = input.LA(4);
  
                                      if ( (LA160_5==41) ) {
                                          int LA160_6 = input.LA(5);
  
                                          if ( (LA160_6==214) ) {
                                              alt160=1;
                                          }
  
  
                                      }
  
  
                                  }
  
  
                              }
  
  
                          }
                          else if ( (LA160_0==214) ) {
                              alt160=1;
                          }
  
  
                          switch (alt160) {
                      	case 1 :
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12965:1: (lv_stars_3_0= ruleStar )
                      	    {
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12965:1: (lv_stars_3_0= ruleStar )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12966:3: lv_stars_3_0= ruleStar
                      	    {
                      	    if ( state.backtracking==0 ) {
                      	       
                      	      	        newCompositeNode(grammarAccess.getNonVoidTypeAccess().getStarsStarParserRuleCall_1_1_0()); 
                      	      	    
                      	    }
                      	    pushFollow(FollowSets002.FOLLOW_ruleStar_in_ruleNonVoidType27926);
                      	    lv_stars_3_0=ruleStar();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      	        if (current==null) {
                      	      	            current = createModelElementForParent(grammarAccess.getNonVoidTypeRule());
                      	      	        }
                      	             		add(
                      	             			current, 
                      	             			"stars",
                      	              		lv_stars_3_0, 
                      	              		"Star");
                      	      	        afterParserOrEnumRuleCall();
                      	      	    
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop160;
                          }
                      } while (true);
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12982:3: ( (lv_suffixes_4_0= ruleTypeSuffix ) )*
                      loop161:
                      do {
                          int alt161=2;
                          int LA161_0 = input.LA(1);
  
                          if ( (LA161_0==39) ) {
                              alt161=1;
                          }
  
  
                          switch (alt161) {
                      	case 1 :
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12983:1: (lv_suffixes_4_0= ruleTypeSuffix )
                      	    {
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12983:1: (lv_suffixes_4_0= ruleTypeSuffix )
                      	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:12984:3: lv_suffixes_4_0= ruleTypeSuffix
                      	    {
                      	    if ( state.backtracking==0 ) {
                      	       
                      	      	        newCompositeNode(grammarAccess.getNonVoidTypeAccess().getSuffixesTypeSuffixParserRuleCall_1_2_0()); 
                      	      	    
                      	    }
                      	    pushFollow(FollowSets002.FOLLOW_ruleTypeSuffix_in_ruleNonVoidType27948);
                      	    lv_suffixes_4_0=ruleTypeSuffix();
  
                      	    state._fsp--;
                      	    if (state.failed) return current;
                      	    if ( state.backtracking==0 ) {
  
                      	      	        if (current==null) {
                      	      	            current = createModelElementForParent(grammarAccess.getNonVoidTypeRule());
                      	      	        }
                      	             		add(
                      	             			current, 
                      	             			"suffixes",
                      	              		lv_suffixes_4_0, 
                      	              		"TypeSuffix");
                      	      	        afterParserOrEnumRuleCall();
                      	      	    
                      	    }
  
                      	    }
  
  
                      	    }
                      	    break;
  
                      	default :
                      	    break loop161;
                          }
                      } while (true);
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleNonVoidType"
  
  
      // $ANTLR start "entryRuleStar"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13008:1: entryRuleStar returns [EObject current=null] : iv_ruleStar= ruleStar EOF ;
      public final EObject entryRuleStar() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleStar = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13009:2: (iv_ruleStar= ruleStar EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13010:2: iv_ruleStar= ruleStar EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getStarRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleStar_in_entryRuleStar27986);
              iv_ruleStar=ruleStar();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleStar; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleStar27996); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleStar"
  
  
      // $ANTLR start "ruleStar"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13017:1: ruleStar returns [EObject current=null] : ( () ( (lv_addressSpace_1_0= ruleAddressSpace ) )? otherlv_2= '*' ) ;
      public final EObject ruleStar() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_2=null;
          EObject lv_addressSpace_1_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13020:28: ( ( () ( (lv_addressSpace_1_0= ruleAddressSpace ) )? otherlv_2= '*' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13021:1: ( () ( (lv_addressSpace_1_0= ruleAddressSpace ) )? otherlv_2= '*' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13021:1: ( () ( (lv_addressSpace_1_0= ruleAddressSpace ) )? otherlv_2= '*' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13021:2: () ( (lv_addressSpace_1_0= ruleAddressSpace ) )? otherlv_2= '*'
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13021:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13022:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getStarAccess().getStarAction_0(),
                            current);
                    
              }
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13027:2: ( (lv_addressSpace_1_0= ruleAddressSpace ) )?
              int alt163=2;
              int LA163_0 = input.LA(1);
  
              if ( (LA163_0==85) ) {
                  alt163=1;
              }
              switch (alt163) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13028:1: (lv_addressSpace_1_0= ruleAddressSpace )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13028:1: (lv_addressSpace_1_0= ruleAddressSpace )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13029:3: lv_addressSpace_1_0= ruleAddressSpace
                      {
                      if ( state.backtracking==0 ) {
                         
                        	        newCompositeNode(grammarAccess.getStarAccess().getAddressSpaceAddressSpaceParserRuleCall_1_0()); 
                        	    
                      }
                      pushFollow(FollowSets002.FOLLOW_ruleAddressSpace_in_ruleStar28051);
                      lv_addressSpace_1_0=ruleAddressSpace();
  
                      state._fsp--;
                      if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElementForParent(grammarAccess.getStarRule());
                        	        }
                               		set(
                               			current, 
                               			"addressSpace",
                                		lv_addressSpace_1_0, 
                                		"AddressSpace");
                        	        afterParserOrEnumRuleCall();
                        	    
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
              otherlv_2=(Token)match(input,214,FollowSets002.FOLLOW_214_in_ruleStar28064); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getStarAccess().getAsteriskKeyword_2());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleStar"
  
  
      // $ANTLR start "entryRuleType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13057:1: entryRuleType returns [EObject current=null] : iv_ruleType= ruleType EOF ;
      public final EObject entryRuleType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13058:2: (iv_ruleType= ruleType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13059:2: iv_ruleType= ruleType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleType_in_entryRuleType28100);
              iv_ruleType=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleType28110); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleType"
  
  
      // $ANTLR start "ruleType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13066:1: ruleType returns [EObject current=null] : ( ( (lv_baseType_0_0= ruleNonLeftRecursiveType ) ) ( (lv_stars_1_0= ruleStar ) )* ( (lv_suffixes_2_0= ruleTypeSuffix ) )* ) ;
      public final EObject ruleType() throws RecognitionException {
          EObject current = null;
  
          EObject lv_baseType_0_0 = null;
  
          EObject lv_stars_1_0 = null;
  
          EObject lv_suffixes_2_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13069:28: ( ( ( (lv_baseType_0_0= ruleNonLeftRecursiveType ) ) ( (lv_stars_1_0= ruleStar ) )* ( (lv_suffixes_2_0= ruleTypeSuffix ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13070:1: ( ( (lv_baseType_0_0= ruleNonLeftRecursiveType ) ) ( (lv_stars_1_0= ruleStar ) )* ( (lv_suffixes_2_0= ruleTypeSuffix ) )* )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13070:1: ( ( (lv_baseType_0_0= ruleNonLeftRecursiveType ) ) ( (lv_stars_1_0= ruleStar ) )* ( (lv_suffixes_2_0= ruleTypeSuffix ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13070:2: ( (lv_baseType_0_0= ruleNonLeftRecursiveType ) ) ( (lv_stars_1_0= ruleStar ) )* ( (lv_suffixes_2_0= ruleTypeSuffix ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13070:2: ( (lv_baseType_0_0= ruleNonLeftRecursiveType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13071:1: (lv_baseType_0_0= ruleNonLeftRecursiveType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13071:1: (lv_baseType_0_0= ruleNonLeftRecursiveType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13072:3: lv_baseType_0_0= ruleNonLeftRecursiveType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getTypeAccess().getBaseTypeNonLeftRecursiveTypeParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleNonLeftRecursiveType_in_ruleType28156);
              lv_baseType_0_0=ruleNonLeftRecursiveType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getTypeRule());
                	        }
                       		set(
                       			current, 
                       			"baseType",
                        		lv_baseType_0_0, 
                        		"NonLeftRecursiveType");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13088:2: ( (lv_stars_1_0= ruleStar ) )*
              loop164:
              do {
                  int alt164=2;
                  int LA164_0 = input.LA(1);
  
                  if ( (LA164_0==85) ) {
                      int LA164_2 = input.LA(2);
  
                      if ( (LA164_2==39) ) {
                          int LA164_4 = input.LA(3);
  
                          if ( (LA164_4==RULE_INTEGER) ) {
                              int LA164_5 = input.LA(4);
  
                              if ( (LA164_5==41) ) {
                                  int LA164_6 = input.LA(5);
  
                                  if ( (LA164_6==214) ) {
                                      alt164=1;
                                  }
  
  
                              }
  
  
                          }
  
  
                      }
  
  
                  }
                  else if ( (LA164_0==214) ) {
                      alt164=1;
                  }
  
  
                  switch (alt164) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13089:1: (lv_stars_1_0= ruleStar )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13089:1: (lv_stars_1_0= ruleStar )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13090:3: lv_stars_1_0= ruleStar
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getTypeAccess().getStarsStarParserRuleCall_1_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets002.FOLLOW_ruleStar_in_ruleType28177);
              	    lv_stars_1_0=ruleStar();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getTypeRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"stars",
              	              		lv_stars_1_0, 
              	              		"Star");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop164;
                  }
              } while (true);
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13106:3: ( (lv_suffixes_2_0= ruleTypeSuffix ) )*
              loop165:
              do {
                  int alt165=2;
                  int LA165_0 = input.LA(1);
  
                  if ( (LA165_0==39) ) {
                      alt165=1;
                  }
  
  
                  switch (alt165) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13107:1: (lv_suffixes_2_0= ruleTypeSuffix )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13107:1: (lv_suffixes_2_0= ruleTypeSuffix )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13108:3: lv_suffixes_2_0= ruleTypeSuffix
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getTypeAccess().getSuffixesTypeSuffixParserRuleCall_2_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets002.FOLLOW_ruleTypeSuffix_in_ruleType28199);
              	    lv_suffixes_2_0=ruleTypeSuffix();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getTypeRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"suffixes",
              	              		lv_suffixes_2_0, 
              	              		"TypeSuffix");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop165;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleType"
  
  
      // $ANTLR start "entryRuleTypeSuffix"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13132:1: entryRuleTypeSuffix returns [EObject current=null] : iv_ruleTypeSuffix= ruleTypeSuffix EOF ;
      public final EObject entryRuleTypeSuffix() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleTypeSuffix = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13133:2: (iv_ruleTypeSuffix= ruleTypeSuffix EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13134:2: iv_ruleTypeSuffix= ruleTypeSuffix EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getTypeSuffixRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleTypeSuffix_in_entryRuleTypeSuffix28236);
              iv_ruleTypeSuffix=ruleTypeSuffix();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleTypeSuffix; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleTypeSuffix28246); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleTypeSuffix"
  
  
      // $ANTLR start "ruleTypeSuffix"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13141:1: ruleTypeSuffix returns [EObject current=null] : ( () otherlv_1= '(' ( ( ( (lv_containedTypes_2_0= ruleParameterType ) ) (otherlv_3= ',' ( (lv_containedTypes_4_0= ruleParameterType ) ) )* (otherlv_5= ',' ( (lv_vararg_6_0= '...' ) ) )? )? | ( (lv_vararg_7_0= '...' ) ) ) otherlv_8= ')' ( (lv_stars_9_0= ruleStar ) )* ) ;
      public final EObject ruleTypeSuffix() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token lv_vararg_6_0=null;
          Token lv_vararg_7_0=null;
          Token otherlv_8=null;
          EObject lv_containedTypes_2_0 = null;
  
          EObject lv_containedTypes_4_0 = null;
  
          EObject lv_stars_9_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13144:28: ( ( () otherlv_1= '(' ( ( ( (lv_containedTypes_2_0= ruleParameterType ) ) (otherlv_3= ',' ( (lv_containedTypes_4_0= ruleParameterType ) ) )* (otherlv_5= ',' ( (lv_vararg_6_0= '...' ) ) )? )? | ( (lv_vararg_7_0= '...' ) ) ) otherlv_8= ')' ( (lv_stars_9_0= ruleStar ) )* ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13145:1: ( () otherlv_1= '(' ( ( ( (lv_containedTypes_2_0= ruleParameterType ) ) (otherlv_3= ',' ( (lv_containedTypes_4_0= ruleParameterType ) ) )* (otherlv_5= ',' ( (lv_vararg_6_0= '...' ) ) )? )? | ( (lv_vararg_7_0= '...' ) ) ) otherlv_8= ')' ( (lv_stars_9_0= ruleStar ) )* )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13145:1: ( () otherlv_1= '(' ( ( ( (lv_containedTypes_2_0= ruleParameterType ) ) (otherlv_3= ',' ( (lv_containedTypes_4_0= ruleParameterType ) ) )* (otherlv_5= ',' ( (lv_vararg_6_0= '...' ) ) )? )? | ( (lv_vararg_7_0= '...' ) ) ) otherlv_8= ')' ( (lv_stars_9_0= ruleStar ) )* )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13145:2: () otherlv_1= '(' ( ( ( (lv_containedTypes_2_0= ruleParameterType ) ) (otherlv_3= ',' ( (lv_containedTypes_4_0= ruleParameterType ) ) )* (otherlv_5= ',' ( (lv_vararg_6_0= '...' ) ) )? )? | ( (lv_vararg_7_0= '...' ) ) ) otherlv_8= ')' ( (lv_stars_9_0= ruleStar ) )*
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13145:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13146:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getTypeSuffixAccess().getTypeSuffixAction_0(),
                            current);
                    
              }
  
              }
  
              otherlv_1=(Token)match(input,39,FollowSets002.FOLLOW_39_in_ruleTypeSuffix28292); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getTypeSuffixAccess().getLeftParenthesisKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13155:1: ( ( ( (lv_containedTypes_2_0= ruleParameterType ) ) (otherlv_3= ',' ( (lv_containedTypes_4_0= ruleParameterType ) ) )* (otherlv_5= ',' ( (lv_vararg_6_0= '...' ) ) )? )? | ( (lv_vararg_7_0= '...' ) ) )
              int alt169=2;
              int LA169_0 = input.LA(1);
  
              if ( (LA169_0==RULE_LOCAL_ID||LA169_0==RULE_INT_TYPE||LA169_0==26||LA169_0==28||LA169_0==41||LA169_0==76||LA169_0==78||LA169_0==123||LA169_0==216||(LA169_0>=218 && LA169_0<=224)) ) {
                  alt169=1;
              }
              else if ( (LA169_0==92) ) {
                  alt169=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 169, 0, input);
  
                  throw nvae;
              }
              switch (alt169) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13155:2: ( ( (lv_containedTypes_2_0= ruleParameterType ) ) (otherlv_3= ',' ( (lv_containedTypes_4_0= ruleParameterType ) ) )* (otherlv_5= ',' ( (lv_vararg_6_0= '...' ) ) )? )?
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13155:2: ( ( (lv_containedTypes_2_0= ruleParameterType ) ) (otherlv_3= ',' ( (lv_containedTypes_4_0= ruleParameterType ) ) )* (otherlv_5= ',' ( (lv_vararg_6_0= '...' ) ) )? )?
                      int alt168=2;
                      int LA168_0 = input.LA(1);
  
                      if ( (LA168_0==RULE_LOCAL_ID||LA168_0==RULE_INT_TYPE||LA168_0==26||LA168_0==28||LA168_0==76||LA168_0==78||LA168_0==123||LA168_0==216||(LA168_0>=218 && LA168_0<=224)) ) {
                          alt168=1;
                      }
                      switch (alt168) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13155:3: ( (lv_containedTypes_2_0= ruleParameterType ) ) (otherlv_3= ',' ( (lv_containedTypes_4_0= ruleParameterType ) ) )* (otherlv_5= ',' ( (lv_vararg_6_0= '...' ) ) )?
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13155:3: ( (lv_containedTypes_2_0= ruleParameterType ) )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13156:1: (lv_containedTypes_2_0= ruleParameterType )
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13156:1: (lv_containedTypes_2_0= ruleParameterType )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13157:3: lv_containedTypes_2_0= ruleParameterType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getTypeSuffixAccess().getContainedTypesParameterTypeParserRuleCall_2_0_0_0()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleParameterType_in_ruleTypeSuffix28315);
                              lv_containedTypes_2_0=ruleParameterType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getTypeSuffixRule());
                                	        }
                                       		add(
                                       			current, 
                                       			"containedTypes",
                                        		lv_containedTypes_2_0, 
                                        		"ParameterType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
  
  
                              }
  
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13173:2: (otherlv_3= ',' ( (lv_containedTypes_4_0= ruleParameterType ) ) )*
                              loop166:
                              do {
                                  int alt166=2;
                                  int LA166_0 = input.LA(1);
  
                                  if ( (LA166_0==38) ) {
                                      int LA166_1 = input.LA(2);
  
                                      if ( (LA166_1==RULE_LOCAL_ID||LA166_1==RULE_INT_TYPE||LA166_1==26||LA166_1==28||LA166_1==76||LA166_1==78||LA166_1==123||LA166_1==216||(LA166_1>=218 && LA166_1<=224)) ) {
                                          alt166=1;
                                      }
  
  
                                  }
  
  
                                  switch (alt166) {
                              	case 1 :
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13173:4: otherlv_3= ',' ( (lv_containedTypes_4_0= ruleParameterType ) )
                              	    {
                              	    otherlv_3=(Token)match(input,38,FollowSets002.FOLLOW_38_in_ruleTypeSuffix28328); if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	          	newLeafNode(otherlv_3, grammarAccess.getTypeSuffixAccess().getCommaKeyword_2_0_1_0());
                              	          
                              	    }
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13177:1: ( (lv_containedTypes_4_0= ruleParameterType ) )
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13178:1: (lv_containedTypes_4_0= ruleParameterType )
                              	    {
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13178:1: (lv_containedTypes_4_0= ruleParameterType )
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13179:3: lv_containedTypes_4_0= ruleParameterType
                              	    {
                              	    if ( state.backtracking==0 ) {
                              	       
                              	      	        newCompositeNode(grammarAccess.getTypeSuffixAccess().getContainedTypesParameterTypeParserRuleCall_2_0_1_1_0()); 
                              	      	    
                              	    }
                              	    pushFollow(FollowSets002.FOLLOW_ruleParameterType_in_ruleTypeSuffix28349);
                              	    lv_containedTypes_4_0=ruleParameterType();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      	        if (current==null) {
                              	      	            current = createModelElementForParent(grammarAccess.getTypeSuffixRule());
                              	      	        }
                              	             		add(
                              	             			current, 
                              	             			"containedTypes",
                              	              		lv_containedTypes_4_0, 
                              	              		"ParameterType");
                              	      	        afterParserOrEnumRuleCall();
                              	      	    
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop166;
                                  }
                              } while (true);
  
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13195:4: (otherlv_5= ',' ( (lv_vararg_6_0= '...' ) ) )?
                              int alt167=2;
                              int LA167_0 = input.LA(1);
  
                              if ( (LA167_0==38) ) {
                                  alt167=1;
                              }
                              switch (alt167) {
                                  case 1 :
                                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13195:6: otherlv_5= ',' ( (lv_vararg_6_0= '...' ) )
                                      {
                                      otherlv_5=(Token)match(input,38,FollowSets002.FOLLOW_38_in_ruleTypeSuffix28364); if (state.failed) return current;
                                      if ( state.backtracking==0 ) {
  
                                            	newLeafNode(otherlv_5, grammarAccess.getTypeSuffixAccess().getCommaKeyword_2_0_2_0());
                                            
                                      }
                                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13199:1: ( (lv_vararg_6_0= '...' ) )
                                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13200:1: (lv_vararg_6_0= '...' )
                                      {
                                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13200:1: (lv_vararg_6_0= '...' )
                                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13201:3: lv_vararg_6_0= '...'
                                      {
                                      lv_vararg_6_0=(Token)match(input,92,FollowSets002.FOLLOW_92_in_ruleTypeSuffix28382); if (state.failed) return current;
                                      if ( state.backtracking==0 ) {
  
                                                newLeafNode(lv_vararg_6_0, grammarAccess.getTypeSuffixAccess().getVarargFullStopFullStopFullStopKeyword_2_0_2_1_0());
                                            
                                      }
                                      if ( state.backtracking==0 ) {
  
                                        	        if (current==null) {
                                        	            current = createModelElement(grammarAccess.getTypeSuffixRule());
                                        	        }
                                               		setWithLastConsumed(current, "vararg", lv_vararg_6_0, "...");
                                        	    
                                      }
  
                                      }
  
  
                                      }
  
  
                                      }
                                      break;
  
                              }
  
  
                              }
                              break;
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13215:6: ( (lv_vararg_7_0= '...' ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13215:6: ( (lv_vararg_7_0= '...' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13216:1: (lv_vararg_7_0= '...' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13216:1: (lv_vararg_7_0= '...' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13217:3: lv_vararg_7_0= '...'
                      {
                      lv_vararg_7_0=(Token)match(input,92,FollowSets002.FOLLOW_92_in_ruleTypeSuffix28423); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_vararg_7_0, grammarAccess.getTypeSuffixAccess().getVarargFullStopFullStopFullStopKeyword_2_1_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getTypeSuffixRule());
                        	        }
                               		setWithLastConsumed(current, "vararg", lv_vararg_7_0, "...");
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
              otherlv_8=(Token)match(input,41,FollowSets002.FOLLOW_41_in_ruleTypeSuffix28449); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_8, grammarAccess.getTypeSuffixAccess().getRightParenthesisKeyword_3());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13234:1: ( (lv_stars_9_0= ruleStar ) )*
              loop170:
              do {
                  int alt170=2;
                  int LA170_0 = input.LA(1);
  
                  if ( (LA170_0==85) ) {
                      int LA170_2 = input.LA(2);
  
                      if ( (LA170_2==39) ) {
                          int LA170_4 = input.LA(3);
  
                          if ( (LA170_4==RULE_INTEGER) ) {
                              int LA170_5 = input.LA(4);
  
                              if ( (LA170_5==41) ) {
                                  int LA170_6 = input.LA(5);
  
                                  if ( (LA170_6==214) ) {
                                      alt170=1;
                                  }
  
  
                              }
  
  
                          }
  
  
                      }
  
  
                  }
                  else if ( (LA170_0==214) ) {
                      alt170=1;
                  }
  
  
                  switch (alt170) {
              	case 1 :
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13235:1: (lv_stars_9_0= ruleStar )
              	    {
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13235:1: (lv_stars_9_0= ruleStar )
              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13236:3: lv_stars_9_0= ruleStar
              	    {
              	    if ( state.backtracking==0 ) {
              	       
              	      	        newCompositeNode(grammarAccess.getTypeSuffixAccess().getStarsStarParserRuleCall_4_0()); 
              	      	    
              	    }
              	    pushFollow(FollowSets002.FOLLOW_ruleStar_in_ruleTypeSuffix28470);
              	    lv_stars_9_0=ruleStar();
  
              	    state._fsp--;
              	    if (state.failed) return current;
              	    if ( state.backtracking==0 ) {
  
              	      	        if (current==null) {
              	      	            current = createModelElementForParent(grammarAccess.getTypeSuffixRule());
              	      	        }
              	             		add(
              	             			current, 
              	             			"stars",
              	              		lv_stars_9_0, 
              	              		"Star");
              	      	        afterParserOrEnumRuleCall();
              	      	    
              	    }
  
              	    }
  
  
              	    }
              	    break;
  
              	default :
              	    break loop170;
                  }
              } while (true);
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleTypeSuffix"
  
  
      // $ANTLR start "entryRuleNonLeftRecursiveType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13260:1: entryRuleNonLeftRecursiveType returns [EObject current=null] : iv_ruleNonLeftRecursiveType= ruleNonLeftRecursiveType EOF ;
      public final EObject entryRuleNonLeftRecursiveType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleNonLeftRecursiveType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13261:2: (iv_ruleNonLeftRecursiveType= ruleNonLeftRecursiveType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13262:2: iv_ruleNonLeftRecursiveType= ruleNonLeftRecursiveType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getNonLeftRecursiveTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleNonLeftRecursiveType_in_entryRuleNonLeftRecursiveType28507);
              iv_ruleNonLeftRecursiveType=ruleNonLeftRecursiveType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleNonLeftRecursiveType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleNonLeftRecursiveType28517); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleNonLeftRecursiveType"
  
  
      // $ANTLR start "ruleNonLeftRecursiveType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13269:1: ruleNonLeftRecursiveType returns [EObject current=null] : ( ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleVoidType | lv_type_0_7= ruleMetadataType | lv_type_0_8= ruleStructType | lv_type_0_9= ruleOpaqueType ) ) ) | ( (otherlv_1= RULE_LOCAL_ID ) ) ) ;
      public final EObject ruleNonLeftRecursiveType() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          EObject lv_type_0_1 = null;
  
          EObject lv_type_0_2 = null;
  
          EObject lv_type_0_3 = null;
  
          EObject lv_type_0_4 = null;
  
          EObject lv_type_0_5 = null;
  
          EObject lv_type_0_6 = null;
  
          EObject lv_type_0_7 = null;
  
          EObject lv_type_0_8 = null;
  
          EObject lv_type_0_9 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13272:28: ( ( ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleVoidType | lv_type_0_7= ruleMetadataType | lv_type_0_8= ruleStructType | lv_type_0_9= ruleOpaqueType ) ) ) | ( (otherlv_1= RULE_LOCAL_ID ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13273:1: ( ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleVoidType | lv_type_0_7= ruleMetadataType | lv_type_0_8= ruleStructType | lv_type_0_9= ruleOpaqueType ) ) ) | ( (otherlv_1= RULE_LOCAL_ID ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13273:1: ( ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleVoidType | lv_type_0_7= ruleMetadataType | lv_type_0_8= ruleStructType | lv_type_0_9= ruleOpaqueType ) ) ) | ( (otherlv_1= RULE_LOCAL_ID ) ) )
              int alt172=2;
              int LA172_0 = input.LA(1);
  
              if ( (LA172_0==RULE_INT_TYPE||LA172_0==26||LA172_0==28||LA172_0==76||LA172_0==78||LA172_0==123||LA172_0==216||(LA172_0>=218 && LA172_0<=224)) ) {
                  alt172=1;
              }
              else if ( (LA172_0==RULE_LOCAL_ID) ) {
                  alt172=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 172, 0, input);
  
                  throw nvae;
              }
              switch (alt172) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13273:2: ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleVoidType | lv_type_0_7= ruleMetadataType | lv_type_0_8= ruleStructType | lv_type_0_9= ruleOpaqueType ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13273:2: ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleVoidType | lv_type_0_7= ruleMetadataType | lv_type_0_8= ruleStructType | lv_type_0_9= ruleOpaqueType ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13274:1: ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleVoidType | lv_type_0_7= ruleMetadataType | lv_type_0_8= ruleStructType | lv_type_0_9= ruleOpaqueType ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13274:1: ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleVoidType | lv_type_0_7= ruleMetadataType | lv_type_0_8= ruleStructType | lv_type_0_9= ruleOpaqueType ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13275:1: (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleVoidType | lv_type_0_7= ruleMetadataType | lv_type_0_8= ruleStructType | lv_type_0_9= ruleOpaqueType )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13275:1: (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleVoidType | lv_type_0_7= ruleMetadataType | lv_type_0_8= ruleStructType | lv_type_0_9= ruleOpaqueType )
                      int alt171=9;
                      alt171 = dfa171.predict(input);
                      switch (alt171) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13276:3: lv_type_0_1= ruleIntType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveTypeAccess().getTypeIntTypeParserRuleCall_0_0_0()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleIntType_in_ruleNonLeftRecursiveType28565);
                              lv_type_0_1=ruleIntType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_1, 
                                        		"IntType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 2 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13291:8: lv_type_0_2= ruleFloatingType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveTypeAccess().getTypeFloatingTypeParserRuleCall_0_0_1()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleFloatingType_in_ruleNonLeftRecursiveType28584);
                              lv_type_0_2=ruleFloatingType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_2, 
                                        		"FloatingType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 3 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13306:8: lv_type_0_3= ruleVectorType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveTypeAccess().getTypeVectorTypeParserRuleCall_0_0_2()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleVectorType_in_ruleNonLeftRecursiveType28603);
                              lv_type_0_3=ruleVectorType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_3, 
                                        		"VectorType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 4 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13321:8: lv_type_0_4= ruleArrayType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveTypeAccess().getTypeArrayTypeParserRuleCall_0_0_3()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleArrayType_in_ruleNonLeftRecursiveType28622);
                              lv_type_0_4=ruleArrayType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_4, 
                                        		"ArrayType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 5 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13336:8: lv_type_0_5= ruleX86mmxType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveTypeAccess().getTypeX86mmxTypeParserRuleCall_0_0_4()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleX86mmxType_in_ruleNonLeftRecursiveType28641);
                              lv_type_0_5=ruleX86mmxType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_5, 
                                        		"X86mmxType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 6 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13351:8: lv_type_0_6= ruleVoidType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveTypeAccess().getTypeVoidTypeParserRuleCall_0_0_5()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleVoidType_in_ruleNonLeftRecursiveType28660);
                              lv_type_0_6=ruleVoidType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_6, 
                                        		"VoidType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 7 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13366:8: lv_type_0_7= ruleMetadataType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveTypeAccess().getTypeMetadataTypeParserRuleCall_0_0_6()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleMetadataType_in_ruleNonLeftRecursiveType28679);
                              lv_type_0_7=ruleMetadataType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_7, 
                                        		"MetadataType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 8 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13381:8: lv_type_0_8= ruleStructType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveTypeAccess().getTypeStructTypeParserRuleCall_0_0_7()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleStructType_in_ruleNonLeftRecursiveType28698);
                              lv_type_0_8=ruleStructType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_8, 
                                        		"StructType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 9 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13396:8: lv_type_0_9= ruleOpaqueType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveTypeAccess().getTypeOpaqueTypeParserRuleCall_0_0_8()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleOpaqueType_in_ruleNonLeftRecursiveType28717);
                              lv_type_0_9=ruleOpaqueType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_9, 
                                        		"OpaqueType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13415:6: ( (otherlv_1= RULE_LOCAL_ID ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13415:6: ( (otherlv_1= RULE_LOCAL_ID ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13416:1: (otherlv_1= RULE_LOCAL_ID )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13416:1: (otherlv_1= RULE_LOCAL_ID )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13417:3: otherlv_1= RULE_LOCAL_ID
                      {
                      if ( state.backtracking==0 ) {
  
                        			if (current==null) {
                        	            current = createModelElement(grammarAccess.getNonLeftRecursiveTypeRule());
                        	        }
                                
                      }
                      otherlv_1=(Token)match(input,RULE_LOCAL_ID,FollowSets002.FOLLOW_RULE_LOCAL_ID_in_ruleNonLeftRecursiveType28746); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        		newLeafNode(otherlv_1, grammarAccess.getNonLeftRecursiveTypeAccess().getTypedefTypeDefCrossReference_1_0()); 
                        	
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleNonLeftRecursiveType"
  
  
      // $ANTLR start "entryRuleNonLeftRecursiveNonVoidType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13436:1: entryRuleNonLeftRecursiveNonVoidType returns [EObject current=null] : iv_ruleNonLeftRecursiveNonVoidType= ruleNonLeftRecursiveNonVoidType EOF ;
      public final EObject entryRuleNonLeftRecursiveNonVoidType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleNonLeftRecursiveNonVoidType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13437:2: (iv_ruleNonLeftRecursiveNonVoidType= ruleNonLeftRecursiveNonVoidType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13438:2: iv_ruleNonLeftRecursiveNonVoidType= ruleNonLeftRecursiveNonVoidType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getNonLeftRecursiveNonVoidTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleNonLeftRecursiveNonVoidType_in_entryRuleNonLeftRecursiveNonVoidType28782);
              iv_ruleNonLeftRecursiveNonVoidType=ruleNonLeftRecursiveNonVoidType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleNonLeftRecursiveNonVoidType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleNonLeftRecursiveNonVoidType28792); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleNonLeftRecursiveNonVoidType"
  
  
      // $ANTLR start "ruleNonLeftRecursiveNonVoidType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13445:1: ruleNonLeftRecursiveNonVoidType returns [EObject current=null] : ( ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleMetadataType | lv_type_0_7= ruleStructType | lv_type_0_8= ruleOpaqueType ) ) ) | ( (otherlv_1= RULE_LOCAL_ID ) ) ) ;
      public final EObject ruleNonLeftRecursiveNonVoidType() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          EObject lv_type_0_1 = null;
  
          EObject lv_type_0_2 = null;
  
          EObject lv_type_0_3 = null;
  
          EObject lv_type_0_4 = null;
  
          EObject lv_type_0_5 = null;
  
          EObject lv_type_0_6 = null;
  
          EObject lv_type_0_7 = null;
  
          EObject lv_type_0_8 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13448:28: ( ( ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleMetadataType | lv_type_0_7= ruleStructType | lv_type_0_8= ruleOpaqueType ) ) ) | ( (otherlv_1= RULE_LOCAL_ID ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13449:1: ( ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleMetadataType | lv_type_0_7= ruleStructType | lv_type_0_8= ruleOpaqueType ) ) ) | ( (otherlv_1= RULE_LOCAL_ID ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13449:1: ( ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleMetadataType | lv_type_0_7= ruleStructType | lv_type_0_8= ruleOpaqueType ) ) ) | ( (otherlv_1= RULE_LOCAL_ID ) ) )
              int alt174=2;
              int LA174_0 = input.LA(1);
  
              if ( (LA174_0==RULE_INT_TYPE||LA174_0==26||LA174_0==28||LA174_0==76||LA174_0==78||LA174_0==216||(LA174_0>=218 && LA174_0<=224)) ) {
                  alt174=1;
              }
              else if ( (LA174_0==RULE_LOCAL_ID) ) {
                  alt174=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 174, 0, input);
  
                  throw nvae;
              }
              switch (alt174) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13449:2: ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleMetadataType | lv_type_0_7= ruleStructType | lv_type_0_8= ruleOpaqueType ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13449:2: ( ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleMetadataType | lv_type_0_7= ruleStructType | lv_type_0_8= ruleOpaqueType ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13450:1: ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleMetadataType | lv_type_0_7= ruleStructType | lv_type_0_8= ruleOpaqueType ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13450:1: ( (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleMetadataType | lv_type_0_7= ruleStructType | lv_type_0_8= ruleOpaqueType ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13451:1: (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleMetadataType | lv_type_0_7= ruleStructType | lv_type_0_8= ruleOpaqueType )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13451:1: (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleMetadataType | lv_type_0_7= ruleStructType | lv_type_0_8= ruleOpaqueType )
                      int alt173=8;
                      alt173 = dfa173.predict(input);
                      switch (alt173) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13452:3: lv_type_0_1= ruleIntType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveNonVoidTypeAccess().getTypeIntTypeParserRuleCall_0_0_0()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleIntType_in_ruleNonLeftRecursiveNonVoidType28840);
                              lv_type_0_1=ruleIntType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveNonVoidTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_1, 
                                        		"IntType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 2 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13467:8: lv_type_0_2= ruleFloatingType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveNonVoidTypeAccess().getTypeFloatingTypeParserRuleCall_0_0_1()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleFloatingType_in_ruleNonLeftRecursiveNonVoidType28859);
                              lv_type_0_2=ruleFloatingType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveNonVoidTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_2, 
                                        		"FloatingType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 3 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13482:8: lv_type_0_3= ruleVectorType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveNonVoidTypeAccess().getTypeVectorTypeParserRuleCall_0_0_2()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleVectorType_in_ruleNonLeftRecursiveNonVoidType28878);
                              lv_type_0_3=ruleVectorType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveNonVoidTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_3, 
                                        		"VectorType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 4 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13497:8: lv_type_0_4= ruleArrayType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveNonVoidTypeAccess().getTypeArrayTypeParserRuleCall_0_0_3()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleArrayType_in_ruleNonLeftRecursiveNonVoidType28897);
                              lv_type_0_4=ruleArrayType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveNonVoidTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_4, 
                                        		"ArrayType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 5 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13512:8: lv_type_0_5= ruleX86mmxType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveNonVoidTypeAccess().getTypeX86mmxTypeParserRuleCall_0_0_4()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleX86mmxType_in_ruleNonLeftRecursiveNonVoidType28916);
                              lv_type_0_5=ruleX86mmxType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveNonVoidTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_5, 
                                        		"X86mmxType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 6 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13527:8: lv_type_0_6= ruleMetadataType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveNonVoidTypeAccess().getTypeMetadataTypeParserRuleCall_0_0_5()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleMetadataType_in_ruleNonLeftRecursiveNonVoidType28935);
                              lv_type_0_6=ruleMetadataType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveNonVoidTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_6, 
                                        		"MetadataType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 7 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13542:8: lv_type_0_7= ruleStructType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveNonVoidTypeAccess().getTypeStructTypeParserRuleCall_0_0_6()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleStructType_in_ruleNonLeftRecursiveNonVoidType28954);
                              lv_type_0_7=ruleStructType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveNonVoidTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_7, 
                                        		"StructType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
                          case 8 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13557:8: lv_type_0_8= ruleOpaqueType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getNonLeftRecursiveNonVoidTypeAccess().getTypeOpaqueTypeParserRuleCall_0_0_7()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleOpaqueType_in_ruleNonLeftRecursiveNonVoidType28973);
                              lv_type_0_8=ruleOpaqueType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getNonLeftRecursiveNonVoidTypeRule());
                                	        }
                                       		set(
                                       			current, 
                                       			"type",
                                        		lv_type_0_8, 
                                        		"OpaqueType");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13576:6: ( (otherlv_1= RULE_LOCAL_ID ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13576:6: ( (otherlv_1= RULE_LOCAL_ID ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13577:1: (otherlv_1= RULE_LOCAL_ID )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13577:1: (otherlv_1= RULE_LOCAL_ID )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13578:3: otherlv_1= RULE_LOCAL_ID
                      {
                      if ( state.backtracking==0 ) {
  
                        			if (current==null) {
                        	            current = createModelElement(grammarAccess.getNonLeftRecursiveNonVoidTypeRule());
                        	        }
                                
                      }
                      otherlv_1=(Token)match(input,RULE_LOCAL_ID,FollowSets002.FOLLOW_RULE_LOCAL_ID_in_ruleNonLeftRecursiveNonVoidType29002); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        		newLeafNode(otherlv_1, grammarAccess.getNonLeftRecursiveNonVoidTypeAccess().getTypedefTypeDefCrossReference_1_0()); 
                        	
                      }
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleNonLeftRecursiveNonVoidType"
  
  
      // $ANTLR start "entryRuleTypeDef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13597:1: entryRuleTypeDef returns [EObject current=null] : iv_ruleTypeDef= ruleTypeDef EOF ;
      public final EObject entryRuleTypeDef() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleTypeDef = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13598:2: (iv_ruleTypeDef= ruleTypeDef EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13599:2: iv_ruleTypeDef= ruleTypeDef EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getTypeDefRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleTypeDef_in_entryRuleTypeDef29038);
              iv_ruleTypeDef=ruleTypeDef();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleTypeDef; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleTypeDef29048); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleTypeDef"
  
  
      // $ANTLR start "ruleTypeDef"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13606:1: ruleTypeDef returns [EObject current=null] : ( ( (lv_name_0_0= ruleLocalName ) ) otherlv_1= 'type' ( (lv_type_2_0= ruleNonVoidType ) ) ) ;
      public final EObject ruleTypeDef() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          AntlrDatatypeRuleToken lv_name_0_0 = null;
  
          EObject lv_type_2_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13609:28: ( ( ( (lv_name_0_0= ruleLocalName ) ) otherlv_1= 'type' ( (lv_type_2_0= ruleNonVoidType ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13610:1: ( ( (lv_name_0_0= ruleLocalName ) ) otherlv_1= 'type' ( (lv_type_2_0= ruleNonVoidType ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13610:1: ( ( (lv_name_0_0= ruleLocalName ) ) otherlv_1= 'type' ( (lv_type_2_0= ruleNonVoidType ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13610:2: ( (lv_name_0_0= ruleLocalName ) ) otherlv_1= 'type' ( (lv_type_2_0= ruleNonVoidType ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13610:2: ( (lv_name_0_0= ruleLocalName ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13611:1: (lv_name_0_0= ruleLocalName )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13611:1: (lv_name_0_0= ruleLocalName )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13612:3: lv_name_0_0= ruleLocalName
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getTypeDefAccess().getNameLocalNameParserRuleCall_0_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleLocalName_in_ruleTypeDef29094);
              lv_name_0_0=ruleLocalName();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getTypeDefRule());
                	        }
                       		set(
                       			current, 
                       			"name",
                        		lv_name_0_0, 
                        		"LocalName");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_1=(Token)match(input,215,FollowSets002.FOLLOW_215_in_ruleTypeDef29106); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_1, grammarAccess.getTypeDefAccess().getTypeKeyword_1());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13632:1: ( (lv_type_2_0= ruleNonVoidType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13633:1: (lv_type_2_0= ruleNonVoidType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13633:1: (lv_type_2_0= ruleNonVoidType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13634:3: lv_type_2_0= ruleNonVoidType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getTypeDefAccess().getTypeNonVoidTypeParserRuleCall_2_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleNonVoidType_in_ruleTypeDef29127);
              lv_type_2_0=ruleNonVoidType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getTypeDefRule());
                	        }
                       		set(
                       			current, 
                       			"type",
                        		lv_type_2_0, 
                        		"NonVoidType");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleTypeDef"
  
  
      // $ANTLR start "entryRuleIntType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13660:1: entryRuleIntType returns [EObject current=null] : iv_ruleIntType= ruleIntType EOF ;
      public final EObject entryRuleIntType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleIntType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13661:2: (iv_ruleIntType= ruleIntType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13662:2: iv_ruleIntType= ruleIntType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getIntTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleIntType_in_entryRuleIntType29165);
              iv_ruleIntType=ruleIntType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleIntType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleIntType29175); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleIntType"
  
  
      // $ANTLR start "ruleIntType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13669:1: ruleIntType returns [EObject current=null] : (this_INT_TYPE_0= RULE_INT_TYPE () ) ;
      public final EObject ruleIntType() throws RecognitionException {
          EObject current = null;
  
          Token this_INT_TYPE_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13672:28: ( (this_INT_TYPE_0= RULE_INT_TYPE () ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13673:1: (this_INT_TYPE_0= RULE_INT_TYPE () )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13673:1: (this_INT_TYPE_0= RULE_INT_TYPE () )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13673:2: this_INT_TYPE_0= RULE_INT_TYPE ()
              {
              this_INT_TYPE_0=(Token)match(input,RULE_INT_TYPE,FollowSets002.FOLLOW_RULE_INT_TYPE_in_ruleIntType29211); if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 
                    newLeafNode(this_INT_TYPE_0, grammarAccess.getIntTypeAccess().getINT_TYPETerminalRuleCall_0()); 
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13677:1: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13678:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getIntTypeAccess().getIntTypeAction_1(),
                            current);
                    
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleIntType"
  
  
      // $ANTLR start "entryRuleOpaqueType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13691:1: entryRuleOpaqueType returns [EObject current=null] : iv_ruleOpaqueType= ruleOpaqueType EOF ;
      public final EObject entryRuleOpaqueType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleOpaqueType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13692:2: (iv_ruleOpaqueType= ruleOpaqueType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13693:2: iv_ruleOpaqueType= ruleOpaqueType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getOpaqueTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleOpaqueType_in_entryRuleOpaqueType29255);
              iv_ruleOpaqueType=ruleOpaqueType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleOpaqueType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleOpaqueType29265); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleOpaqueType"
  
  
      // $ANTLR start "ruleOpaqueType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13700:1: ruleOpaqueType returns [EObject current=null] : (otherlv_0= 'opaque' () ) ;
      public final EObject ruleOpaqueType() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13703:28: ( (otherlv_0= 'opaque' () ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13704:1: (otherlv_0= 'opaque' () )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13704:1: (otherlv_0= 'opaque' () )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13704:3: otherlv_0= 'opaque' ()
              {
              otherlv_0=(Token)match(input,216,FollowSets002.FOLLOW_216_in_ruleOpaqueType29302); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getOpaqueTypeAccess().getOpaqueKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13708:1: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13709:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getOpaqueTypeAccess().getOpaqueTypeAction_1(),
                            current);
                    
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleOpaqueType"
  
  
      // $ANTLR start "entryRuleStructType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13722:1: entryRuleStructType returns [EObject current=null] : iv_ruleStructType= ruleStructType EOF ;
      public final EObject entryRuleStructType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleStructType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13723:2: (iv_ruleStructType= ruleStructType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13724:2: iv_ruleStructType= ruleStructType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getStructTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleStructType_in_entryRuleStructType29347);
              iv_ruleStructType=ruleStructType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleStructType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleStructType29357); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleStructType"
  
  
      // $ANTLR start "ruleStructType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13731:1: ruleStructType returns [EObject current=null] : ( () ( (otherlv_1= '{' ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )* )? otherlv_5= '}' ) | ( ( (lv_packed_6_0= '<' ) ) otherlv_7= '{' ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )* )? otherlv_11= '}' otherlv_12= '>' ) ) ) ;
      public final EObject ruleStructType() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_1=null;
          Token otherlv_3=null;
          Token otherlv_5=null;
          Token lv_packed_6_0=null;
          Token otherlv_7=null;
          Token otherlv_9=null;
          Token otherlv_11=null;
          Token otherlv_12=null;
          EObject lv_types_2_0 = null;
  
          EObject lv_types_4_0 = null;
  
          EObject lv_types_8_0 = null;
  
          EObject lv_types_10_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13734:28: ( ( () ( (otherlv_1= '{' ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )* )? otherlv_5= '}' ) | ( ( (lv_packed_6_0= '<' ) ) otherlv_7= '{' ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )* )? otherlv_11= '}' otherlv_12= '>' ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13735:1: ( () ( (otherlv_1= '{' ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )* )? otherlv_5= '}' ) | ( ( (lv_packed_6_0= '<' ) ) otherlv_7= '{' ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )* )? otherlv_11= '}' otherlv_12= '>' ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13735:1: ( () ( (otherlv_1= '{' ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )* )? otherlv_5= '}' ) | ( ( (lv_packed_6_0= '<' ) ) otherlv_7= '{' ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )* )? otherlv_11= '}' otherlv_12= '>' ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13735:2: () ( (otherlv_1= '{' ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )* )? otherlv_5= '}' ) | ( ( (lv_packed_6_0= '<' ) ) otherlv_7= '{' ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )* )? otherlv_11= '}' otherlv_12= '>' ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13735:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13736:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getStructTypeAccess().getStructTypeAction_0(),
                            current);
                    
              }
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13741:2: ( (otherlv_1= '{' ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )* )? otherlv_5= '}' ) | ( ( (lv_packed_6_0= '<' ) ) otherlv_7= '{' ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )* )? otherlv_11= '}' otherlv_12= '>' ) )
              int alt179=2;
              int LA179_0 = input.LA(1);
  
              if ( (LA179_0==26) ) {
                  alt179=1;
              }
              else if ( (LA179_0==76) ) {
                  alt179=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 179, 0, input);
  
                  throw nvae;
              }
              switch (alt179) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13741:3: (otherlv_1= '{' ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )* )? otherlv_5= '}' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13741:3: (otherlv_1= '{' ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )* )? otherlv_5= '}' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13741:5: otherlv_1= '{' ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )* )? otherlv_5= '}'
                      {
                      otherlv_1=(Token)match(input,26,FollowSets002.FOLLOW_26_in_ruleStructType29405); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getStructTypeAccess().getLeftCurlyBracketKeyword_1_0_0());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13745:1: ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )* )?
                      int alt176=2;
                      int LA176_0 = input.LA(1);
  
                      if ( (LA176_0==RULE_LOCAL_ID||LA176_0==RULE_INT_TYPE||LA176_0==26||LA176_0==28||LA176_0==76||LA176_0==78||LA176_0==123||LA176_0==216||(LA176_0>=218 && LA176_0<=224)) ) {
                          alt176=1;
                      }
                      switch (alt176) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13745:2: ( (lv_types_2_0= ruleType ) ) (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )*
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13745:2: ( (lv_types_2_0= ruleType ) )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13746:1: (lv_types_2_0= ruleType )
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13746:1: (lv_types_2_0= ruleType )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13747:3: lv_types_2_0= ruleType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getStructTypeAccess().getTypesTypeParserRuleCall_1_0_1_0_0()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleType_in_ruleStructType29427);
                              lv_types_2_0=ruleType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getStructTypeRule());
                                	        }
                                       		add(
                                       			current, 
                                       			"types",
                                        		lv_types_2_0, 
                                        		"Type");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
  
  
                              }
  
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13763:2: (otherlv_3= ',' ( (lv_types_4_0= ruleType ) ) )*
                              loop175:
                              do {
                                  int alt175=2;
                                  int LA175_0 = input.LA(1);
  
                                  if ( (LA175_0==38) ) {
                                      alt175=1;
                                  }
  
  
                                  switch (alt175) {
                              	case 1 :
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13763:4: otherlv_3= ',' ( (lv_types_4_0= ruleType ) )
                              	    {
                              	    otherlv_3=(Token)match(input,38,FollowSets002.FOLLOW_38_in_ruleStructType29440); if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	          	newLeafNode(otherlv_3, grammarAccess.getStructTypeAccess().getCommaKeyword_1_0_1_1_0());
                              	          
                              	    }
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13767:1: ( (lv_types_4_0= ruleType ) )
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13768:1: (lv_types_4_0= ruleType )
                              	    {
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13768:1: (lv_types_4_0= ruleType )
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13769:3: lv_types_4_0= ruleType
                              	    {
                              	    if ( state.backtracking==0 ) {
                              	       
                              	      	        newCompositeNode(grammarAccess.getStructTypeAccess().getTypesTypeParserRuleCall_1_0_1_1_1_0()); 
                              	      	    
                              	    }
                              	    pushFollow(FollowSets002.FOLLOW_ruleType_in_ruleStructType29461);
                              	    lv_types_4_0=ruleType();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      	        if (current==null) {
                              	      	            current = createModelElementForParent(grammarAccess.getStructTypeRule());
                              	      	        }
                              	             		add(
                              	             			current, 
                              	             			"types",
                              	              		lv_types_4_0, 
                              	              		"Type");
                              	      	        afterParserOrEnumRuleCall();
                              	      	    
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop175;
                                  }
                              } while (true);
  
  
                              }
                              break;
  
                      }
  
                      otherlv_5=(Token)match(input,27,FollowSets002.FOLLOW_27_in_ruleStructType29477); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_5, grammarAccess.getStructTypeAccess().getRightCurlyBracketKeyword_1_0_2());
                            
                      }
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13790:6: ( ( (lv_packed_6_0= '<' ) ) otherlv_7= '{' ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )* )? otherlv_11= '}' otherlv_12= '>' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13790:6: ( ( (lv_packed_6_0= '<' ) ) otherlv_7= '{' ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )* )? otherlv_11= '}' otherlv_12= '>' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13790:7: ( (lv_packed_6_0= '<' ) ) otherlv_7= '{' ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )* )? otherlv_11= '}' otherlv_12= '>'
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13790:7: ( (lv_packed_6_0= '<' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13791:1: (lv_packed_6_0= '<' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13791:1: (lv_packed_6_0= '<' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13792:3: lv_packed_6_0= '<'
                      {
                      lv_packed_6_0=(Token)match(input,76,FollowSets002.FOLLOW_76_in_ruleStructType29503); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_packed_6_0, grammarAccess.getStructTypeAccess().getPackedLessThanSignKeyword_1_1_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getStructTypeRule());
                        	        }
                               		setWithLastConsumed(current, "packed", lv_packed_6_0, "<");
                        	    
                      }
  
                      }
  
  
                      }
  
                      otherlv_7=(Token)match(input,26,FollowSets002.FOLLOW_26_in_ruleStructType29528); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_7, grammarAccess.getStructTypeAccess().getLeftCurlyBracketKeyword_1_1_1());
                            
                      }
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13809:1: ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )* )?
                      int alt178=2;
                      int LA178_0 = input.LA(1);
  
                      if ( (LA178_0==RULE_LOCAL_ID||LA178_0==RULE_INT_TYPE||LA178_0==26||LA178_0==28||LA178_0==76||LA178_0==78||LA178_0==123||LA178_0==216||(LA178_0>=218 && LA178_0<=224)) ) {
                          alt178=1;
                      }
                      switch (alt178) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13809:2: ( (lv_types_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )*
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13809:2: ( (lv_types_8_0= ruleType ) )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13810:1: (lv_types_8_0= ruleType )
                              {
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13810:1: (lv_types_8_0= ruleType )
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13811:3: lv_types_8_0= ruleType
                              {
                              if ( state.backtracking==0 ) {
                                 
                                	        newCompositeNode(grammarAccess.getStructTypeAccess().getTypesTypeParserRuleCall_1_1_2_0_0()); 
                                	    
                              }
                              pushFollow(FollowSets002.FOLLOW_ruleType_in_ruleStructType29550);
                              lv_types_8_0=ruleType();
  
                              state._fsp--;
                              if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElementForParent(grammarAccess.getStructTypeRule());
                                	        }
                                       		add(
                                       			current, 
                                       			"types",
                                        		lv_types_8_0, 
                                        		"Type");
                                	        afterParserOrEnumRuleCall();
                                	    
                              }
  
                              }
  
  
                              }
  
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13827:2: (otherlv_9= ',' ( (lv_types_10_0= ruleType ) ) )*
                              loop177:
                              do {
                                  int alt177=2;
                                  int LA177_0 = input.LA(1);
  
                                  if ( (LA177_0==38) ) {
                                      alt177=1;
                                  }
  
  
                                  switch (alt177) {
                              	case 1 :
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13827:4: otherlv_9= ',' ( (lv_types_10_0= ruleType ) )
                              	    {
                              	    otherlv_9=(Token)match(input,38,FollowSets002.FOLLOW_38_in_ruleStructType29563); if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	          	newLeafNode(otherlv_9, grammarAccess.getStructTypeAccess().getCommaKeyword_1_1_2_1_0());
                              	          
                              	    }
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13831:1: ( (lv_types_10_0= ruleType ) )
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13832:1: (lv_types_10_0= ruleType )
                              	    {
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13832:1: (lv_types_10_0= ruleType )
                              	    // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13833:3: lv_types_10_0= ruleType
                              	    {
                              	    if ( state.backtracking==0 ) {
                              	       
                              	      	        newCompositeNode(grammarAccess.getStructTypeAccess().getTypesTypeParserRuleCall_1_1_2_1_1_0()); 
                              	      	    
                              	    }
                              	    pushFollow(FollowSets002.FOLLOW_ruleType_in_ruleStructType29584);
                              	    lv_types_10_0=ruleType();
  
                              	    state._fsp--;
                              	    if (state.failed) return current;
                              	    if ( state.backtracking==0 ) {
  
                              	      	        if (current==null) {
                              	      	            current = createModelElementForParent(grammarAccess.getStructTypeRule());
                              	      	        }
                              	             		add(
                              	             			current, 
                              	             			"types",
                              	              		lv_types_10_0, 
                              	              		"Type");
                              	      	        afterParserOrEnumRuleCall();
                              	      	    
                              	    }
  
                              	    }
  
  
                              	    }
  
  
                              	    }
                              	    break;
  
                              	default :
                              	    break loop177;
                                  }
                              } while (true);
  
  
                              }
                              break;
  
                      }
  
                      otherlv_11=(Token)match(input,27,FollowSets002.FOLLOW_27_in_ruleStructType29600); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_11, grammarAccess.getStructTypeAccess().getRightCurlyBracketKeyword_1_1_3());
                            
                      }
                      otherlv_12=(Token)match(input,77,FollowSets002.FOLLOW_77_in_ruleStructType29612); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_12, grammarAccess.getStructTypeAccess().getGreaterThanSignKeyword_1_1_4());
                            
                      }
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleStructType"
  
  
      // $ANTLR start "entryRuleVectorType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13865:1: entryRuleVectorType returns [EObject current=null] : iv_ruleVectorType= ruleVectorType EOF ;
      public final EObject entryRuleVectorType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleVectorType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13866:2: (iv_ruleVectorType= ruleVectorType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13867:2: iv_ruleVectorType= ruleVectorType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getVectorTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleVectorType_in_entryRuleVectorType29650);
              iv_ruleVectorType=ruleVectorType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleVectorType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleVectorType29660); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleVectorType"
  
  
      // $ANTLR start "ruleVectorType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13874:1: ruleVectorType returns [EObject current=null] : (otherlv_0= '<' ( (lv_size_1_0= RULE_INTEGER ) ) otherlv_2= 'x' ( (lv_elemType_3_0= ruleType ) ) otherlv_4= '>' ) ;
      public final EObject ruleVectorType() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token lv_size_1_0=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          EObject lv_elemType_3_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13877:28: ( (otherlv_0= '<' ( (lv_size_1_0= RULE_INTEGER ) ) otherlv_2= 'x' ( (lv_elemType_3_0= ruleType ) ) otherlv_4= '>' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13878:1: (otherlv_0= '<' ( (lv_size_1_0= RULE_INTEGER ) ) otherlv_2= 'x' ( (lv_elemType_3_0= ruleType ) ) otherlv_4= '>' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13878:1: (otherlv_0= '<' ( (lv_size_1_0= RULE_INTEGER ) ) otherlv_2= 'x' ( (lv_elemType_3_0= ruleType ) ) otherlv_4= '>' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13878:3: otherlv_0= '<' ( (lv_size_1_0= RULE_INTEGER ) ) otherlv_2= 'x' ( (lv_elemType_3_0= ruleType ) ) otherlv_4= '>'
              {
              otherlv_0=(Token)match(input,76,FollowSets002.FOLLOW_76_in_ruleVectorType29697); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getVectorTypeAccess().getLessThanSignKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13882:1: ( (lv_size_1_0= RULE_INTEGER ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13883:1: (lv_size_1_0= RULE_INTEGER )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13883:1: (lv_size_1_0= RULE_INTEGER )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13884:3: lv_size_1_0= RULE_INTEGER
              {
              lv_size_1_0=(Token)match(input,RULE_INTEGER,FollowSets002.FOLLOW_RULE_INTEGER_in_ruleVectorType29714); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_size_1_0, grammarAccess.getVectorTypeAccess().getSizeINTEGERTerminalRuleCall_1_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getVectorTypeRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"size",
                        		lv_size_1_0, 
                        		"INTEGER");
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,217,FollowSets002.FOLLOW_217_in_ruleVectorType29731); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getVectorTypeAccess().getXKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13904:1: ( (lv_elemType_3_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13905:1: (lv_elemType_3_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13905:1: (lv_elemType_3_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13906:3: lv_elemType_3_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getVectorTypeAccess().getElemTypeTypeParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleType_in_ruleVectorType29752);
              lv_elemType_3_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getVectorTypeRule());
                	        }
                       		set(
                       			current, 
                       			"elemType",
                        		lv_elemType_3_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,77,FollowSets002.FOLLOW_77_in_ruleVectorType29764); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getVectorTypeAccess().getGreaterThanSignKeyword_4());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleVectorType"
  
  
      // $ANTLR start "entryRuleArrayType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13934:1: entryRuleArrayType returns [EObject current=null] : iv_ruleArrayType= ruleArrayType EOF ;
      public final EObject entryRuleArrayType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleArrayType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13935:2: (iv_ruleArrayType= ruleArrayType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13936:2: iv_ruleArrayType= ruleArrayType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getArrayTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleArrayType_in_entryRuleArrayType29800);
              iv_ruleArrayType=ruleArrayType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleArrayType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleArrayType29810); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleArrayType"
  
  
      // $ANTLR start "ruleArrayType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13943:1: ruleArrayType returns [EObject current=null] : (otherlv_0= '[' ( (lv_size_1_0= RULE_INTEGER ) ) otherlv_2= 'x' ( (lv_elemType_3_0= ruleType ) ) otherlv_4= ']' ) ;
      public final EObject ruleArrayType() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token lv_size_1_0=null;
          Token otherlv_2=null;
          Token otherlv_4=null;
          EObject lv_elemType_3_0 = null;
  
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13946:28: ( (otherlv_0= '[' ( (lv_size_1_0= RULE_INTEGER ) ) otherlv_2= 'x' ( (lv_elemType_3_0= ruleType ) ) otherlv_4= ']' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13947:1: (otherlv_0= '[' ( (lv_size_1_0= RULE_INTEGER ) ) otherlv_2= 'x' ( (lv_elemType_3_0= ruleType ) ) otherlv_4= ']' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13947:1: (otherlv_0= '[' ( (lv_size_1_0= RULE_INTEGER ) ) otherlv_2= 'x' ( (lv_elemType_3_0= ruleType ) ) otherlv_4= ']' )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13947:3: otherlv_0= '[' ( (lv_size_1_0= RULE_INTEGER ) ) otherlv_2= 'x' ( (lv_elemType_3_0= ruleType ) ) otherlv_4= ']'
              {
              otherlv_0=(Token)match(input,78,FollowSets002.FOLLOW_78_in_ruleArrayType29847); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getArrayTypeAccess().getLeftSquareBracketKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13951:1: ( (lv_size_1_0= RULE_INTEGER ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13952:1: (lv_size_1_0= RULE_INTEGER )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13952:1: (lv_size_1_0= RULE_INTEGER )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13953:3: lv_size_1_0= RULE_INTEGER
              {
              lv_size_1_0=(Token)match(input,RULE_INTEGER,FollowSets002.FOLLOW_RULE_INTEGER_in_ruleArrayType29864); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                			newLeafNode(lv_size_1_0, grammarAccess.getArrayTypeAccess().getSizeINTEGERTerminalRuleCall_1_0()); 
                		
              }
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElement(grammarAccess.getArrayTypeRule());
                	        }
                       		setWithLastConsumed(
                       			current, 
                       			"size",
                        		lv_size_1_0, 
                        		"INTEGER");
                	    
              }
  
              }
  
  
              }
  
              otherlv_2=(Token)match(input,217,FollowSets002.FOLLOW_217_in_ruleArrayType29881); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_2, grammarAccess.getArrayTypeAccess().getXKeyword_2());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13973:1: ( (lv_elemType_3_0= ruleType ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13974:1: (lv_elemType_3_0= ruleType )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13974:1: (lv_elemType_3_0= ruleType )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:13975:3: lv_elemType_3_0= ruleType
              {
              if ( state.backtracking==0 ) {
                 
                	        newCompositeNode(grammarAccess.getArrayTypeAccess().getElemTypeTypeParserRuleCall_3_0()); 
                	    
              }
              pushFollow(FollowSets002.FOLLOW_ruleType_in_ruleArrayType29902);
              lv_elemType_3_0=ruleType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                	        if (current==null) {
                	            current = createModelElementForParent(grammarAccess.getArrayTypeRule());
                	        }
                       		set(
                       			current, 
                       			"elemType",
                        		lv_elemType_3_0, 
                        		"Type");
                	        afterParserOrEnumRuleCall();
                	    
              }
  
              }
  
  
              }
  
              otherlv_4=(Token)match(input,79,FollowSets002.FOLLOW_79_in_ruleArrayType29914); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_4, grammarAccess.getArrayTypeAccess().getRightSquareBracketKeyword_4());
                    
              }
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleArrayType"
  
  
      // $ANTLR start "entryRuleX86mmxType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14003:1: entryRuleX86mmxType returns [EObject current=null] : iv_ruleX86mmxType= ruleX86mmxType EOF ;
      public final EObject entryRuleX86mmxType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleX86mmxType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14004:2: (iv_ruleX86mmxType= ruleX86mmxType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14005:2: iv_ruleX86mmxType= ruleX86mmxType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getX86mmxTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleX86mmxType_in_entryRuleX86mmxType29950);
              iv_ruleX86mmxType=ruleX86mmxType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleX86mmxType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleX86mmxType29960); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleX86mmxType"
  
  
      // $ANTLR start "ruleX86mmxType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14012:1: ruleX86mmxType returns [EObject current=null] : (otherlv_0= 'x86_mmx' () ) ;
      public final EObject ruleX86mmxType() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14015:28: ( (otherlv_0= 'x86_mmx' () ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14016:1: (otherlv_0= 'x86_mmx' () )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14016:1: (otherlv_0= 'x86_mmx' () )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14016:3: otherlv_0= 'x86_mmx' ()
              {
              otherlv_0=(Token)match(input,218,FollowSets002.FOLLOW_218_in_ruleX86mmxType29997); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getX86mmxTypeAccess().getX86_mmxKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14020:1: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14021:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getX86mmxTypeAccess().getX86mmxTypeAction_1(),
                            current);
                    
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleX86mmxType"
  
  
      // $ANTLR start "entryRuleVoidType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14034:1: entryRuleVoidType returns [EObject current=null] : iv_ruleVoidType= ruleVoidType EOF ;
      public final EObject entryRuleVoidType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleVoidType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14035:2: (iv_ruleVoidType= ruleVoidType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14036:2: iv_ruleVoidType= ruleVoidType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getVoidTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleVoidType_in_entryRuleVoidType30042);
              iv_ruleVoidType=ruleVoidType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleVoidType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleVoidType30052); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleVoidType"
  
  
      // $ANTLR start "ruleVoidType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14043:1: ruleVoidType returns [EObject current=null] : (otherlv_0= 'void' () ) ;
      public final EObject ruleVoidType() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14046:28: ( (otherlv_0= 'void' () ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14047:1: (otherlv_0= 'void' () )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14047:1: (otherlv_0= 'void' () )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14047:3: otherlv_0= 'void' ()
              {
              otherlv_0=(Token)match(input,123,FollowSets002.FOLLOW_123_in_ruleVoidType30089); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getVoidTypeAccess().getVoidKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14051:1: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14052:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getVoidTypeAccess().getVoidTypeAction_1(),
                            current);
                    
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleVoidType"
  
  
      // $ANTLR start "entryRuleMetadataType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14065:1: entryRuleMetadataType returns [EObject current=null] : iv_ruleMetadataType= ruleMetadataType EOF ;
      public final EObject entryRuleMetadataType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleMetadataType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14066:2: (iv_ruleMetadataType= ruleMetadataType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14067:2: iv_ruleMetadataType= ruleMetadataType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getMetadataTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleMetadataType_in_entryRuleMetadataType30134);
              iv_ruleMetadataType=ruleMetadataType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleMetadataType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleMetadataType30144); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleMetadataType"
  
  
      // $ANTLR start "ruleMetadataType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14074:1: ruleMetadataType returns [EObject current=null] : (otherlv_0= 'metadata' () ) ;
      public final EObject ruleMetadataType() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14077:28: ( (otherlv_0= 'metadata' () ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14078:1: (otherlv_0= 'metadata' () )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14078:1: (otherlv_0= 'metadata' () )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14078:3: otherlv_0= 'metadata' ()
              {
              otherlv_0=(Token)match(input,28,FollowSets002.FOLLOW_28_in_ruleMetadataType30181); if (state.failed) return current;
              if ( state.backtracking==0 ) {
  
                    	newLeafNode(otherlv_0, grammarAccess.getMetadataTypeAccess().getMetadataKeyword_0());
                    
              }
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14082:1: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14083:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getMetadataTypeAccess().getMetadataTypeAction_1(),
                            current);
                    
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleMetadataType"
  
  
      // $ANTLR start "entryRuleFloatingType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14096:1: entryRuleFloatingType returns [EObject current=null] : iv_ruleFloatingType= ruleFloatingType EOF ;
      public final EObject entryRuleFloatingType() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleFloatingType = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14097:2: (iv_ruleFloatingType= ruleFloatingType EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14098:2: iv_ruleFloatingType= ruleFloatingType EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getFloatingTypeRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleFloatingType_in_entryRuleFloatingType30226);
              iv_ruleFloatingType=ruleFloatingType();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleFloatingType; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleFloatingType30236); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleFloatingType"
  
  
      // $ANTLR start "ruleFloatingType"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14105:1: ruleFloatingType returns [EObject current=null] : ( (otherlv_0= 'half' | otherlv_1= 'float' | otherlv_2= 'double' | otherlv_3= 'fp128' | otherlv_4= 'x86_fp80' | otherlv_5= 'ppc_fp128' ) () ) ;
      public final EObject ruleFloatingType() throws RecognitionException {
          EObject current = null;
  
          Token otherlv_0=null;
          Token otherlv_1=null;
          Token otherlv_2=null;
          Token otherlv_3=null;
          Token otherlv_4=null;
          Token otherlv_5=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14108:28: ( ( (otherlv_0= 'half' | otherlv_1= 'float' | otherlv_2= 'double' | otherlv_3= 'fp128' | otherlv_4= 'x86_fp80' | otherlv_5= 'ppc_fp128' ) () ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14109:1: ( (otherlv_0= 'half' | otherlv_1= 'float' | otherlv_2= 'double' | otherlv_3= 'fp128' | otherlv_4= 'x86_fp80' | otherlv_5= 'ppc_fp128' ) () )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14109:1: ( (otherlv_0= 'half' | otherlv_1= 'float' | otherlv_2= 'double' | otherlv_3= 'fp128' | otherlv_4= 'x86_fp80' | otherlv_5= 'ppc_fp128' ) () )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14109:2: (otherlv_0= 'half' | otherlv_1= 'float' | otherlv_2= 'double' | otherlv_3= 'fp128' | otherlv_4= 'x86_fp80' | otherlv_5= 'ppc_fp128' ) ()
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14109:2: (otherlv_0= 'half' | otherlv_1= 'float' | otherlv_2= 'double' | otherlv_3= 'fp128' | otherlv_4= 'x86_fp80' | otherlv_5= 'ppc_fp128' )
              int alt180=6;
              switch ( input.LA(1) ) {
              case 219:
                  {
                  alt180=1;
                  }
                  break;
              case 220:
                  {
                  alt180=2;
                  }
                  break;
              case 221:
                  {
                  alt180=3;
                  }
                  break;
              case 222:
                  {
                  alt180=4;
                  }
                  break;
              case 223:
                  {
                  alt180=5;
                  }
                  break;
              case 224:
                  {
                  alt180=6;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 180, 0, input);
  
                  throw nvae;
              }
  
              switch (alt180) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14109:4: otherlv_0= 'half'
                      {
                      otherlv_0=(Token)match(input,219,FollowSets002.FOLLOW_219_in_ruleFloatingType30274); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_0, grammarAccess.getFloatingTypeAccess().getHalfKeyword_0_0());
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14114:7: otherlv_1= 'float'
                      {
                      otherlv_1=(Token)match(input,220,FollowSets002.FOLLOW_220_in_ruleFloatingType30292); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_1, grammarAccess.getFloatingTypeAccess().getFloatKeyword_0_1());
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14119:7: otherlv_2= 'double'
                      {
                      otherlv_2=(Token)match(input,221,FollowSets002.FOLLOW_221_in_ruleFloatingType30310); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_2, grammarAccess.getFloatingTypeAccess().getDoubleKeyword_0_2());
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14124:7: otherlv_3= 'fp128'
                      {
                      otherlv_3=(Token)match(input,222,FollowSets002.FOLLOW_222_in_ruleFloatingType30328); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_3, grammarAccess.getFloatingTypeAccess().getFp128Keyword_0_3());
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14129:7: otherlv_4= 'x86_fp80'
                      {
                      otherlv_4=(Token)match(input,223,FollowSets002.FOLLOW_223_in_ruleFloatingType30346); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_4, grammarAccess.getFloatingTypeAccess().getX86_fp80Keyword_0_4());
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14134:7: otherlv_5= 'ppc_fp128'
                      {
                      otherlv_5=(Token)match(input,224,FollowSets002.FOLLOW_224_in_ruleFloatingType30364); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                            	newLeafNode(otherlv_5, grammarAccess.getFloatingTypeAccess().getPpc_fp128Keyword_0_5());
                            
                      }
  
                      }
                      break;
  
              }
  
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14138:2: ()
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14139:5: 
              {
              if ( state.backtracking==0 ) {
  
                        current = forceCreateModelElement(
                            grammarAccess.getFloatingTypeAccess().getFloatingTypeAction_1(),
                            current);
                    
              }
  
              }
  
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleFloatingType"
  
  
      // $ANTLR start "entryRuleLinkage"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14152:1: entryRuleLinkage returns [String current=null] : iv_ruleLinkage= ruleLinkage EOF ;
      public final String entryRuleLinkage() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleLinkage = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14153:2: (iv_ruleLinkage= ruleLinkage EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14154:2: iv_ruleLinkage= ruleLinkage EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getLinkageRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleLinkage_in_entryRuleLinkage30411);
              iv_ruleLinkage=ruleLinkage();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleLinkage.getText(); 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleLinkage30422); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleLinkage"
  
  
      // $ANTLR start "ruleLinkage"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14161:1: ruleLinkage returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'private' | kw= 'linker_private' | kw= 'linker_private_weak' | kw= 'linker_private_weak_def_auto' | kw= 'internal' | kw= 'available_externally' | kw= 'linkonce' | kw= 'weak' | kw= 'common' | kw= 'appending' | kw= 'extern_weak' | kw= 'linkonce_odr' | kw= 'weak_odr' | kw= 'external' | kw= 'dllimport' | kw= 'dllexport' ) ;
      public final AntlrDatatypeRuleToken ruleLinkage() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14164:28: ( (kw= 'private' | kw= 'linker_private' | kw= 'linker_private_weak' | kw= 'linker_private_weak_def_auto' | kw= 'internal' | kw= 'available_externally' | kw= 'linkonce' | kw= 'weak' | kw= 'common' | kw= 'appending' | kw= 'extern_weak' | kw= 'linkonce_odr' | kw= 'weak_odr' | kw= 'external' | kw= 'dllimport' | kw= 'dllexport' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14165:1: (kw= 'private' | kw= 'linker_private' | kw= 'linker_private_weak' | kw= 'linker_private_weak_def_auto' | kw= 'internal' | kw= 'available_externally' | kw= 'linkonce' | kw= 'weak' | kw= 'common' | kw= 'appending' | kw= 'extern_weak' | kw= 'linkonce_odr' | kw= 'weak_odr' | kw= 'external' | kw= 'dllimport' | kw= 'dllexport' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14165:1: (kw= 'private' | kw= 'linker_private' | kw= 'linker_private_weak' | kw= 'linker_private_weak_def_auto' | kw= 'internal' | kw= 'available_externally' | kw= 'linkonce' | kw= 'weak' | kw= 'common' | kw= 'appending' | kw= 'extern_weak' | kw= 'linkonce_odr' | kw= 'weak_odr' | kw= 'external' | kw= 'dllimport' | kw= 'dllexport' )
              int alt181=16;
              switch ( input.LA(1) ) {
              case 225:
                  {
                  alt181=1;
                  }
                  break;
              case 226:
                  {
                  alt181=2;
                  }
                  break;
              case 227:
                  {
                  alt181=3;
                  }
                  break;
              case 228:
                  {
                  alt181=4;
                  }
                  break;
              case 229:
                  {
                  alt181=5;
                  }
                  break;
              case 230:
                  {
                  alt181=6;
                  }
                  break;
              case 231:
                  {
                  alt181=7;
                  }
                  break;
              case 232:
                  {
                  alt181=8;
                  }
                  break;
              case 233:
                  {
                  alt181=9;
                  }
                  break;
              case 234:
                  {
                  alt181=10;
                  }
                  break;
              case 235:
                  {
                  alt181=11;
                  }
                  break;
              case 236:
                  {
                  alt181=12;
                  }
                  break;
              case 237:
                  {
                  alt181=13;
                  }
                  break;
              case 238:
                  {
                  alt181=14;
                  }
                  break;
              case 239:
                  {
                  alt181=15;
                  }
                  break;
              case 240:
                  {
                  alt181=16;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 181, 0, input);
  
                  throw nvae;
              }
  
              switch (alt181) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14166:2: kw= 'private'
                      {
                      kw=(Token)match(input,225,FollowSets002.FOLLOW_225_in_ruleLinkage30460); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getPrivateKeyword_0()); 
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14173:2: kw= 'linker_private'
                      {
                      kw=(Token)match(input,226,FollowSets002.FOLLOW_226_in_ruleLinkage30479); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getLinker_privateKeyword_1()); 
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14180:2: kw= 'linker_private_weak'
                      {
                      kw=(Token)match(input,227,FollowSets002.FOLLOW_227_in_ruleLinkage30498); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getLinker_private_weakKeyword_2()); 
                            
                      }
  
                      }
                      break;
                  case 4 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14187:2: kw= 'linker_private_weak_def_auto'
                      {
                      kw=(Token)match(input,228,FollowSets002.FOLLOW_228_in_ruleLinkage30517); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getLinker_private_weak_def_autoKeyword_3()); 
                            
                      }
  
                      }
                      break;
                  case 5 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14194:2: kw= 'internal'
                      {
                      kw=(Token)match(input,229,FollowSets002.FOLLOW_229_in_ruleLinkage30536); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getInternalKeyword_4()); 
                            
                      }
  
                      }
                      break;
                  case 6 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14201:2: kw= 'available_externally'
                      {
                      kw=(Token)match(input,230,FollowSets002.FOLLOW_230_in_ruleLinkage30555); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getAvailable_externallyKeyword_5()); 
                            
                      }
  
                      }
                      break;
                  case 7 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14208:2: kw= 'linkonce'
                      {
                      kw=(Token)match(input,231,FollowSets002.FOLLOW_231_in_ruleLinkage30574); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getLinkonceKeyword_6()); 
                            
                      }
  
                      }
                      break;
                  case 8 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14215:2: kw= 'weak'
                      {
                      kw=(Token)match(input,232,FollowSets002.FOLLOW_232_in_ruleLinkage30593); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getWeakKeyword_7()); 
                            
                      }
  
                      }
                      break;
                  case 9 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14222:2: kw= 'common'
                      {
                      kw=(Token)match(input,233,FollowSets002.FOLLOW_233_in_ruleLinkage30612); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getCommonKeyword_8()); 
                            
                      }
  
                      }
                      break;
                  case 10 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14229:2: kw= 'appending'
                      {
                      kw=(Token)match(input,234,FollowSets002.FOLLOW_234_in_ruleLinkage30631); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getAppendingKeyword_9()); 
                            
                      }
  
                      }
                      break;
                  case 11 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14236:2: kw= 'extern_weak'
                      {
                      kw=(Token)match(input,235,FollowSets002.FOLLOW_235_in_ruleLinkage30650); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getExtern_weakKeyword_10()); 
                            
                      }
  
                      }
                      break;
                  case 12 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14243:2: kw= 'linkonce_odr'
                      {
                      kw=(Token)match(input,236,FollowSets002.FOLLOW_236_in_ruleLinkage30669); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getLinkonce_odrKeyword_11()); 
                            
                      }
  
                      }
                      break;
                  case 13 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14250:2: kw= 'weak_odr'
                      {
                      kw=(Token)match(input,237,FollowSets002.FOLLOW_237_in_ruleLinkage30688); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getWeak_odrKeyword_12()); 
                            
                      }
  
                      }
                      break;
                  case 14 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14257:2: kw= 'external'
                      {
                      kw=(Token)match(input,238,FollowSets002.FOLLOW_238_in_ruleLinkage30707); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getExternalKeyword_13()); 
                            
                      }
  
                      }
                      break;
                  case 15 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14264:2: kw= 'dllimport'
                      {
                      kw=(Token)match(input,239,FollowSets002.FOLLOW_239_in_ruleLinkage30726); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getDllimportKeyword_14()); 
                            
                      }
  
                      }
                      break;
                  case 16 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14271:2: kw= 'dllexport'
                      {
                      kw=(Token)match(input,240,FollowSets002.FOLLOW_240_in_ruleLinkage30745); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getLinkageAccess().getDllexportKeyword_15()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleLinkage"
  
  
      // $ANTLR start "entryRuleCConv"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14284:1: entryRuleCConv returns [EObject current=null] : iv_ruleCConv= ruleCConv EOF ;
      public final EObject entryRuleCConv() throws RecognitionException {
          EObject current = null;
  
          EObject iv_ruleCConv = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14285:2: (iv_ruleCConv= ruleCConv EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14286:2: iv_ruleCConv= ruleCConv EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getCConvRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleCConv_in_entryRuleCConv30785);
              iv_ruleCConv=ruleCConv();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleCConv; 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleCConv30795); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleCConv"
  
  
      // $ANTLR start "ruleCConv"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14293:1: ruleCConv returns [EObject current=null] : ( ( ( (lv_val_0_1= 'ccc' | lv_val_0_2= 'fastcc' | lv_val_0_3= 'coldcc' | lv_val_0_4= 'webkit_jscc' | lv_val_0_5= 'anyregcc' | lv_val_0_6= 'preserve_mostcc' | lv_val_0_7= 'preserve_allcc' | lv_val_0_8= 'intel_ocl_bicc' | lv_val_0_9= 'x86_stdcallcc' | lv_val_0_10= 'x86_fastcallcc' | lv_val_0_11= 'x86_thiscallcc' | lv_val_0_12= 'arm_apcscc' | lv_val_0_13= 'arm_aapcscc' | lv_val_0_14= 'arm_aapcs_vfpcc' | lv_val_0_15= 'msp430_intrcc' | lv_val_0_16= 'ptx_kernel' | lv_val_0_17= 'ptx_device' | lv_val_0_18= 'spir_kernel' | lv_val_0_19= 'spir_func' | lv_val_0_20= 'x86_64_sysvcc' | lv_val_0_21= 'x86_64_win64cc' ) ) ) | ( ( (lv_val_1_0= 'cc' ) ) ( (lv_customNumber_2_0= RULE_INTEGER ) ) ) ) ;
      public final EObject ruleCConv() throws RecognitionException {
          EObject current = null;
  
          Token lv_val_0_1=null;
          Token lv_val_0_2=null;
          Token lv_val_0_3=null;
          Token lv_val_0_4=null;
          Token lv_val_0_5=null;
          Token lv_val_0_6=null;
          Token lv_val_0_7=null;
          Token lv_val_0_8=null;
          Token lv_val_0_9=null;
          Token lv_val_0_10=null;
          Token lv_val_0_11=null;
          Token lv_val_0_12=null;
          Token lv_val_0_13=null;
          Token lv_val_0_14=null;
          Token lv_val_0_15=null;
          Token lv_val_0_16=null;
          Token lv_val_0_17=null;
          Token lv_val_0_18=null;
          Token lv_val_0_19=null;
          Token lv_val_0_20=null;
          Token lv_val_0_21=null;
          Token lv_val_1_0=null;
          Token lv_customNumber_2_0=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14296:28: ( ( ( ( (lv_val_0_1= 'ccc' | lv_val_0_2= 'fastcc' | lv_val_0_3= 'coldcc' | lv_val_0_4= 'webkit_jscc' | lv_val_0_5= 'anyregcc' | lv_val_0_6= 'preserve_mostcc' | lv_val_0_7= 'preserve_allcc' | lv_val_0_8= 'intel_ocl_bicc' | lv_val_0_9= 'x86_stdcallcc' | lv_val_0_10= 'x86_fastcallcc' | lv_val_0_11= 'x86_thiscallcc' | lv_val_0_12= 'arm_apcscc' | lv_val_0_13= 'arm_aapcscc' | lv_val_0_14= 'arm_aapcs_vfpcc' | lv_val_0_15= 'msp430_intrcc' | lv_val_0_16= 'ptx_kernel' | lv_val_0_17= 'ptx_device' | lv_val_0_18= 'spir_kernel' | lv_val_0_19= 'spir_func' | lv_val_0_20= 'x86_64_sysvcc' | lv_val_0_21= 'x86_64_win64cc' ) ) ) | ( ( (lv_val_1_0= 'cc' ) ) ( (lv_customNumber_2_0= RULE_INTEGER ) ) ) ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14297:1: ( ( ( (lv_val_0_1= 'ccc' | lv_val_0_2= 'fastcc' | lv_val_0_3= 'coldcc' | lv_val_0_4= 'webkit_jscc' | lv_val_0_5= 'anyregcc' | lv_val_0_6= 'preserve_mostcc' | lv_val_0_7= 'preserve_allcc' | lv_val_0_8= 'intel_ocl_bicc' | lv_val_0_9= 'x86_stdcallcc' | lv_val_0_10= 'x86_fastcallcc' | lv_val_0_11= 'x86_thiscallcc' | lv_val_0_12= 'arm_apcscc' | lv_val_0_13= 'arm_aapcscc' | lv_val_0_14= 'arm_aapcs_vfpcc' | lv_val_0_15= 'msp430_intrcc' | lv_val_0_16= 'ptx_kernel' | lv_val_0_17= 'ptx_device' | lv_val_0_18= 'spir_kernel' | lv_val_0_19= 'spir_func' | lv_val_0_20= 'x86_64_sysvcc' | lv_val_0_21= 'x86_64_win64cc' ) ) ) | ( ( (lv_val_1_0= 'cc' ) ) ( (lv_customNumber_2_0= RULE_INTEGER ) ) ) )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14297:1: ( ( ( (lv_val_0_1= 'ccc' | lv_val_0_2= 'fastcc' | lv_val_0_3= 'coldcc' | lv_val_0_4= 'webkit_jscc' | lv_val_0_5= 'anyregcc' | lv_val_0_6= 'preserve_mostcc' | lv_val_0_7= 'preserve_allcc' | lv_val_0_8= 'intel_ocl_bicc' | lv_val_0_9= 'x86_stdcallcc' | lv_val_0_10= 'x86_fastcallcc' | lv_val_0_11= 'x86_thiscallcc' | lv_val_0_12= 'arm_apcscc' | lv_val_0_13= 'arm_aapcscc' | lv_val_0_14= 'arm_aapcs_vfpcc' | lv_val_0_15= 'msp430_intrcc' | lv_val_0_16= 'ptx_kernel' | lv_val_0_17= 'ptx_device' | lv_val_0_18= 'spir_kernel' | lv_val_0_19= 'spir_func' | lv_val_0_20= 'x86_64_sysvcc' | lv_val_0_21= 'x86_64_win64cc' ) ) ) | ( ( (lv_val_1_0= 'cc' ) ) ( (lv_customNumber_2_0= RULE_INTEGER ) ) ) )
              int alt183=2;
              int LA183_0 = input.LA(1);
  
              if ( ((LA183_0>=241 && LA183_0<=261)) ) {
                  alt183=1;
              }
              else if ( (LA183_0==262) ) {
                  alt183=2;
              }
              else {
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 183, 0, input);
  
                  throw nvae;
              }
              switch (alt183) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14297:2: ( ( (lv_val_0_1= 'ccc' | lv_val_0_2= 'fastcc' | lv_val_0_3= 'coldcc' | lv_val_0_4= 'webkit_jscc' | lv_val_0_5= 'anyregcc' | lv_val_0_6= 'preserve_mostcc' | lv_val_0_7= 'preserve_allcc' | lv_val_0_8= 'intel_ocl_bicc' | lv_val_0_9= 'x86_stdcallcc' | lv_val_0_10= 'x86_fastcallcc' | lv_val_0_11= 'x86_thiscallcc' | lv_val_0_12= 'arm_apcscc' | lv_val_0_13= 'arm_aapcscc' | lv_val_0_14= 'arm_aapcs_vfpcc' | lv_val_0_15= 'msp430_intrcc' | lv_val_0_16= 'ptx_kernel' | lv_val_0_17= 'ptx_device' | lv_val_0_18= 'spir_kernel' | lv_val_0_19= 'spir_func' | lv_val_0_20= 'x86_64_sysvcc' | lv_val_0_21= 'x86_64_win64cc' ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14297:2: ( ( (lv_val_0_1= 'ccc' | lv_val_0_2= 'fastcc' | lv_val_0_3= 'coldcc' | lv_val_0_4= 'webkit_jscc' | lv_val_0_5= 'anyregcc' | lv_val_0_6= 'preserve_mostcc' | lv_val_0_7= 'preserve_allcc' | lv_val_0_8= 'intel_ocl_bicc' | lv_val_0_9= 'x86_stdcallcc' | lv_val_0_10= 'x86_fastcallcc' | lv_val_0_11= 'x86_thiscallcc' | lv_val_0_12= 'arm_apcscc' | lv_val_0_13= 'arm_aapcscc' | lv_val_0_14= 'arm_aapcs_vfpcc' | lv_val_0_15= 'msp430_intrcc' | lv_val_0_16= 'ptx_kernel' | lv_val_0_17= 'ptx_device' | lv_val_0_18= 'spir_kernel' | lv_val_0_19= 'spir_func' | lv_val_0_20= 'x86_64_sysvcc' | lv_val_0_21= 'x86_64_win64cc' ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14298:1: ( (lv_val_0_1= 'ccc' | lv_val_0_2= 'fastcc' | lv_val_0_3= 'coldcc' | lv_val_0_4= 'webkit_jscc' | lv_val_0_5= 'anyregcc' | lv_val_0_6= 'preserve_mostcc' | lv_val_0_7= 'preserve_allcc' | lv_val_0_8= 'intel_ocl_bicc' | lv_val_0_9= 'x86_stdcallcc' | lv_val_0_10= 'x86_fastcallcc' | lv_val_0_11= 'x86_thiscallcc' | lv_val_0_12= 'arm_apcscc' | lv_val_0_13= 'arm_aapcscc' | lv_val_0_14= 'arm_aapcs_vfpcc' | lv_val_0_15= 'msp430_intrcc' | lv_val_0_16= 'ptx_kernel' | lv_val_0_17= 'ptx_device' | lv_val_0_18= 'spir_kernel' | lv_val_0_19= 'spir_func' | lv_val_0_20= 'x86_64_sysvcc' | lv_val_0_21= 'x86_64_win64cc' ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14298:1: ( (lv_val_0_1= 'ccc' | lv_val_0_2= 'fastcc' | lv_val_0_3= 'coldcc' | lv_val_0_4= 'webkit_jscc' | lv_val_0_5= 'anyregcc' | lv_val_0_6= 'preserve_mostcc' | lv_val_0_7= 'preserve_allcc' | lv_val_0_8= 'intel_ocl_bicc' | lv_val_0_9= 'x86_stdcallcc' | lv_val_0_10= 'x86_fastcallcc' | lv_val_0_11= 'x86_thiscallcc' | lv_val_0_12= 'arm_apcscc' | lv_val_0_13= 'arm_aapcscc' | lv_val_0_14= 'arm_aapcs_vfpcc' | lv_val_0_15= 'msp430_intrcc' | lv_val_0_16= 'ptx_kernel' | lv_val_0_17= 'ptx_device' | lv_val_0_18= 'spir_kernel' | lv_val_0_19= 'spir_func' | lv_val_0_20= 'x86_64_sysvcc' | lv_val_0_21= 'x86_64_win64cc' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14299:1: (lv_val_0_1= 'ccc' | lv_val_0_2= 'fastcc' | lv_val_0_3= 'coldcc' | lv_val_0_4= 'webkit_jscc' | lv_val_0_5= 'anyregcc' | lv_val_0_6= 'preserve_mostcc' | lv_val_0_7= 'preserve_allcc' | lv_val_0_8= 'intel_ocl_bicc' | lv_val_0_9= 'x86_stdcallcc' | lv_val_0_10= 'x86_fastcallcc' | lv_val_0_11= 'x86_thiscallcc' | lv_val_0_12= 'arm_apcscc' | lv_val_0_13= 'arm_aapcscc' | lv_val_0_14= 'arm_aapcs_vfpcc' | lv_val_0_15= 'msp430_intrcc' | lv_val_0_16= 'ptx_kernel' | lv_val_0_17= 'ptx_device' | lv_val_0_18= 'spir_kernel' | lv_val_0_19= 'spir_func' | lv_val_0_20= 'x86_64_sysvcc' | lv_val_0_21= 'x86_64_win64cc' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14299:1: (lv_val_0_1= 'ccc' | lv_val_0_2= 'fastcc' | lv_val_0_3= 'coldcc' | lv_val_0_4= 'webkit_jscc' | lv_val_0_5= 'anyregcc' | lv_val_0_6= 'preserve_mostcc' | lv_val_0_7= 'preserve_allcc' | lv_val_0_8= 'intel_ocl_bicc' | lv_val_0_9= 'x86_stdcallcc' | lv_val_0_10= 'x86_fastcallcc' | lv_val_0_11= 'x86_thiscallcc' | lv_val_0_12= 'arm_apcscc' | lv_val_0_13= 'arm_aapcscc' | lv_val_0_14= 'arm_aapcs_vfpcc' | lv_val_0_15= 'msp430_intrcc' | lv_val_0_16= 'ptx_kernel' | lv_val_0_17= 'ptx_device' | lv_val_0_18= 'spir_kernel' | lv_val_0_19= 'spir_func' | lv_val_0_20= 'x86_64_sysvcc' | lv_val_0_21= 'x86_64_win64cc' )
                      int alt182=21;
                      switch ( input.LA(1) ) {
                      case 241:
                          {
                          alt182=1;
                          }
                          break;
                      case 242:
                          {
                          alt182=2;
                          }
                          break;
                      case 243:
                          {
                          alt182=3;
                          }
                          break;
                      case 244:
                          {
                          alt182=4;
                          }
                          break;
                      case 245:
                          {
                          alt182=5;
                          }
                          break;
                      case 246:
                          {
                          alt182=6;
                          }
                          break;
                      case 247:
                          {
                          alt182=7;
                          }
                          break;
                      case 248:
                          {
                          alt182=8;
                          }
                          break;
                      case 249:
                          {
                          alt182=9;
                          }
                          break;
                      case 250:
                          {
                          alt182=10;
                          }
                          break;
                      case 251:
                          {
                          alt182=11;
                          }
                          break;
                      case 252:
                          {
                          alt182=12;
                          }
                          break;
                      case 253:
                          {
                          alt182=13;
                          }
                          break;
                      case 254:
                          {
                          alt182=14;
                          }
                          break;
                      case 255:
                          {
                          alt182=15;
                          }
                          break;
                      case 256:
                          {
                          alt182=16;
                          }
                          break;
                      case 257:
                          {
                          alt182=17;
                          }
                          break;
                      case 258:
                          {
                          alt182=18;
                          }
                          break;
                      case 259:
                          {
                          alt182=19;
                          }
                          break;
                      case 260:
                          {
                          alt182=20;
                          }
                          break;
                      case 261:
                          {
                          alt182=21;
                          }
                          break;
                      default:
                          if (state.backtracking>0) {state.failed=true; return current;}
                          NoViableAltException nvae =
                              new NoViableAltException("", 182, 0, input);
  
                          throw nvae;
                      }
  
                      switch (alt182) {
                          case 1 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14300:3: lv_val_0_1= 'ccc'
                              {
                              lv_val_0_1=(Token)match(input,241,FollowSets002.FOLLOW_241_in_ruleCConv30840); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_1, grammarAccess.getCConvAccess().getValCccKeyword_0_0_0());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_1, null);
                                	    
                              }
  
                              }
                              break;
                          case 2 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14312:8: lv_val_0_2= 'fastcc'
                              {
                              lv_val_0_2=(Token)match(input,242,FollowSets002.FOLLOW_242_in_ruleCConv30869); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_2, grammarAccess.getCConvAccess().getValFastccKeyword_0_0_1());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_2, null);
                                	    
                              }
  
                              }
                              break;
                          case 3 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14324:8: lv_val_0_3= 'coldcc'
                              {
                              lv_val_0_3=(Token)match(input,243,FollowSets002.FOLLOW_243_in_ruleCConv30898); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_3, grammarAccess.getCConvAccess().getValColdccKeyword_0_0_2());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_3, null);
                                	    
                              }
  
                              }
                              break;
                          case 4 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14336:8: lv_val_0_4= 'webkit_jscc'
                              {
                              lv_val_0_4=(Token)match(input,244,FollowSets002.FOLLOW_244_in_ruleCConv30927); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_4, grammarAccess.getCConvAccess().getValWebkit_jsccKeyword_0_0_3());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_4, null);
                                	    
                              }
  
                              }
                              break;
                          case 5 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14348:8: lv_val_0_5= 'anyregcc'
                              {
                              lv_val_0_5=(Token)match(input,245,FollowSets002.FOLLOW_245_in_ruleCConv30956); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_5, grammarAccess.getCConvAccess().getValAnyregccKeyword_0_0_4());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_5, null);
                                	    
                              }
  
                              }
                              break;
                          case 6 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14360:8: lv_val_0_6= 'preserve_mostcc'
                              {
                              lv_val_0_6=(Token)match(input,246,FollowSets002.FOLLOW_246_in_ruleCConv30985); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_6, grammarAccess.getCConvAccess().getValPreserve_mostccKeyword_0_0_5());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_6, null);
                                	    
                              }
  
                              }
                              break;
                          case 7 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14372:8: lv_val_0_7= 'preserve_allcc'
                              {
                              lv_val_0_7=(Token)match(input,247,FollowSets002.FOLLOW_247_in_ruleCConv31014); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_7, grammarAccess.getCConvAccess().getValPreserve_allccKeyword_0_0_6());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_7, null);
                                	    
                              }
  
                              }
                              break;
                          case 8 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14384:8: lv_val_0_8= 'intel_ocl_bicc'
                              {
                              lv_val_0_8=(Token)match(input,248,FollowSets002.FOLLOW_248_in_ruleCConv31043); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_8, grammarAccess.getCConvAccess().getValIntel_ocl_biccKeyword_0_0_7());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_8, null);
                                	    
                              }
  
                              }
                              break;
                          case 9 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14396:8: lv_val_0_9= 'x86_stdcallcc'
                              {
                              lv_val_0_9=(Token)match(input,249,FollowSets002.FOLLOW_249_in_ruleCConv31072); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_9, grammarAccess.getCConvAccess().getValX86_stdcallccKeyword_0_0_8());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_9, null);
                                	    
                              }
  
                              }
                              break;
                          case 10 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14408:8: lv_val_0_10= 'x86_fastcallcc'
                              {
                              lv_val_0_10=(Token)match(input,250,FollowSets002.FOLLOW_250_in_ruleCConv31101); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_10, grammarAccess.getCConvAccess().getValX86_fastcallccKeyword_0_0_9());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_10, null);
                                	    
                              }
  
                              }
                              break;
                          case 11 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14420:8: lv_val_0_11= 'x86_thiscallcc'
                              {
                              lv_val_0_11=(Token)match(input,251,FollowSets002.FOLLOW_251_in_ruleCConv31130); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_11, grammarAccess.getCConvAccess().getValX86_thiscallccKeyword_0_0_10());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_11, null);
                                	    
                              }
  
                              }
                              break;
                          case 12 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14432:8: lv_val_0_12= 'arm_apcscc'
                              {
                              lv_val_0_12=(Token)match(input,252,FollowSets002.FOLLOW_252_in_ruleCConv31159); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_12, grammarAccess.getCConvAccess().getValArm_apcsccKeyword_0_0_11());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_12, null);
                                	    
                              }
  
                              }
                              break;
                          case 13 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14444:8: lv_val_0_13= 'arm_aapcscc'
                              {
                              lv_val_0_13=(Token)match(input,253,FollowSets002.FOLLOW_253_in_ruleCConv31188); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_13, grammarAccess.getCConvAccess().getValArm_aapcsccKeyword_0_0_12());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_13, null);
                                	    
                              }
  
                              }
                              break;
                          case 14 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14456:8: lv_val_0_14= 'arm_aapcs_vfpcc'
                              {
                              lv_val_0_14=(Token)match(input,254,FollowSets002.FOLLOW_254_in_ruleCConv31217); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_14, grammarAccess.getCConvAccess().getValArm_aapcs_vfpccKeyword_0_0_13());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_14, null);
                                	    
                              }
  
                              }
                              break;
                          case 15 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14468:8: lv_val_0_15= 'msp430_intrcc'
                              {
                              lv_val_0_15=(Token)match(input,255,FollowSets002.FOLLOW_255_in_ruleCConv31246); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_15, grammarAccess.getCConvAccess().getValMsp430_intrccKeyword_0_0_14());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_15, null);
                                	    
                              }
  
                              }
                              break;
                          case 16 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14480:8: lv_val_0_16= 'ptx_kernel'
                              {
                              lv_val_0_16=(Token)match(input,256,FollowSets002.FOLLOW_256_in_ruleCConv31275); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_16, grammarAccess.getCConvAccess().getValPtx_kernelKeyword_0_0_15());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_16, null);
                                	    
                              }
  
                              }
                              break;
                          case 17 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14492:8: lv_val_0_17= 'ptx_device'
                              {
                              lv_val_0_17=(Token)match(input,257,FollowSets002.FOLLOW_257_in_ruleCConv31304); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_17, grammarAccess.getCConvAccess().getValPtx_deviceKeyword_0_0_16());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_17, null);
                                	    
                              }
  
                              }
                              break;
                          case 18 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14504:8: lv_val_0_18= 'spir_kernel'
                              {
                              lv_val_0_18=(Token)match(input,258,FollowSets002.FOLLOW_258_in_ruleCConv31333); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_18, grammarAccess.getCConvAccess().getValSpir_kernelKeyword_0_0_17());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_18, null);
                                	    
                              }
  
                              }
                              break;
                          case 19 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14516:8: lv_val_0_19= 'spir_func'
                              {
                              lv_val_0_19=(Token)match(input,259,FollowSets002.FOLLOW_259_in_ruleCConv31362); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_19, grammarAccess.getCConvAccess().getValSpir_funcKeyword_0_0_18());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_19, null);
                                	    
                              }
  
                              }
                              break;
                          case 20 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14528:8: lv_val_0_20= 'x86_64_sysvcc'
                              {
                              lv_val_0_20=(Token)match(input,260,FollowSets002.FOLLOW_260_in_ruleCConv31391); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_20, grammarAccess.getCConvAccess().getValX86_64_sysvccKeyword_0_0_19());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_20, null);
                                	    
                              }
  
                              }
                              break;
                          case 21 :
                              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14540:8: lv_val_0_21= 'x86_64_win64cc'
                              {
                              lv_val_0_21=(Token)match(input,261,FollowSets002.FOLLOW_261_in_ruleCConv31420); if (state.failed) return current;
                              if ( state.backtracking==0 ) {
  
                                        newLeafNode(lv_val_0_21, grammarAccess.getCConvAccess().getValX86_64_win64ccKeyword_0_0_20());
                                    
                              }
                              if ( state.backtracking==0 ) {
  
                                	        if (current==null) {
                                	            current = createModelElement(grammarAccess.getCConvRule());
                                	        }
                                       		setWithLastConsumed(current, "val", lv_val_0_21, null);
                                	    
                              }
  
                              }
                              break;
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14556:6: ( ( (lv_val_1_0= 'cc' ) ) ( (lv_customNumber_2_0= RULE_INTEGER ) ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14556:6: ( ( (lv_val_1_0= 'cc' ) ) ( (lv_customNumber_2_0= RULE_INTEGER ) ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14556:7: ( (lv_val_1_0= 'cc' ) ) ( (lv_customNumber_2_0= RULE_INTEGER ) )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14556:7: ( (lv_val_1_0= 'cc' ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14557:1: (lv_val_1_0= 'cc' )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14557:1: (lv_val_1_0= 'cc' )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14558:3: lv_val_1_0= 'cc'
                      {
                      lv_val_1_0=(Token)match(input,262,FollowSets002.FOLLOW_262_in_ruleCConv31461); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                newLeafNode(lv_val_1_0, grammarAccess.getCConvAccess().getValCcKeyword_1_0_0());
                            
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getCConvRule());
                        	        }
                               		setWithLastConsumed(current, "val", lv_val_1_0, "cc");
                        	    
                      }
  
                      }
  
  
                      }
  
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14571:2: ( (lv_customNumber_2_0= RULE_INTEGER ) )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14572:1: (lv_customNumber_2_0= RULE_INTEGER )
                      {
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14572:1: (lv_customNumber_2_0= RULE_INTEGER )
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14573:3: lv_customNumber_2_0= RULE_INTEGER
                      {
                      lv_customNumber_2_0=(Token)match(input,RULE_INTEGER,FollowSets002.FOLLOW_RULE_INTEGER_in_ruleCConv31491); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                        			newLeafNode(lv_customNumber_2_0, grammarAccess.getCConvAccess().getCustomNumberINTEGERTerminalRuleCall_1_1_0()); 
                        		
                      }
                      if ( state.backtracking==0 ) {
  
                        	        if (current==null) {
                        	            current = createModelElement(grammarAccess.getCConvRule());
                        	        }
                               		setWithLastConsumed(
                               			current, 
                               			"customNumber",
                                		lv_customNumber_2_0, 
                                		"INTEGER");
                        	    
                      }
  
                      }
  
  
                      }
  
  
                      }
  
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleCConv"
  
  
      // $ANTLR start "entryRuleVisibility"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14597:1: entryRuleVisibility returns [String current=null] : iv_ruleVisibility= ruleVisibility EOF ;
      public final String entryRuleVisibility() throws RecognitionException {
          String current = null;
  
          AntlrDatatypeRuleToken iv_ruleVisibility = null;
  
  
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14598:2: (iv_ruleVisibility= ruleVisibility EOF )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14599:2: iv_ruleVisibility= ruleVisibility EOF
              {
              if ( state.backtracking==0 ) {
                 newCompositeNode(grammarAccess.getVisibilityRule()); 
              }
              pushFollow(FollowSets002.FOLLOW_ruleVisibility_in_entryRuleVisibility31534);
              iv_ruleVisibility=ruleVisibility();
  
              state._fsp--;
              if (state.failed) return current;
              if ( state.backtracking==0 ) {
                 current =iv_ruleVisibility.getText(); 
              }
              match(input,EOF,FollowSets002.FOLLOW_EOF_in_entryRuleVisibility31545); if (state.failed) return current;
  
              }
  
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "entryRuleVisibility"
  
  
      // $ANTLR start "ruleVisibility"
      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14606:1: ruleVisibility returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'default' | kw= 'hidden' | kw= 'protected' ) ;
      public final AntlrDatatypeRuleToken ruleVisibility() throws RecognitionException {
          AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
  
          Token kw=null;
  
           enterRule(); 
              
          try {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14609:28: ( (kw= 'default' | kw= 'hidden' | kw= 'protected' ) )
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14610:1: (kw= 'default' | kw= 'hidden' | kw= 'protected' )
              {
              // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14610:1: (kw= 'default' | kw= 'hidden' | kw= 'protected' )
              int alt184=3;
              switch ( input.LA(1) ) {
              case 263:
                  {
                  alt184=1;
                  }
                  break;
              case 264:
                  {
                  alt184=2;
                  }
                  break;
              case 265:
                  {
                  alt184=3;
                  }
                  break;
              default:
                  if (state.backtracking>0) {state.failed=true; return current;}
                  NoViableAltException nvae =
                      new NoViableAltException("", 184, 0, input);
  
                  throw nvae;
              }
  
              switch (alt184) {
                  case 1 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14611:2: kw= 'default'
                      {
                      kw=(Token)match(input,263,FollowSets002.FOLLOW_263_in_ruleVisibility31583); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getVisibilityAccess().getDefaultKeyword_0()); 
                            
                      }
  
                      }
                      break;
                  case 2 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14618:2: kw= 'hidden'
                      {
                      kw=(Token)match(input,264,FollowSets002.FOLLOW_264_in_ruleVisibility31602); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getVisibilityAccess().getHiddenKeyword_1()); 
                            
                      }
  
                      }
                      break;
                  case 3 :
                      // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:14625:2: kw= 'protected'
                      {
                      kw=(Token)match(input,265,FollowSets002.FOLLOW_265_in_ruleVisibility31621); if (state.failed) return current;
                      if ( state.backtracking==0 ) {
  
                                current.merge(kw);
                                newLeafNode(kw, grammarAccess.getVisibilityAccess().getProtectedKeyword_2()); 
                            
                      }
  
                      }
                      break;
  
              }
  
  
              }
  
              if ( state.backtracking==0 ) {
                 leaveRule(); 
              }
          }
           
              catch (RecognitionException re) { 
                  recover(input,re); 
                  appendSkippedTokens();
              } 
          finally {
          }
          return current;
      }
      // $ANTLR end "ruleVisibility"
  
      // $ANTLR start synpred1_InternalLLVM_IR
      public final void synpred1_InternalLLVM_IR_fragment() throws RecognitionException {   
          // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1297:7: ( ruleStructureConstant )
          // ../com.intel.llvm.ireditor/src-gen/com/intel/llvm/ireditor/parser/antlr/internal/InternalLLVM_IR.g:1297:9: ruleStructureConstant
          {
          pushFollow(FollowSets002.FOLLOW_ruleStructureConstant_in_synpred1_InternalLLVM_IR2822);
          ruleStructureConstant();
  
          state._fsp--;
          if (state.failed) return ;
  
          }
      }
      // $ANTLR end synpred1_InternalLLVM_IR
  
      // Delegated rules
  
      public final boolean synpred1_InternalLLVM_IR() {
          state.backtracking++;
          int start = input.mark();
          try {
              synpred1_InternalLLVM_IR_fragment(); // can never throw exception
          } catch (RecognitionException re) {
              System.err.println("impossible: "+re);
          }
          boolean success = !state.failed;
          input.rewind(start);
          state.backtracking--;
          state.failed=false;
          return success;
      }
  
  
      protected DFA9 dfa9 = new DFA9(this);
      protected DFA10 dfa10 = new DFA10(this);
      protected DFA23 dfa23 = new DFA23(this);
      protected DFA65 dfa65 = new DFA65(this);
      protected DFA66 dfa66 = new DFA66(this);
      protected DFA69 dfa69 = new DFA69(this);
      protected DFA77 dfa77 = new DFA77(this);
      protected DFA79 dfa79 = new DFA79(this);
      protected DFA171 dfa171 = new DFA171(this);
      protected DFA173 dfa173 = new DFA173(this);
      static final String DFA9_eotS =
          "\7\uffff";
      static final String DFA9_eofS =
          "\7\uffff";
      static final String DFA9_minS =
          "\1\12\1\22\3\uffff\1\22\1\35";
      static final String DFA9_maxS =
          "\1\u00f0\1\31\3\uffff\1\31\1\u00f0";
      static final String DFA9_acceptS =
          "\2\uffff\1\1\1\2\1\3\2\uffff";
      static final String DFA9_specialS =
          "\7\uffff}>";
      static final String[] DFA9_transitionS = {
              "\1\1\22\uffff\1\4\5\uffff\3\2\53\uffff\1\2\3\uffff\1\2\3\uffff"+
              "\2\3\u0086\uffff\20\2",
              "\1\5\6\uffff\1\6",
              "",
              "",
              "",
              "\1\5\6\uffff\1\6",
              "\1\4\5\uffff\3\2\53\uffff\1\2\3\uffff\1\2\u008b\uffff\20\2"
      };
  
      static final short[] DFA9_eot = DFA.unpackEncodedString(DFA9_eotS);
      static final short[] DFA9_eof = DFA.unpackEncodedString(DFA9_eofS);
      static final char[] DFA9_min = DFA.unpackEncodedStringToUnsignedChars(DFA9_minS);
      static final char[] DFA9_max = DFA.unpackEncodedStringToUnsignedChars(DFA9_maxS);
      static final short[] DFA9_accept = DFA.unpackEncodedString(DFA9_acceptS);
      static final short[] DFA9_special = DFA.unpackEncodedString(DFA9_specialS);
      static final short[][] DFA9_transition;
  
      static {
          int numStates = DFA9_transitionS.length;
          DFA9_transition = new short[numStates][];
          for (int i=0; i<numStates; i++) {
              DFA9_transition[i] = DFA.unpackEncodedString(DFA9_transitionS[i]);
          }
      }
  
      class DFA9 extends DFA {
  
          public DFA9(BaseRecognizer recognizer) {
              this.recognizer = recognizer;
              this.decisionNumber = 9;
              this.eot = DFA9_eot;
              this.eof = DFA9_eof;
              this.min = DFA9_min;
              this.max = DFA9_max;
              this.accept = DFA9_accept;
              this.special = DFA9_special;
              this.transition = DFA9_transition;
          }
          public String getDescription() {
              return "703:1: (this_GlobalVariable_0= ruleGlobalVariable | this_Function_1= ruleFunction | this_Alias_2= ruleAlias )";
          }
      }
      static final String DFA10_eotS =
          "\7\uffff";
      static final String DFA10_eofS =
          "\7\uffff";
      static final String DFA10_minS =
          "\1\11\1\22\3\uffff\1\22\1\52";
      static final String DFA10_maxS =
          "\1\u00c4\1\31\3\uffff\1\31\1\u00c4";
      static final String DFA10_acceptS =
          "\2\uffff\1\1\1\2\1\3\2\uffff";
      static final String DFA10_specialS =
          "\7\uffff}>";
      static final String[] DFA10_transitionS = {
              "\1\1\40\uffff\1\3\1\uffff\14\3\2\uffff\4\3\1\uffff\12\3\67"+
              "\uffff\1\4\13\uffff\2\3\7\uffff\2\3\6\uffff\15\3\24\uffff\1"+
              "\2\2\3\2\uffff\2\3",
              "\1\5\6\uffff\1\6",
              "",
              "",
              "",
              "\1\5\6\uffff\1\6",
              "\1\3\1\uffff\14\3\2\uffff\4\3\1\uffff\12\3\67\uffff\1\4\13"+
              "\uffff\2\3\7\uffff\2\3\6\uffff\15\3\24\uffff\1\2\2\3\2\uffff"+
              "\2\3"
      };
  
      static final short[] DFA10_eot = DFA.unpackEncodedString(DFA10_eotS);
      static final short[] DFA10_eof = DFA.unpackEncodedString(DFA10_eofS);
      static final char[] DFA10_min = DFA.unpackEncodedStringToUnsignedChars(DFA10_minS);
      static final char[] DFA10_max = DFA.unpackEncodedStringToUnsignedChars(DFA10_maxS);
      static final short[] DFA10_accept = DFA.unpackEncodedString(DFA10_acceptS);
      static final short[] DFA10_special = DFA.unpackEncodedString(DFA10_specialS);
      static final short[][] DFA10_transition;
  
      static {
          int numStates = DFA10_transitionS.length;
          DFA10_transition = new short[numStates][];
          for (int i=0; i<numStates; i++) {
              DFA10_transition[i] = DFA.unpackEncodedString(DFA10_transitionS[i]);
          }
      }
  
      class DFA10 extends DFA {
  
          public DFA10(BaseRecognizer recognizer) {
              this.recognizer = recognizer;
              this.decisionNumber = 10;
              this.eot = DFA10_eot;
              this.eof = DFA10_eof;
              this.min = DFA10_min;
              this.max = DFA10_max;
              this.accept = DFA10_accept;
              this.special = DFA10_special;
              this.transition = DFA10_transition;
          }
          public String getDescription() {
              return "757:1: (this_StartingInstruction_0= ruleStartingInstruction | this_NamedMiddleInstruction_1= ruleNamedMiddleInstruction | this_NamedTerminatorInstruction_2= ruleNamedTerminatorInstruction )";
          }
      }
      static final String DFA23_eotS =
          "\71\uffff";
      static final String DFA23_eofS =
          "\71\uffff";
      static final String DFA23_minS =
          "\1\5\7\uffff\1\0\60\uffff";
      static final String DFA23_maxS =
          "\1\u00a9\7\uffff\1\0\60\uffff";
      static final String DFA23_acceptS =
          "\1\uffff\1\1\5\uffff\1\2\1\uffff\1\3\1\5\1\6\1\7\1\10\1\11\1\12"+
          "\47\uffff\1\13\1\4";
      static final String DFA23_specialS =
          "\1\0\7\uffff\1\1\60\uffff}>";
      static final String[] DFA23_transitionS = {
              "\1\1\4\uffff\1\67\5\1\1\14\11\uffff\1\7\17\uffff\1\17\1\uffff"+
              "\14\17\2\uffff\4\17\1\uffff\12\17\1\16\1\15\1\12\1\10\1\uffff"+
              "\1\11\1\uffff\1\13\114\uffff\15\17",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "\1\uffff",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              "",
              ""
      };
  
      static final short[] DFA23_eot = DFA.unpackEncodedString(DFA23_eotS);
      static final short[] DFA23_eof = DFA.unpackEncodedString(DFA23_eofS);
      static final char[] DFA23_min = DFA.unpackEncodedStringToUnsignedChars(DFA23_minS);
      static final char[] DFA23_max = DFA.unpackEncodedStringToUnsignedChars(DFA23_maxS);
      static final short[] DFA23_accept = DFA.unpackEncodedString(DFA23_acceptS);
      static final short[] DFA23_special = DFA.unpackEncodedString(DFA23_specialS);
      static final short[][] DFA23_transition;
  
      static {
          int numStates = DFA23_transitionS.length;
          DFA23_transition = new short[numStates][];
          for (int i=0; i<numStates; i++) {
              DFA23_transition[i] = DFA.unpackEncodedString(DFA23_transitionS[i]);
          }
      }
  
      class DFA23 extends DFA {
  
          public DFA23(BaseRecognizer recognizer) {
              this.recognizer = recognizer;
              this.decisionNumber = 23;
              this.eot = DFA23_eot;
              this.eof = DFA23_eof;
              this.min = DFA23_min;
              this.max = DFA23_max;
              this.accept = DFA23_accept;
              this.special = DFA23_special;
              this.transition = DFA23_transition;
          }
          public String getDescription() {
              return "1287:1: (this_SimpleConstant_0= ruleSimpleConstant | ( ( ruleStructureConstant )=>this_StructureConstant_1= ruleStructureConstant ) | this_ArrayConstant_2= ruleArrayConstant | this_VectorConstant_3= ruleVectorConstant | this_ZeroInitializer_4= ruleZeroInitializer | this_MetadataNode_5= ruleMetadataNode | this_MetadataString_6= ruleMetadataString | this_BlockAddress_7= ruleBlockAddress | this_Undef_8= ruleUndef | this_ConstantExpression_9= ruleConstantExpression | ( (otherlv_10= RULE_GLOBAL_ID ) ) )";
          }
          public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
              TokenStream input = (TokenStream)_input;
          	int _s = s;
              switch ( s ) {
                      case 0 : 
                          int LA23_0 = input.LA(1);
  
                           
                          int index23_0 = input.index();
                          input.rewind();
                          s = -1;
                          if ( (LA23_0==RULE_INTEGER||(LA23_0>=RULE_SIGNED_INT && LA23_0<=RULE_CSTRING)) ) {s = 1;}
  
                          else if ( (LA23_0==26) && (synpred1_InternalLLVM_IR())) {s = 7;}
  
                          else if ( (LA23_0==76) ) {s = 8;}
  
                          else if ( (LA23_0==78) ) {s = 9;}
  
                          else if ( (LA23_0==75) ) {s = 10;}
  
                          else if ( (LA23_0==80) ) {s = 11;}
  
                          else if ( (LA23_0==RULE_METADATA_STRING) ) {s = 12;}
  
                          else if ( (LA23_0==74) ) {s = 13;}
  
                          else if ( (LA23_0==73) ) {s = 14;}
  
                          else if ( (LA23_0==42||(LA23_0>=44 && LA23_0<=55)||(LA23_0>=58 && LA23_0<=61)||(LA23_0>=63 && LA23_0<=72)||(LA23_0>=157 && LA23_0<=169)) ) {s = 15;}
  
                          else if ( (LA23_0==RULE_GLOBAL_ID) ) {s = 55;}
  
                           
                          input.seek(index23_0);
                          if ( s>=0 ) return s;
                          break;
                      case 1 : 
                          int LA23_8 = input.LA(1);
  
                           
                          int index23_8 = input.index();
                          input.rewind();
                          s = -1;
                          if ( (synpred1_InternalLLVM_IR()) ) {s = 7;}
  
                          else if ( (true) ) {s = 56;}
  
                           
                          input.seek(index23_8);
                          if ( s>=0 ) return s;
                          break;
              }
              if (state.backtracking>0) {state.failed=true; return -1;}
              NoViableAltException nvae =
                  new NoViableAltException(getDescription(), 23, _s, input);
              error(nvae);
              throw nvae;
          }
      }
      static final String DFA65_eotS =
          "\6\uffff";
      static final String DFA65_eofS =
          "\6\uffff";
      static final String DFA65_minS =
          "\1\11\1\22\2\uffff\1\22\1\52";
      static final String DFA65_maxS =
          "\1\u00c4\1\31\2\uffff\1\31\1\u00c4";
      static final String DFA65_acceptS =
          "\2\uffff\1\2\1\1\2\uffff";
      static final String DFA65_specialS =
          "\6\uffff}>";
      static final String[] DFA65_transitionS = {
              "\1\1\40\uffff\1\2\1\uffff\14\2\2\uffff\4\2\1\uffff\12\2\61"+
              "\uffff\1\2\1\uffff\1\2\1\uffff\3\2\4\uffff\2\2\5\uffff\2\2\5"+
              "\uffff\4\2\6\uffff\15\2\24\uffff\1\3\2\2\2\uffff\2\2",
              "\1\4\6\uffff\1\5",
              "",
              "",
              "\1\4\6\uffff\1\5",
              "\1\2\1\uffff\14\2\2\uffff\4\2\1\uffff\12\2\67\uffff\1\2\13"+
              "\uffff\2\2\7\uffff\2\2\6\uffff\15\2\24\uffff\1\3\2\2\2\uffff"+
              "\2\2"
      };
  
      static final short[] DFA65_eot = DFA.unpackEncodedString(DFA65_eotS);
      static final short[] DFA65_eof = DFA.unpackEncodedString(DFA65_eofS);
      static final char[] DFA65_min = DFA.unpackEncodedStringToUnsignedChars(DFA65_minS);
      static final char[] DFA65_max = DFA.unpackEncodedStringToUnsignedChars(DFA65_maxS);
      static final short[] DFA65_accept = DFA.unpackEncodedString(DFA65_acceptS);
      static final short[] DFA65_special = DFA.unpackEncodedString(DFA65_specialS);
      static final short[][] DFA65_transition;
  
      static {
          int numStates = DFA65_transitionS.length;
          DFA65_transition = new short[numStates][];
          for (int i=0; i<numStates; i++) {
              DFA65_transition[i] = DFA.unpackEncodedString(DFA65_transitionS[i]);
          }
      }
  
      class DFA65 extends DFA {
  
          public DFA65(BaseRecognizer recognizer) {
              this.recognizer = recognizer;
              this.decisionNumber = 65;
              this.eot = DFA65_eot;
              this.eof = DFA65_eof;
              this.min = DFA65_min;
              this.max = DFA65_max;
              this.accept = DFA65_accept;
              this.special = DFA65_special;
              this.transition = DFA65_transition;
          }
          public String getDescription() {
              return "()* loopback of 4943:2: ( (lv_instructions_1_0= ruleStartingInstruction ) )*";
          }
      }
      static final String DFA66_eotS =
          "\6\uffff";
      static final String DFA66_eofS =
          "\6\uffff";
      static final String DFA66_minS =
          "\1\11\1\22\2\uffff\1\22\1\52";
      static final String DFA66_maxS =
          "\1\u00c4\1\31\2\uffff\1\31\1\u00c4";
      static final String DFA66_acceptS =
          "\2\uffff\1\2\1\1\2\uffff";
      static final String DFA66_specialS =
          "\6\uffff}>";
      static final String[] DFA66_transitionS = {
              "\1\1\40\uffff\1\3\1\uffff\14\3\2\uffff\4\3\1\uffff\12\3\61"+
              "\uffff\1\2\1\uffff\1\2\1\uffff\3\2\4\uffff\2\2\5\uffff\2\3\5"+
              "\uffff\4\3\6\uffff\15\3\25\uffff\2\3\2\uffff\2\3",
              "\1\4\6\uffff\1\5",
              "",
              "",
              "\1\4\6\uffff\1\5",
              "\1\3\1\uffff\14\3\2\uffff\4\3\1\uffff\12\3\67\uffff\1\2\13"+
              "\uffff\2\3\7\uffff\2\3\6\uffff\15\3\25\uffff\2\3\2\uffff\2\3"
      };
  
      static final short[] DFA66_eot = DFA.unpackEncodedString(DFA66_eotS);
      static final short[] DFA66_eof = DFA.unpackEncodedString(DFA66_eofS);
      static final char[] DFA66_min = DFA.unpackEncodedStringToUnsignedChars(DFA66_minS);
      static final char[] DFA66_max = DFA.unpackEncodedStringToUnsignedChars(DFA66_maxS);
      static final short[] DFA66_accept = DFA.unpackEncodedString(DFA66_acceptS);
      static final short[] DFA66_special = DFA.unpackEncodedString(DFA66_specialS);
      static final short[][] DFA66_transition;
  
      static {
          int numStates = DFA66_transitionS.length;
          DFA66_transition = new short[numStates][];
          for (int i=0; i<numStates; i++) {
              DFA66_transition[i] = DFA.unpackEncodedString(DFA66_transitionS[i]);
          }
      }
  
      class DFA66 extends DFA {
  
          public DFA66(BaseRecognizer recognizer) {
              this.recognizer = recognizer;
              this.decisionNumber = 66;
              this.eot = DFA66_eot;
              this.eof = DFA66_eof;
              this.min = DFA66_min;
              this.max = DFA66_max;
              this.accept = DFA66_accept;
              this.special = DFA66_special;
              this.transition = DFA66_transition;
          }
          public String getDescription() {
              return "()* loopback of 4961:3: ( (lv_instructions_2_0= ruleMiddleInstruction ) )*";
          }
      }
      static final String DFA69_eotS =
          "\53\uffff";
      static final String DFA69_eofS =
          "\53\uffff";
      static final String DFA69_minS =
          "\1\11\1\uffff\1\u00c0\1\11\2\uffff\25\11\1\5\12\11\1\5\1\11\1\5"+
          "\1\uffff\1\11";
      static final String DFA69_maxS =
          "\1\u00c4\1\uffff\1\u00c0\1\u0106\2\uffff\25\u00e0\1\5\12\u00e0"+
          "\1\u00a9\1\u00e0\1\5\1\uffff\1\u00e0";
      static final String DFA69_acceptS =
          "\1\uffff\1\1\2\uffff\1\2\1\3\43\uffff\1\4\1\uffff";
      static final String DFA69_specialS =
          "\53\uffff}>";
      static final String[] DFA69_transitionS = {
              "\1\1\40\uffff\1\1\1\uffff\14\1\2\uffff\4\1\1\uffff\12\1\103"+
              "\uffff\2\1\5\uffff\1\4\1\5\2\1\6\uffff\15\1\25\uffff\1\2\1\3"+
              "\2\uffff\2\1",
              "",
              "\1\3",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1\20\uffff\1"+
              "\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1\22"+
              "\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33",
              "",
              "",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\47",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\10\uffff\1\50\43\uffff\1\46\5\uffff\1\34\1\35\1\36\113"+
              "\uffff\1\37\1\40\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\51\1\uffff\12\51\11\uffff\1\51\7\uffff\1\51\4\uffff\1\1"+
              "\2\uffff\1\51\1\uffff\14\51\2\uffff\4\51\1\uffff\16\51\1\uffff"+
              "\1\51\1\uffff\1\51\114\uffff\15\51",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1",
              "\1\52",
              "",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\46\5\uffff\1\34\1\35\1\36\113\uffff\1\37\1\40"+
              "\1\41\1\42\1\43\1\44\1\45\2\uffff\1\1\1\uffff\7\1"
      };
  
      static final short[] DFA69_eot = DFA.unpackEncodedString(DFA69_eotS);
      static final short[] DFA69_eof = DFA.unpackEncodedString(DFA69_eofS);
      static final char[] DFA69_min = DFA.unpackEncodedStringToUnsignedChars(DFA69_minS);
      static final char[] DFA69_max = DFA.unpackEncodedStringToUnsignedChars(DFA69_maxS);
      static final short[] DFA69_accept = DFA.unpackEncodedString(DFA69_acceptS);
      static final short[] DFA69_special = DFA.unpackEncodedString(DFA69_specialS);
      static final short[][] DFA69_transition;
  
      static {
          int numStates = DFA69_transitionS.length;
          DFA69_transition = new short[numStates][];
          for (int i=0; i<numStates; i++) {
              DFA69_transition[i] = DFA.unpackEncodedString(DFA69_transitionS[i]);
          }
      }
  
      class DFA69 extends DFA {
  
          public DFA69(BaseRecognizer recognizer) {
              this.recognizer = recognizer;
              this.decisionNumber = 69;
              this.eot = DFA69_eot;
              this.eof = DFA69_eof;
              this.min = DFA69_min;
              this.max = DFA69_max;
              this.accept = DFA69_accept;
              this.special = DFA69_special;
              this.transition = DFA69_transition;
          }
          public String getDescription() {
              return "5184:1: (lv_instruction_0_1= ruleNamedMiddleInstruction | lv_instruction_0_2= ruleInstruction_store | lv_instruction_0_3= ruleInstruction_fence | lv_instruction_0_4= ruleInstruction_call_void )";
          }
      }
      static final String DFA77_eotS =
          "\45\uffff";
      static final String DFA77_eofS =
          "\45\uffff";
      static final String DFA77_minS =
          "\1\11\1\uffff\1\11\6\uffff\25\11\1\5\3\11\1\5\1\11\1\uffff";
      static final String DFA77_maxS =
          "\1\u0086\1\uffff\1\u0106\6\uffff\25\u00e0\1\5\3\u00e0\1\u00a9\1"+
          "\u00e0\1\uffff";
      static final String DFA77_acceptS =
          "\1\uffff\1\1\1\uffff\1\2\1\3\1\4\1\5\1\6\1\7\33\uffff\1\10";
      static final String DFA77_specialS =
          "\45\uffff}>";
      static final String[] DFA77_transitionS = {
              "\1\1\160\uffff\1\3\1\uffff\1\4\1\uffff\1\5\1\6\1\2\4\uffff"+
              "\1\7\1\10",
              "",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1\20\uffff\1\11\1\12\1\13\1\14\1\15\1\16\1\17\1\20\1\21\1"+
              "\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31\1\32\1\33\1\34\1\35\1"+
              "\36",
              "",
              "",
              "",
              "",
              "",
              "",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\43",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              "\1\44\1\uffff\12\44\11\uffff\1\44\7\uffff\1\44\4\uffff\1\1"+
              "\2\uffff\1\44\1\uffff\14\44\2\uffff\4\44\1\uffff\16\44\1\uffff"+
              "\1\44\1\uffff\1\44\114\uffff\15\44",
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\42\5\uffff\1\37\1\40\1\41\124\uffff\1\1\1\uffff"+
              "\7\1",
              ""
      };
  
      static final short[] DFA77_eot = DFA.unpackEncodedString(DFA77_eotS);
      static final short[] DFA77_eof = DFA.unpackEncodedString(DFA77_eofS);
      static final char[] DFA77_min = DFA.unpackEncodedStringToUnsignedChars(DFA77_minS);
      static final char[] DFA77_max = DFA.unpackEncodedStringToUnsignedChars(DFA77_maxS);
      static final short[] DFA77_accept = DFA.unpackEncodedString(DFA77_acceptS);
      static final short[] DFA77_special = DFA.unpackEncodedString(DFA77_specialS);
      static final short[][] DFA77_transition;
  
      static {
          int numStates = DFA77_transitionS.length;
          DFA77_transition = new short[numStates][];
          for (int i=0; i<numStates; i++) {
              DFA77_transition[i] = DFA.unpackEncodedString(DFA77_transitionS[i]);
          }
      }
  
      class DFA77 extends DFA {
  
          public DFA77(BaseRecognizer recognizer) {
              this.recognizer = recognizer;
              this.decisionNumber = 77;
              this.eot = DFA77_eot;
              this.eof = DFA77_eof;
              this.min = DFA77_min;
              this.max = DFA77_max;
              this.accept = DFA77_accept;
              this.special = DFA77_special;
              this.transition = DFA77_transition;
          }
          public String getDescription() {
              return "5624:1: (lv_instruction_0_1= ruleNamedTerminatorInstruction | lv_instruction_0_2= ruleInstruction_ret | lv_instruction_0_3= ruleInstruction_br | lv_instruction_0_4= ruleInstruction_switch | lv_instruction_0_5= ruleInstruction_indirectbr | lv_instruction_0_6= ruleInstruction_resume | lv_instruction_0_7= ruleInstruction_unreachable | lv_instruction_0_8= ruleInstruction_invoke_void )";
          }
      }
      static final String DFA79_eotS =
          "\123\uffff";
      static final String DFA79_eofS =
          "\2\uffff\1\54\50\uffff\1\1\47\uffff";
      static final String DFA79_minS =
          "\1\11\1\uffff\1\5\17\11\1\u00aa\1\15\30\11\1\uffff\46\11";
      static final String DFA79_maxS =
          "\1\u00e0\1\uffff\1\u00d6\17\u00e0\1\u00b3\1\u00bd\27\u00e0\1\u00c4"+
          "\1\uffff\46\u00e0";
      static final String DFA79_acceptS =
          "\1\uffff\1\1\52\uffff\1\2\46\uffff";
      static final String DFA79_specialS =
          "\123\uffff}>";
      static final String[] DFA79_transitionS = {
              "\1\1\11\uffff\1\1\6\uffff\1\1\1\uffff\1\1\57\uffff\1\1\1\uffff"+
              "\1\1\54\uffff\1\2\134\uffff\1\1\1\uffff\7\1",
              "",
              "\1\1\1\uffff\2\1\1\53\7\1\1\54\10\uffff\1\1\1\54\12\uffff"+
              "\1\54\1\1\2\uffff\1\20\1\uffff\1\21\1\22\1\23\1\24\1\25\1\26"+
              "\1\27\1\30\1\31\1\32\1\33\1\34\2\uffff\1\35\1\36\1\37\1\40\1"+
              "\uffff\1\41\1\42\1\43\1\44\1\45\1\46\1\47\1\50\1\51\1\52\4\1"+
              "\1\uffff\1\1\1\uffff\1\1\4\uffff\1\1\44\uffff\1\54\1\uffff\1"+
              "\54\1\uffff\3\54\4\uffff\2\54\5\uffff\2\54\5\uffff\4\54\6\uffff"+
              "\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1\16\1\17"+
              "\24\uffff\3\54\2\uffff\2\54\21\uffff\1\1",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\3\uffff\1\55\40\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff"+
              "\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\56\1\57\1\60\1\61\1\62\1\63\1\64\1\65\1\66\1\67",
              "\1\70\u009e\uffff\1\101\1\102\1\103\1\104\4\uffff\1\71\1\72"+
              "\1\73\1\74\1\75\1\76\1\77\1\100\1\105\1\106",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\107\1\110\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\111\1\112\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\113\1\114\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\115\1\116\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\26\uffff\1\117\15\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134"+
              "\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\26\uffff\1\120\15\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134"+
              "\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\26\uffff\1\121\15\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134"+
              "\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\26\uffff\1\122\15\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134"+
              "\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\13\uffff\5\54\114"+
              "\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\13\uffff\5\54\114"+
              "\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\13\uffff\5\54\114"+
              "\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\13\uffff\5\54\114"+
              "\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\1\7\uffff\1\1\1\54\6\uffff\1\54\1\uffff\1\1\12\uffff\1"+
              "\1\3\uffff\1\1\1\uffff\14\1\2\uffff\4\1\1\uffff\12\1\61\uffff"+
              "\1\1\1\uffff\1\1\1\uffff\3\1\4\uffff\2\1\5\uffff\2\1\5\uffff"+
              "\4\1\6\uffff\15\1\24\uffff\3\1\2\uffff\2\1",
              "",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\107\1\110\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\107\1\110\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\111\1\112\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\111\1\112\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\113\1\114\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\113\1\114\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\115\1\116\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\20\uffff\1\115\1\116\22\uffff\1\54\1\uffff\1\54\54\uffff\1"+
              "\54\134\uffff\1\54\1\uffff\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54",
              "\1\54\11\uffff\1\54\6\uffff\1\54\1\uffff\1\54\12\uffff\1\1"+
              "\44\uffff\1\54\1\uffff\1\54\54\uffff\1\54\134\uffff\1\54\1\uffff"+
              "\7\54"
      };
  
      static final short[] DFA79_eot = DFA.unpackEncodedString(DFA79_eotS);
      static final short[] DFA79_eof = DFA.unpackEncodedString(DFA79_eofS);
      static final char[] DFA79_min = DFA.unpackEncodedStringToUnsignedChars(DFA79_minS);
      static final char[] DFA79_max = DFA.unpackEncodedStringToUnsignedChars(DFA79_maxS);
      static final short[] DFA79_accept = DFA.unpackEncodedString(DFA79_acceptS);
      static final short[] DFA79_special = DFA.unpackEncodedString(DFA79_specialS);
      static final short[][] DFA79_transition;
  
      static {
          int numStates = DFA79_transitionS.length;
          DFA79_transition = new short[numStates][];
          for (int i=0; i<numStates; i++) {
              DFA79_transition[i] = DFA.unpackEncodedString(DFA79_transitionS[i]);
          }
      }
  
      class DFA79 extends DFA {
  
          public DFA79(BaseRecognizer recognizer) {
              this.recognizer = recognizer;
              this.decisionNumber = 79;
              this.eot = DFA79_eot;
              this.eof = DFA79_eof;
              this.min = DFA79_min;
              this.max = DFA79_max;
              this.accept = DFA79_accept;
              this.special = DFA79_special;
              this.transition = DFA79_transition;
          }
          public String getDescription() {
              return "5859:2: ( ( (lv_val_1_0= ruleTypedValue ) ) | otherlv_2= 'void' )";
          }
      }
      static final String DFA171_eotS =
          "\13\uffff";
      static final String DFA171_eofS =
          "\13\uffff";
      static final String DFA171_minS =
          "\1\23\2\uffff\1\5\7\uffff";
      static final String DFA171_maxS =
          "\1\u00e0\2\uffff\1\32\7\uffff";
      static final String DFA171_acceptS =
          "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\6\1\7\1\10\1\11\1\3";
      static final String DFA171_specialS =
          "\13\uffff}>";
      static final String[] DFA171_transitionS = {
              "\1\1\6\uffff\1\10\1\uffff\1\7\57\uffff\1\3\1\uffff\1\4\54\uffff"+
              "\1\6\134\uffff\1\11\1\uffff\1\5\6\2",
              "",
              "",
              "\1\12\24\uffff\1\10",
              "",
              "",
              "",
              "",
              "",
              "",
              ""
      };
  
      static final short[] DFA171_eot = DFA.unpackEncodedString(DFA171_eotS);
      static final short[] DFA171_eof = DFA.unpackEncodedString(DFA171_eofS);
      static final char[] DFA171_min = DFA.unpackEncodedStringToUnsignedChars(DFA171_minS);
      static final char[] DFA171_max = DFA.unpackEncodedStringToUnsignedChars(DFA171_maxS);
      static final short[] DFA171_accept = DFA.unpackEncodedString(DFA171_acceptS);
      static final short[] DFA171_special = DFA.unpackEncodedString(DFA171_specialS);
      static final short[][] DFA171_transition;
  
      static {
          int numStates = DFA171_transitionS.length;
          DFA171_transition = new short[numStates][];
          for (int i=0; i<numStates; i++) {
              DFA171_transition[i] = DFA.unpackEncodedString(DFA171_transitionS[i]);
          }
      }
  
      class DFA171 extends DFA {
  
          public DFA171(BaseRecognizer recognizer) {
              this.recognizer = recognizer;
              this.decisionNumber = 171;
              this.eot = DFA171_eot;
              this.eof = DFA171_eof;
              this.min = DFA171_min;
              this.max = DFA171_max;
              this.accept = DFA171_accept;
              this.special = DFA171_special;
              this.transition = DFA171_transition;
          }
          public String getDescription() {
              return "13275:1: (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleVoidType | lv_type_0_7= ruleMetadataType | lv_type_0_8= ruleStructType | lv_type_0_9= ruleOpaqueType )";
          }
      }
      static final String DFA173_eotS =
          "\12\uffff";
      static final String DFA173_eofS =
          "\12\uffff";
      static final String DFA173_minS =
          "\1\23\2\uffff\1\5\6\uffff";
      static final String DFA173_maxS =
          "\1\u00e0\2\uffff\1\32\6\uffff";
      static final String DFA173_acceptS =
          "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\6\1\7\1\10\1\3";
      static final String DFA173_specialS =
          "\12\uffff}>";
      static final String[] DFA173_transitionS = {
              "\1\1\6\uffff\1\7\1\uffff\1\6\57\uffff\1\3\1\uffff\1\4\u0089"+
              "\uffff\1\10\1\uffff\1\5\6\2",
              "",
              "",
              "\1\11\24\uffff\1\7",
              "",
              "",
              "",
              "",
              "",
              ""
      };
  
      static final short[] DFA173_eot = DFA.unpackEncodedString(DFA173_eotS);
      static final short[] DFA173_eof = DFA.unpackEncodedString(DFA173_eofS);
      static final char[] DFA173_min = DFA.unpackEncodedStringToUnsignedChars(DFA173_minS);
      static final char[] DFA173_max = DFA.unpackEncodedStringToUnsignedChars(DFA173_maxS);
      static final short[] DFA173_accept = DFA.unpackEncodedString(DFA173_acceptS);
      static final short[] DFA173_special = DFA.unpackEncodedString(DFA173_specialS);
      static final short[][] DFA173_transition;
  
      static {
          int numStates = DFA173_transitionS.length;
          DFA173_transition = new short[numStates][];
          for (int i=0; i<numStates; i++) {
              DFA173_transition[i] = DFA.unpackEncodedString(DFA173_transitionS[i]);
          }
      }
  
      class DFA173 extends DFA {
  
          public DFA173(BaseRecognizer recognizer) {
              this.recognizer = recognizer;
              this.decisionNumber = 173;
              this.eot = DFA173_eot;
              this.eof = DFA173_eof;
              this.min = DFA173_min;
              this.max = DFA173_max;
              this.accept = DFA173_accept;
              this.special = DFA173_special;
              this.transition = DFA173_transition;
          }
          public String getDescription() {
              return "13451:1: (lv_type_0_1= ruleIntType | lv_type_0_2= ruleFloatingType | lv_type_0_3= ruleVectorType | lv_type_0_4= ruleArrayType | lv_type_0_5= ruleX86mmxType | lv_type_0_6= ruleMetadataType | lv_type_0_7= ruleStructType | lv_type_0_8= ruleOpaqueType )";
          }
      }
   
  
      
      private static class FollowSets000 {
          public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTopLevelElement_in_ruleModel130 = new BitSet(new long[]{0x0000003A61000782L,0x0000000006220000L,0x0000000000000000L,0x0001FFFE00800000L});
          public static final BitSet FOLLOW_ruleTopLevelElement_in_entryRuleTopLevelElement166 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleTopLevelElement176 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTypeDef_in_ruleTopLevelElement223 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInlineAsm_in_ruleTopLevelElement250 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTargetInfo_in_ruleTopLevelElement277 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleGlobalValue_in_ruleTopLevelElement304 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleNamedMetadata_in_ruleTopLevelElement331 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleAttributeGroup_in_ruleTopLevelElement358 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleAttributeGroup_in_entryRuleAttributeGroup393 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleAttributeGroup403 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_24_in_ruleAttributeGroup440 = new BitSet(new long[]{0x0000000000000010L});
          public static final BitSet FOLLOW_RULE_ATTRIBUTE_ID_in_ruleAttributeGroup457 = new BitSet(new long[]{0x0000000002000000L});
          public static final BitSet FOLLOW_25_in_ruleAttributeGroup474 = new BitSet(new long[]{0x0000000004000000L});
          public static final BitSet FOLLOW_26_in_ruleAttributeGroup486 = new BitSet(new long[]{0x0000000000000040L,0x03FFFFFFE0000000L});
          public static final BitSet FOLLOW_ruleFunctionAttribute_in_ruleAttributeGroup508 = new BitSet(new long[]{0x0000000008000040L,0x03FFFFFFE0000000L});
          public static final BitSet FOLLOW_ruleAlignStack_in_ruleAttributeGroup536 = new BitSet(new long[]{0x0000000002000000L});
          public static final BitSet FOLLOW_25_in_ruleAttributeGroup548 = new BitSet(new long[]{0x0000000000000020L});
          public static final BitSet FOLLOW_RULE_INTEGER_in_ruleAttributeGroup565 = new BitSet(new long[]{0x0000000008000040L,0x03FFFFFFE0000000L});
          public static final BitSet FOLLOW_ruleTargetSpecificAttribute_in_ruleAttributeGroup598 = new BitSet(new long[]{0x0000000008000040L,0x03FFFFFFE0000000L});
          public static final BitSet FOLLOW_27_in_ruleAttributeGroup612 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTargetSpecificAttribute_in_entryRuleTargetSpecificAttribute648 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleTargetSpecificAttribute658 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_STRING_in_ruleTargetSpecificAttribute700 = new BitSet(new long[]{0x0000000002000002L});
          public static final BitSet FOLLOW_25_in_ruleTargetSpecificAttribute718 = new BitSet(new long[]{0x0000000000000040L});
          public static final BitSet FOLLOW_RULE_STRING_in_ruleTargetSpecificAttribute735 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleNamedMetadata_in_entryRuleNamedMetadata778 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleNamedMetadata788 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_META_INT_in_ruleNamedMetadata831 = new BitSet(new long[]{0x0000000002000000L});
          public static final BitSet FOLLOW_25_in_ruleNamedMetadata848 = new BitSet(new long[]{0x0000000010000000L});
          public static final BitSet FOLLOW_28_in_ruleNamedMetadata860 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
          public static final BitSet FOLLOW_ruleMetadataNode_in_ruleNamedMetadata881 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_META_NAME_in_ruleNamedMetadata906 = new BitSet(new long[]{0x0000000002000000L});
          public static final BitSet FOLLOW_25_in_ruleNamedMetadata923 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
          public static final BitSet FOLLOW_ruleMetadataNode_in_ruleNamedMetadata944 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataRef_in_entryRuleMetadataRef981 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleMetadataRef991 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataIdentifier_in_ruleMetadataRef1038 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataIdentifier_in_entryRuleMetadataIdentifier1074 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleMetadataIdentifier1085 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_META_INT_in_ruleMetadataIdentifier1125 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_META_NAME_in_ruleMetadataIdentifier1151 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleValueRef_in_entryRuleValueRef1196 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleValueRef1206 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleGlobalValueRef_in_ruleValueRef1253 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleLocalValueRef_in_ruleValueRef1280 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleGlobalValueRef_in_entryRuleGlobalValueRef1315 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleGlobalValueRef1325 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstant_in_ruleGlobalValueRef1371 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataRef_in_ruleGlobalValueRef1398 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleLocalValueRef_in_entryRuleLocalValueRef1434 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleLocalValueRef1444 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_LOCAL_ID_in_ruleLocalValueRef1488 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleGlobalValue_in_entryRuleGlobalValue1523 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleGlobalValue1533 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleGlobalVariable_in_ruleGlobalValue1580 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFunction_in_ruleGlobalValue1607 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleAlias_in_ruleGlobalValue1634 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleNamedInstruction_in_entryRuleNamedInstruction1673 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleNamedInstruction1683 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleStartingInstruction_in_ruleNamedInstruction1730 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleNamedMiddleInstruction_in_ruleNamedInstruction1757 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleNamedTerminatorInstruction_in_ruleNamedInstruction1784 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleAlias_in_entryRuleAlias1821 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleAlias1831 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleGlobalName_in_ruleAlias1877 = new BitSet(new long[]{0x0000000020000000L});
          public static final BitSet FOLLOW_29_in_ruleAlias1889 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleLinkage_in_ruleAlias1910 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleVisibility_in_ruleAlias1932 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleAlias1954 = new BitSet(new long[]{0x0000000000000400L,0x0000000000000000L,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleAliasee_in_ruleAlias1975 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleAliasee_in_entryRuleAliasee2011 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleAliasee2021 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_GLOBAL_ID_in_ruleAliasee2066 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_convert_in_ruleAliasee2093 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTargetInfo_in_entryRuleTargetInfo2129 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleTargetInfo2139 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_30_in_ruleTargetInfo2176 = new BitSet(new long[]{0x0000000180000000L});
          public static final BitSet FOLLOW_31_in_ruleTargetInfo2196 = new BitSet(new long[]{0x0000000002000000L});
          public static final BitSet FOLLOW_32_in_ruleTargetInfo2225 = new BitSet(new long[]{0x0000000002000000L});
          public static final BitSet FOLLOW_25_in_ruleTargetInfo2253 = new BitSet(new long[]{0x0000000000000040L});
          public static final BitSet FOLLOW_RULE_STRING_in_ruleTargetInfo2270 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInlineAsm_in_entryRuleInlineAsm2311 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInlineAsm2321 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_33_in_ruleInlineAsm2358 = new BitSet(new long[]{0x0000000400000000L});
          public static final BitSet FOLLOW_34_in_ruleInlineAsm2370 = new BitSet(new long[]{0x0000000000000040L});
          public static final BitSet FOLLOW_RULE_STRING_in_ruleInlineAsm2387 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleGlobalVariable_in_entryRuleGlobalVariable2428 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleGlobalVariable2438 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleGlobalName_in_ruleGlobalVariable2484 = new BitSet(new long[]{0x0000003800000000L,0x0000000000220000L,0x0000000000000000L,0x0001FFFE00000000L});
          public static final BitSet FOLLOW_ruleLinkage_in_ruleGlobalVariable2505 = new BitSet(new long[]{0x0000003800000000L,0x0000000000220000L});
          public static final BitSet FOLLOW_ruleAddressSpace_in_ruleGlobalVariable2527 = new BitSet(new long[]{0x0000003800000000L,0x0000000000020000L});
          public static final BitSet FOLLOW_ruleTLSmodel_in_ruleGlobalVariable2549 = new BitSet(new long[]{0x0000003800000000L});
          public static final BitSet FOLLOW_35_in_ruleGlobalVariable2563 = new BitSet(new long[]{0x0000003000000000L});
          public static final BitSet FOLLOW_36_in_ruleGlobalVariable2578 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_37_in_ruleGlobalVariable2596 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleGlobalVariable2618 = new BitSet(new long[]{0xBCFFF4400401FC22L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleConstant_in_ruleGlobalVariable2639 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleGlobalVariable2653 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
          public static final BitSet FOLLOW_ruleSection_in_ruleGlobalVariable2674 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleGlobalVariable2689 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
          public static final BitSet FOLLOW_ruleAlign_in_ruleGlobalVariable2710 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstant_in_entryRuleConstant2748 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstant2758 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleSimpleConstant_in_ruleConstant2805 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleStructureConstant_in_ruleConstant2838 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleArrayConstant_in_ruleConstant2866 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleVectorConstant_in_ruleConstant2893 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleZeroInitializer_in_ruleConstant2920 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataNode_in_ruleConstant2947 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataString_in_ruleConstant2974 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleBlockAddress_in_ruleConstant3001 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleUndef_in_ruleConstant3028 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_in_ruleConstant3055 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_GLOBAL_ID_in_ruleConstant3080 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_in_entryRuleConstantExpression3116 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantExpression3126 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_convert_in_ruleConstantExpression3173 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_getelementptr_in_ruleConstantExpression3200 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_select_in_ruleConstantExpression3227 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_compare_in_ruleConstantExpression3254 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_extractelement_in_ruleConstantExpression3281 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_insertelement_in_ruleConstantExpression3308 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_shufflevector_in_ruleConstantExpression3335 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_extractvalue_in_ruleConstantExpression3362 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_insertvalue_in_ruleConstantExpression3389 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_binary_in_ruleConstantExpression3416 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_convert_in_entryRuleConstantExpression_convert3451 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantExpression_convert3461 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConvertionOpcode_in_ruleConstantExpression_convert3507 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleConstantExpression_convert3519 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleConstantExpression_convert3540 = new BitSet(new long[]{0xBCFFF4000401FDA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleGlobalValueRef_in_ruleConstantExpression_convert3561 = new BitSet(new long[]{0x0000010000000000L});
          public static final BitSet FOLLOW_40_in_ruleConstantExpression_convert3573 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleConstantExpression_convert3594 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleConstantExpression_convert3606 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_getelementptr_in_entryRuleConstantExpression_getelementptr3642 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantExpression_getelementptr3652 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_42_in_ruleConstantExpression_getelementptr3695 = new BitSet(new long[]{0x0000088000000000L});
          public static final BitSet FOLLOW_43_in_ruleConstantExpression_getelementptr3721 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleConstantExpression_getelementptr3735 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleConstantExpression_getelementptr3756 = new BitSet(new long[]{0xBCFFF4000401FDA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleGlobalValueRef_in_ruleConstantExpression_getelementptr3777 = new BitSet(new long[]{0x0000024000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_getelementptr3790 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleConstantExpression_getelementptr3811 = new BitSet(new long[]{0xBCFFF4000401FC20L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleConstant_in_ruleConstantExpression_getelementptr3832 = new BitSet(new long[]{0x0000024000000000L});
          public static final BitSet FOLLOW_41_in_ruleConstantExpression_getelementptr3846 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_select_in_entryRuleConstantExpression_select3882 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantExpression_select3892 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_44_in_ruleConstantExpression_select3935 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleConstantExpression_select3960 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_select3981 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_select3993 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_select4014 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_select4026 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_select4047 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleConstantExpression_select4059 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_compare_in_entryRuleConstantExpression_compare4095 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantExpression_compare4105 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_45_in_ruleConstantExpression_compare4150 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x000FFC0000000000L});
          public static final BitSet FOLLOW_ruleIcmpCondition_in_ruleConstantExpression_compare4184 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_46_in_ruleConstantExpression_compare4210 = new BitSet(new long[]{0x0000000000002000L,0x0000000000000000L,0x3FF0F00000000000L});
          public static final BitSet FOLLOW_ruleFcmpCondition_in_ruleConstantExpression_compare4244 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleConstantExpression_compare4258 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_compare4279 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_compare4291 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_compare4312 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleConstantExpression_compare4324 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_extractelement_in_entryRuleConstantExpression_extractelement4360 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantExpression_extractelement4370 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_47_in_ruleConstantExpression_extractelement4413 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleConstantExpression_extractelement4438 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_extractelement4459 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_extractelement4471 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_extractelement4492 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleConstantExpression_extractelement4504 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_insertelement_in_entryRuleConstantExpression_insertelement4540 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantExpression_insertelement4550 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_48_in_ruleConstantExpression_insertelement4593 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleConstantExpression_insertelement4618 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
          public static final BitSet FOLLOW_ruleVectorType_in_ruleConstantExpression_insertelement4639 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleConstantExpression_insertelement4660 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_insertelement4672 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_insertelement4693 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_insertelement4705 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_insertelement4726 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleConstantExpression_insertelement4738 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_shufflevector_in_entryRuleConstantExpression_shufflevector4774 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantExpression_shufflevector4784 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_49_in_ruleConstantExpression_shufflevector4827 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleConstantExpression_shufflevector4852 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_shufflevector4873 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_shufflevector4885 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_shufflevector4906 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_shufflevector4918 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_shufflevector4939 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleConstantExpression_shufflevector4951 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_extractvalue_in_entryRuleConstantExpression_extractvalue4987 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantExpression_extractvalue4997 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_50_in_ruleConstantExpression_extractvalue5040 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleConstantExpression_extractvalue5065 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_extractvalue5086 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_extractvalue5099 = new BitSet(new long[]{0x0000000000000020L});
          public static final BitSet FOLLOW_RULE_INTEGER_in_ruleConstantExpression_extractvalue5116 = new BitSet(new long[]{0x0000024000000000L});
          public static final BitSet FOLLOW_41_in_ruleConstantExpression_extractvalue5135 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_insertvalue_in_entryRuleConstantExpression_insertvalue5171 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantExpression_insertvalue5181 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_51_in_ruleConstantExpression_insertvalue5224 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleConstantExpression_insertvalue5249 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_insertvalue5270 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_insertvalue5282 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_insertvalue5303 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_insertvalue5316 = new BitSet(new long[]{0x0000000000000020L});
          public static final BitSet FOLLOW_RULE_INTEGER_in_ruleConstantExpression_insertvalue5333 = new BitSet(new long[]{0x0000024000000000L});
          public static final BitSet FOLLOW_41_in_ruleConstantExpression_insertvalue5352 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantExpression_binary_in_entryRuleConstantExpression_binary5388 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantExpression_binary5398 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_52_in_ruleConstantExpression_binary5445 = new BitSet(new long[]{0x0300008000000000L});
          public static final BitSet FOLLOW_53_in_ruleConstantExpression_binary5474 = new BitSet(new long[]{0x0300008000000000L});
          public static final BitSet FOLLOW_54_in_ruleConstantExpression_binary5503 = new BitSet(new long[]{0x0300008000000000L});
          public static final BitSet FOLLOW_55_in_ruleConstantExpression_binary5532 = new BitSet(new long[]{0x0300008000000000L});
          public static final BitSet FOLLOW_56_in_ruleConstantExpression_binary5606 = new BitSet(new long[]{0x0300008000000000L});
          public static final BitSet FOLLOW_57_in_ruleConstantExpression_binary5674 = new BitSet(new long[]{0x0300008000000000L});
          public static final BitSet FOLLOW_58_in_ruleConstantExpression_binary5743 = new BitSet(new long[]{0x4000008000000000L});
          public static final BitSet FOLLOW_59_in_ruleConstantExpression_binary5772 = new BitSet(new long[]{0x4000008000000000L});
          public static final BitSet FOLLOW_60_in_ruleConstantExpression_binary5801 = new BitSet(new long[]{0x4000008000000000L});
          public static final BitSet FOLLOW_61_in_ruleConstantExpression_binary5830 = new BitSet(new long[]{0x4000008000000000L});
          public static final BitSet FOLLOW_62_in_ruleConstantExpression_binary5859 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_63_in_ruleConstantExpression_binary5888 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_64_in_ruleConstantExpression_binary5917 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_65_in_ruleConstantExpression_binary5946 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_66_in_ruleConstantExpression_binary5975 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_67_in_ruleConstantExpression_binary6004 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_68_in_ruleConstantExpression_binary6033 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_69_in_ruleConstantExpression_binary6062 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_70_in_ruleConstantExpression_binary6091 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_71_in_ruleConstantExpression_binary6120 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_72_in_ruleConstantExpression_binary6149 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleConstantExpression_binary6178 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_binary6199 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleConstantExpression_binary6211 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleConstantExpression_binary6232 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleConstantExpression_binary6244 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleUndef_in_entryRuleUndef6280 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleUndef6290 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_73_in_ruleUndef6327 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleBlockAddress_in_entryRuleBlockAddress6372 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleBlockAddress6382 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_74_in_ruleBlockAddress6419 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleBlockAddress6431 = new BitSet(new long[]{0xBCFFF4000401FDA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleGlobalValueRef_in_ruleBlockAddress6452 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleBlockAddress6464 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleBlockAddress6485 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleBlockAddress6497 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleZeroInitializer_in_entryRuleZeroInitializer6533 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleZeroInitializer6543 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_75_in_ruleZeroInitializer6580 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleStructureConstant_in_entryRuleStructureConstant6625 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleStructureConstant6635 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_26_in_ruleStructureConstant6683 = new BitSet(new long[]{0x000000001C080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleConstantList_in_ruleStructureConstant6704 = new BitSet(new long[]{0x0000000008000000L});
          public static final BitSet FOLLOW_27_in_ruleStructureConstant6717 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_76_in_ruleStructureConstant6743 = new BitSet(new long[]{0x0000000004000000L});
          public static final BitSet FOLLOW_26_in_ruleStructureConstant6768 = new BitSet(new long[]{0x000000001C080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleConstantList_in_ruleStructureConstant6789 = new BitSet(new long[]{0x0000000008000000L});
          public static final BitSet FOLLOW_27_in_ruleStructureConstant6802 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
          public static final BitSet FOLLOW_77_in_ruleStructureConstant6814 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleArrayConstant_in_entryRuleArrayConstant6852 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleArrayConstant6862 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_78_in_ruleArrayConstant6908 = new BitSet(new long[]{0x0000000014080200L,0x080000000000D000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleConstantList_in_ruleArrayConstant6929 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
          public static final BitSet FOLLOW_79_in_ruleArrayConstant6942 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleVectorConstant_in_entryRuleVectorConstant6978 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleVectorConstant6988 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_76_in_ruleVectorConstant7034 = new BitSet(new long[]{0x0000000014080200L,0x0800000000007000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleConstantList_in_ruleVectorConstant7055 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
          public static final BitSet FOLLOW_77_in_ruleVectorConstant7068 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConstantList_in_entryRuleConstantList7104 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConstantList7114 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTypedConstant_in_ruleConstantList7160 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleConstantList7173 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedConstant_in_ruleConstantList7194 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleTypedConstant_in_entryRuleTypedConstant7232 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleTypedConstant7242 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleType_in_ruleTypedConstant7288 = new BitSet(new long[]{0xBCFFF4000401FC20L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleConstant_in_ruleTypedConstant7309 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleSimpleConstant_in_entryRuleSimpleConstant7345 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleSimpleConstant7355 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_INTEGER_in_ruleSimpleConstant7398 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_SIGNED_INT_in_ruleSimpleConstant7418 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_FLOAT_in_ruleSimpleConstant7438 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_BOOLEAN_in_ruleSimpleConstant7458 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_NULL_in_ruleSimpleConstant7478 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_CSTRING_in_ruleSimpleConstant7498 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataNode_in_entryRuleMetadataNode7541 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleMetadataNode7551 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_80_in_ruleMetadataNode7597 = new BitSet(new long[]{0x0000000004000000L});
          public static final BitSet FOLLOW_26_in_ruleMetadataNode7609 = new BitSet(new long[]{0xBCFFF4001C09FFA0L,0x0800000000015FFFL,0x000003FFE0000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleMetadataNodeElement_in_ruleMetadataNode7631 = new BitSet(new long[]{0x0000004008000000L});
          public static final BitSet FOLLOW_38_in_ruleMetadataNode7644 = new BitSet(new long[]{0xBCFFF4001409FFA0L,0x0800000000015FFFL,0x000003FFE0000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleMetadataNodeElement_in_ruleMetadataNode7665 = new BitSet(new long[]{0x0000004008000000L});
          public static final BitSet FOLLOW_27_in_ruleMetadataNode7681 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataNodeElement_in_entryRuleMetadataNodeElement7717 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleMetadataNodeElement7727 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleMetadataNodeElement7773 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataRef_in_ruleMetadataNodeElement7800 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_NULL_in_ruleMetadataNodeElement7823 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataString_in_entryRuleMetadataString7864 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleMetadataString7874 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_METADATA_STRING_in_ruleMetadataString7915 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTLSmodel_in_entryRuleTLSmodel7956 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleTLSmodel7967 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_81_in_ruleTLSmodel8005 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleTLSmodel8018 = new BitSet(new long[]{0x0000000000000000L,0x00000000001C0000L});
          public static final BitSet FOLLOW_ruleTLSoption_in_ruleTLSmodel8040 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleTLSmodel8058 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTLSoption_in_entryRuleTLSoption8099 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleTLSoption8110 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_82_in_ruleTLSoption8148 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_83_in_ruleTLSoption8167 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_84_in_ruleTLSoption8186 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleAddressSpace_in_entryRuleAddressSpace8226 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleAddressSpace8236 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_85_in_ruleAddressSpace8273 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleAddressSpace8285 = new BitSet(new long[]{0x0000000000000020L});
          public static final BitSet FOLLOW_RULE_INTEGER_in_ruleAddressSpace8302 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleAddressSpace8319 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleSection_in_entryRuleSection8356 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleSection8367 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_86_in_ruleSection8405 = new BitSet(new long[]{0x0000000000000040L});
          public static final BitSet FOLLOW_RULE_STRING_in_ruleSection8420 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleAlign_in_entryRuleAlign8466 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleAlign8477 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_87_in_ruleAlign8515 = new BitSet(new long[]{0x0000000000000020L});
          public static final BitSet FOLLOW_RULE_INTEGER_in_ruleAlign8530 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleGc_in_entryRuleGc8576 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleGc8587 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_88_in_ruleGc8625 = new BitSet(new long[]{0x0000000000000040L});
          public static final BitSet FOLLOW_RULE_STRING_in_ruleGc8640 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFunction_in_entryRuleFunction8685 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleFunction8695 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFunctionDef_in_ruleFunction8742 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFunctionDecl_in_ruleFunction8769 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFunctionDef_in_entryRuleFunctionDef8804 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleFunctionDef8814 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_89_in_ruleFunctionDef8851 = new BitSet(new long[]{0x0000000814080200L,0x0800000000005000L,0x000000000000000EL,0xFFFFFFFFFD3F8000L,0x00000000000003FFL});
          public static final BitSet FOLLOW_ruleFunctionHeader_in_ruleFunctionDef8872 = new BitSet(new long[]{0x0000000004000000L});
          public static final BitSet FOLLOW_26_in_ruleFunctionDef8884 = new BitSet(new long[]{0xBCFFF40000020600L,0xD4000000000001FFL,0xC00003FFE0783061L,0x0000000000000019L});
          public static final BitSet FOLLOW_ruleBasicBlock_in_ruleFunctionDef8905 = new BitSet(new long[]{0xBCFFF40008020600L,0xD4000000000001FFL,0xC00003FFE0783061L,0x0000000000000019L});
          public static final BitSet FOLLOW_27_in_ruleFunctionDef8918 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFunctionDecl_in_entryRuleFunctionDecl8954 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleFunctionDecl8964 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_90_in_ruleFunctionDecl9001 = new BitSet(new long[]{0x0000000814080200L,0x0800000000005000L,0x000000000000000EL,0xFFFFFFFFFD3F8000L,0x00000000000003FFL});
          public static final BitSet FOLLOW_ruleFunctionHeader_in_ruleFunctionDecl9022 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFunctionHeader_in_entryRuleFunctionHeader9058 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleFunctionHeader9068 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleLinkage_in_ruleFunctionHeader9114 = new BitSet(new long[]{0x0000000814080200L,0x0800000000005000L,0x000000000000000EL,0xFFFFFFFFFD3F8000L,0x00000000000003FFL});
          public static final BitSet FOLLOW_ruleVisibility_in_ruleFunctionHeader9136 = new BitSet(new long[]{0x0000000814080200L,0x0800000000005000L,0x000000000000000EL,0xFFFFFFFFFD3F8000L,0x00000000000003FFL});
          public static final BitSet FOLLOW_ruleCConv_in_ruleFunctionHeader9158 = new BitSet(new long[]{0x0000000814080200L,0x0800000000005000L,0x000000000000000EL,0x0001FFFFFD3F8000L,0x0000000000000380L});
          public static final BitSet FOLLOW_35_in_ruleFunctionHeader9172 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x000000000000000EL,0x0001FFFFFD3F8000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleParameterAttributes_in_ruleFunctionHeader9195 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleFunctionHeader9217 = new BitSet(new long[]{0x0000000000000400L});
          public static final BitSet FOLLOW_RULE_GLOBAL_ID_in_ruleFunctionHeader9234 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleFunctionHeader9251 = new BitSet(new long[]{0x0000020014080200L,0x0800000010005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleParameters_in_ruleFunctionHeader9272 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleFunctionHeader9284 = new BitSet(new long[]{0x0000000000000012L,0x03FFFFFFE9C00000L});
          public static final BitSet FOLLOW_ruleFunctionAttributes_in_ruleFunctionHeader9305 = new BitSet(new long[]{0x0000000000000002L,0x0000000009C00000L});
          public static final BitSet FOLLOW_ruleSection_in_ruleFunctionHeader9327 = new BitSet(new long[]{0x0000000000000002L,0x0000000009800000L});
          public static final BitSet FOLLOW_ruleAlign_in_ruleFunctionHeader9349 = new BitSet(new long[]{0x0000000000000002L,0x0000000009000000L});
          public static final BitSet FOLLOW_ruleGc_in_ruleFunctionHeader9371 = new BitSet(new long[]{0x0000000000000002L,0x0000000008000000L});
          public static final BitSet FOLLOW_ruleFunctionPrefix_in_ruleFunctionHeader9393 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFunctionPrefix_in_entryRuleFunctionPrefix9430 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleFunctionPrefix9440 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_91_in_ruleFunctionPrefix9477 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedConstant_in_ruleFunctionPrefix9498 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleParameters_in_entryRuleParameters9534 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleParameters9544 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleParameter_in_ruleParameters9601 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleParameters9614 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleParameter_in_ruleParameters9635 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleParameters9650 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
          public static final BitSet FOLLOW_92_in_ruleParameters9668 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_92_in_ruleParameters9709 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFunctionAttributes_in_entryRuleFunctionAttributes9759 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleFunctionAttributes9769 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFunctionAttribute_in_ruleFunctionAttributes9815 = new BitSet(new long[]{0x0000000000000012L,0x03FFFFFFE0000000L});
          public static final BitSet FOLLOW_ruleAlignStack_in_ruleFunctionAttributes9843 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_39_in_ruleFunctionAttributes9855 = new BitSet(new long[]{0x0000000000000020L});
          public static final BitSet FOLLOW_RULE_INTEGER_in_ruleFunctionAttributes9872 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleFunctionAttributes9889 = new BitSet(new long[]{0x0000000000000012L,0x03FFFFFFE0000000L});
          public static final BitSet FOLLOW_RULE_ATTRIBUTE_ID_in_ruleFunctionAttributes9916 = new BitSet(new long[]{0x0000000000000012L,0x03FFFFFFE0000000L});
          public static final BitSet FOLLOW_ruleAlignStack_in_entryRuleAlignStack9953 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleAlignStack9963 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_93_in_ruleAlignStack10009 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFunctionAttribute_in_entryRuleFunctionAttribute10045 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleFunctionAttribute10055 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_94_in_ruleFunctionAttribute10099 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_95_in_ruleFunctionAttribute10128 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_96_in_ruleFunctionAttribute10157 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_97_in_ruleFunctionAttribute10186 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_98_in_ruleFunctionAttribute10215 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_99_in_ruleFunctionAttribute10244 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_100_in_ruleFunctionAttribute10273 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_101_in_ruleFunctionAttribute10302 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_102_in_ruleFunctionAttribute10331 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_103_in_ruleFunctionAttribute10360 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_104_in_ruleFunctionAttribute10389 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_105_in_ruleFunctionAttribute10418 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_106_in_ruleFunctionAttribute10447 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_107_in_ruleFunctionAttribute10476 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_108_in_ruleFunctionAttribute10505 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_109_in_ruleFunctionAttribute10534 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_110_in_ruleFunctionAttribute10563 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_111_in_ruleFunctionAttribute10592 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_112_in_ruleFunctionAttribute10621 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_113_in_ruleFunctionAttribute10650 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_114_in_ruleFunctionAttribute10679 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_115_in_ruleFunctionAttribute10708 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_116_in_ruleFunctionAttribute10737 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_117_in_ruleFunctionAttribute10766 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_118_in_ruleFunctionAttribute10795 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_119_in_ruleFunctionAttribute10824 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_120_in_ruleFunctionAttribute10853 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_121_in_ruleFunctionAttribute10882 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleBasicBlock_in_entryRuleBasicBlock10933 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleBasicBlock10943 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleBasicBlockName_in_ruleBasicBlock10989 = new BitSet(new long[]{0xBCFFF40000020600L,0xD4000000000001FFL,0xC00003FFE0783061L,0x0000000000000019L});
          public static final BitSet FOLLOW_ruleStartingInstruction_in_ruleBasicBlock11010 = new BitSet(new long[]{0xBCFFF40000020600L,0xD4000000000001FFL,0xC00003FFE0783061L,0x0000000000000019L});
          public static final BitSet FOLLOW_ruleMiddleInstruction_in_ruleBasicBlock11032 = new BitSet(new long[]{0xBCFFF40000020600L,0xD4000000000001FFL,0xC00003FFE0783061L,0x0000000000000019L});
          public static final BitSet FOLLOW_ruleTerminatorInstruction_in_ruleBasicBlock11054 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleBasicBlockName_in_entryRuleBasicBlockName11091 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleBasicBlockName11102 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_BASIC_BLOCK_ID_in_ruleBasicBlockName11142 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataSuffix_in_entryRuleMetadataSuffix11188 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleMetadataSuffix11198 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_38_in_ruleMetadataSuffix11235 = new BitSet(new long[]{0x0000000000000100L});
          public static final BitSet FOLLOW_RULE_META_NAME_in_ruleMetadataSuffix11252 = new BitSet(new long[]{0xBCFFF4000401FDA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleMetadataRef_in_ruleMetadataSuffix11278 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleStartingInstruction_in_entryRuleStartingInstruction11314 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleStartingInstruction11324 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleLocalName_in_ruleStartingInstruction11370 = new BitSet(new long[]{0x0000000000000200L,0x0000000000000000L,0x4000000000000000L});
          public static final BitSet FOLLOW_ruleInstruction_phi_in_ruleStartingInstruction11391 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleMetadataSuffix_in_ruleStartingInstruction11412 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleMiddleInstruction_in_entryRuleMiddleInstruction11449 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleMiddleInstruction11459 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleNamedMiddleInstruction_in_ruleMiddleInstruction11507 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_store_in_ruleMiddleInstruction11526 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fence_in_ruleMiddleInstruction11545 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_call_void_in_ruleMiddleInstruction11564 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleMetadataSuffix_in_ruleMiddleInstruction11588 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleNamedMiddleInstruction_in_entryRuleNamedMiddleInstruction11625 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleNamedMiddleInstruction11635 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleLocalName_in_ruleNamedMiddleInstruction11681 = new BitSet(new long[]{0xBCFFF40000000600L,0x00000000000001FFL,0x800003FFE0603000L,0x0000000000000019L});
          public static final BitSet FOLLOW_ruleBinaryInstruction_in_ruleNamedMiddleInstruction11704 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleBitwiseBinaryInstruction_in_ruleNamedMiddleInstruction11723 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleVectorInstructions_in_ruleNamedMiddleInstruction11742 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleAggregateInstruction_in_ruleNamedMiddleInstruction11761 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_alloca_in_ruleNamedMiddleInstruction11780 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_load_in_ruleNamedMiddleInstruction11799 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_getelementptr_in_ruleNamedMiddleInstruction11818 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_cmpxchg_in_ruleNamedMiddleInstruction11837 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_atomicrmw_in_ruleNamedMiddleInstruction11856 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConversionInstruction_in_ruleNamedMiddleInstruction11875 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleOtherInstruction_in_ruleNamedMiddleInstruction11894 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_call_nonVoid_in_ruleNamedMiddleInstruction11913 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleParamName_in_entryRuleParamName11953 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleParamName11964 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_LOCAL_ID_in_ruleParamName12004 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleLocalName_in_entryRuleLocalName12051 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleLocalName12062 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_LOCAL_ID_in_ruleLocalName12102 = new BitSet(new long[]{0x0000000002040000L});
          public static final BitSet FOLLOW_RULE_WS_in_ruleLocalName12123 = new BitSet(new long[]{0x0000000002040000L});
          public static final BitSet FOLLOW_25_in_ruleLocalName12143 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleGlobalName_in_entryRuleGlobalName12185 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleGlobalName12196 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_GLOBAL_ID_in_ruleGlobalName12236 = new BitSet(new long[]{0x0000000002040000L});
          public static final BitSet FOLLOW_RULE_WS_in_ruleGlobalName12257 = new BitSet(new long[]{0x0000000002040000L});
          public static final BitSet FOLLOW_25_in_ruleGlobalName12277 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTerminatorInstruction_in_entryRuleTerminatorInstruction12318 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleTerminatorInstruction12328 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleNamedTerminatorInstruction_in_ruleTerminatorInstruction12376 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_ret_in_ruleTerminatorInstruction12395 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_br_in_ruleTerminatorInstruction12414 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_switch_in_ruleTerminatorInstruction12433 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_indirectbr_in_ruleTerminatorInstruction12452 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_resume_in_ruleTerminatorInstruction12471 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_unreachable_in_ruleTerminatorInstruction12490 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_invoke_void_in_ruleTerminatorInstruction12509 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleMetadataSuffix_in_ruleTerminatorInstruction12533 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleNamedTerminatorInstruction_in_entryRuleNamedTerminatorInstruction12570 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleNamedTerminatorInstruction12580 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleLocalName_in_ruleNamedTerminatorInstruction12626 = new BitSet(new long[]{0x0000000000000200L,0x0000000000000000L,0x0000000000000001L});
          public static final BitSet FOLLOW_ruleInstruction_invoke_nonVoid_in_ruleNamedTerminatorInstruction12647 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_ret_in_entryRuleInstruction_ret12683 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_ret12693 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_122_in_ruleInstruction_ret12736 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_ret12771 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_123_in_ruleInstruction_ret12789 = new BitSet(new long[]{0x0000000000000002L});
      }
  
      private static class FollowSets001 {
          public static final BitSet FOLLOW_ruleInstruction_br_in_entryRuleInstruction_br12826 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_br12836 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_124_in_ruleInstruction_br12879 = new BitSet(new long[]{0x0000000014080200L,0x2800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_br12915 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_br12927 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
          public static final BitSet FOLLOW_125_in_ruleInstruction_br12939 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_br12960 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_br12972 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
          public static final BitSet FOLLOW_125_in_ruleInstruction_br12984 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_br13005 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_125_in_ruleInstruction_br13025 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_br13046 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_switch_in_entryRuleInstruction_switch13084 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_switch13094 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_126_in_ruleInstruction_switch13137 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_switch13171 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_switch13183 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
          public static final BitSet FOLLOW_125_in_ruleInstruction_switch13195 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_switch13216 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
          public static final BitSet FOLLOW_78_in_ruleInstruction_switch13228 = new BitSet(new long[]{0x0000000014080200L,0x080000000000D000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_switch13250 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_switch13262 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
          public static final BitSet FOLLOW_125_in_ruleInstruction_switch13274 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_switch13295 = new BitSet(new long[]{0x0000000014080200L,0x080000000000D000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_79_in_ruleInstruction_switch13309 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_indirectbr_in_entryRuleInstruction_indirectbr13345 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_indirectbr13355 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_127_in_ruleInstruction_indirectbr13398 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_indirectbr13432 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_indirectbr13444 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
          public static final BitSet FOLLOW_78_in_ruleInstruction_indirectbr13456 = new BitSet(new long[]{0x0000000000000000L,0x2000000000008000L});
          public static final BitSet FOLLOW_125_in_ruleInstruction_indirectbr13469 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_indirectbr13490 = new BitSet(new long[]{0x0000004000000000L,0x0000000000008000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_indirectbr13503 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
          public static final BitSet FOLLOW_125_in_ruleInstruction_indirectbr13515 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_indirectbr13536 = new BitSet(new long[]{0x0000004000000000L,0x0000000000008000L});
          public static final BitSet FOLLOW_79_in_ruleInstruction_indirectbr13552 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_invoke_void_in_entryRuleInstruction_invoke_void13588 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_invoke_void13598 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_128_in_ruleInstruction_invoke_void13641 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L,0x000000000000000EL,0xFFFE000000000000L,0x000000000000007FL});
          public static final BitSet FOLLOW_ruleCConv_in_ruleInstruction_invoke_void13675 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L,0x000000000000000EL});
          public static final BitSet FOLLOW_129_in_ruleInstruction_invoke_void13734 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L,0x000000000000000EL});
          public static final BitSet FOLLOW_130_in_ruleInstruction_invoke_void13802 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L,0x000000000000000EL});
          public static final BitSet FOLLOW_131_in_ruleInstruction_invoke_void13870 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L,0x000000000000000EL});
          public static final BitSet FOLLOW_ruleVoidType_in_ruleInstruction_invoke_void13932 = new BitSet(new long[]{0xBCFFF4040401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleCallee_in_ruleInstruction_invoke_void13953 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_ruleArgList_in_ruleInstruction_invoke_void13974 = new BitSet(new long[]{0x0000010000000010L,0x03FFFFFFE0000000L});
          public static final BitSet FOLLOW_ruleFunctionAttributes_in_ruleInstruction_invoke_void13995 = new BitSet(new long[]{0x0000010000000000L});
          public static final BitSet FOLLOW_40_in_ruleInstruction_invoke_void14008 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
          public static final BitSet FOLLOW_125_in_ruleInstruction_invoke_void14020 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_invoke_void14041 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
          public static final BitSet FOLLOW_132_in_ruleInstruction_invoke_void14053 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
          public static final BitSet FOLLOW_125_in_ruleInstruction_invoke_void14065 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_invoke_void14086 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_invoke_nonVoid_in_entryRuleInstruction_invoke_nonVoid14122 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_invoke_nonVoid14132 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_128_in_ruleInstruction_invoke_nonVoid14175 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x000000000000000EL,0xFFFE0001FD000000L,0x000000000000007FL});
          public static final BitSet FOLLOW_ruleCConv_in_ruleInstruction_invoke_nonVoid14209 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x000000000000000EL,0xFFFE0001FD000000L,0x000000000000007FL});
          public static final BitSet FOLLOW_129_in_ruleInstruction_invoke_nonVoid14268 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x000000000000000EL,0xFFFE0001FD000000L,0x000000000000007FL});
          public static final BitSet FOLLOW_130_in_ruleInstruction_invoke_nonVoid14336 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x000000000000000EL,0xFFFE0001FD000000L,0x000000000000007FL});
          public static final BitSet FOLLOW_131_in_ruleInstruction_invoke_nonVoid14404 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x000000000000000EL,0xFFFE0001FD000000L,0x000000000000007FL});
          public static final BitSet FOLLOW_ruleNonVoidType_in_ruleInstruction_invoke_nonVoid14466 = new BitSet(new long[]{0xBCFFF4040401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleCallee_in_ruleInstruction_invoke_nonVoid14487 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_ruleArgList_in_ruleInstruction_invoke_nonVoid14508 = new BitSet(new long[]{0x0000010000000010L,0x03FFFFFFE0000000L});
          public static final BitSet FOLLOW_ruleFunctionAttributes_in_ruleInstruction_invoke_nonVoid14529 = new BitSet(new long[]{0x0000010000000000L});
          public static final BitSet FOLLOW_40_in_ruleInstruction_invoke_nonVoid14542 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
          public static final BitSet FOLLOW_125_in_ruleInstruction_invoke_nonVoid14554 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_invoke_nonVoid14575 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
          public static final BitSet FOLLOW_132_in_ruleInstruction_invoke_nonVoid14587 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
          public static final BitSet FOLLOW_125_in_ruleInstruction_invoke_nonVoid14599 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_invoke_nonVoid14620 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_resume_in_entryRuleInstruction_resume14656 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_resume14666 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_133_in_ruleInstruction_resume14709 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_resume14743 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_unreachable_in_entryRuleInstruction_unreachable14779 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_unreachable14789 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_134_in_ruleInstruction_unreachable14831 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_entryRuleBasicBlockRef14879 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleBasicBlockRef14889 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_LOCAL_ID_in_ruleBasicBlockRef14933 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleBinaryInstruction_in_entryRuleBinaryInstruction14968 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleBinaryInstruction14978 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_add_in_ruleBinaryInstruction15025 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fadd_in_ruleBinaryInstruction15052 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_sub_in_ruleBinaryInstruction15079 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fsub_in_ruleBinaryInstruction15106 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_mul_in_ruleBinaryInstruction15133 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fmul_in_ruleBinaryInstruction15160 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_udiv_in_ruleBinaryInstruction15187 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_sdiv_in_ruleBinaryInstruction15214 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fdiv_in_ruleBinaryInstruction15241 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_urem_in_ruleBinaryInstruction15268 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_srem_in_ruleBinaryInstruction15295 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_frem_in_ruleBinaryInstruction15322 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_add_in_entryRuleInstruction_add15357 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_add15367 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_52_in_ruleInstruction_add15410 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_56_in_ruleInstruction_add15481 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_57_in_ruleInstruction_add15549 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_add15611 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_add15632 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_add15644 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_add15665 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fadd_in_entryRuleInstruction_fadd15701 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_fadd15711 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_63_in_ruleInstruction_fadd15754 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000F80L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleFastMathFlag_in_ruleInstruction_fadd15788 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000F80L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_fadd15810 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_fadd15831 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_fadd15843 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_fadd15864 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFastMathFlag_in_entryRuleFastMathFlag15900 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleFastMathFlag15910 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_135_in_ruleFastMathFlag15964 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_136_in_ruleFastMathFlag15993 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_137_in_ruleFastMathFlag16022 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_138_in_ruleFastMathFlag16051 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_139_in_ruleFastMathFlag16080 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_sub_in_entryRuleInstruction_sub16132 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_sub16142 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_53_in_ruleInstruction_sub16185 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_56_in_ruleInstruction_sub16256 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_57_in_ruleInstruction_sub16324 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_sub16386 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_sub16407 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_sub16419 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_sub16440 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fsub_in_entryRuleInstruction_fsub16476 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_fsub16486 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_64_in_ruleInstruction_fsub16529 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000F80L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleFastMathFlag_in_ruleInstruction_fsub16563 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000F80L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_fsub16585 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_fsub16606 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_fsub16618 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_fsub16639 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_mul_in_entryRuleInstruction_mul16675 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_mul16685 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_54_in_ruleInstruction_mul16728 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_56_in_ruleInstruction_mul16799 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_57_in_ruleInstruction_mul16867 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_mul16929 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_mul16950 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_mul16962 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_mul16983 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fmul_in_entryRuleInstruction_fmul17019 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_fmul17029 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_65_in_ruleInstruction_fmul17072 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000F80L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleFastMathFlag_in_ruleInstruction_fmul17106 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000F80L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_fmul17128 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_fmul17149 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_fmul17161 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_fmul17182 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_udiv_in_entryRuleInstruction_udiv17218 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_udiv17228 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_59_in_ruleInstruction_udiv17271 = new BitSet(new long[]{0x4000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_62_in_ruleInstruction_udiv17297 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_udiv17320 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_udiv17341 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_udiv17353 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_udiv17374 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_sdiv_in_entryRuleInstruction_sdiv17410 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_sdiv17420 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_58_in_ruleInstruction_sdiv17463 = new BitSet(new long[]{0x4000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_62_in_ruleInstruction_sdiv17489 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_sdiv17512 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_sdiv17533 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_sdiv17545 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_sdiv17566 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fdiv_in_entryRuleInstruction_fdiv17602 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_fdiv17612 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_66_in_ruleInstruction_fdiv17655 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000F80L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleFastMathFlag_in_ruleInstruction_fdiv17689 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000F80L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_fdiv17711 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_fdiv17732 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_fdiv17744 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_fdiv17765 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_urem_in_entryRuleInstruction_urem17801 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_urem17811 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_67_in_ruleInstruction_urem17854 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_urem17888 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_urem17909 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_urem17921 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_urem17942 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_srem_in_entryRuleInstruction_srem17978 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_srem17988 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_68_in_ruleInstruction_srem18031 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_srem18065 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_srem18086 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_srem18098 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_srem18119 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_frem_in_entryRuleInstruction_frem18155 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_frem18165 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_69_in_ruleInstruction_frem18208 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_frem18242 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_frem18263 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_frem18275 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_frem18296 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleBitwiseBinaryInstruction_in_entryRuleBitwiseBinaryInstruction18332 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleBitwiseBinaryInstruction18342 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_shl_in_ruleBitwiseBinaryInstruction18389 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_lshr_in_ruleBitwiseBinaryInstruction18416 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_ashr_in_ruleBitwiseBinaryInstruction18443 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_and_in_ruleBitwiseBinaryInstruction18470 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_or_in_ruleBitwiseBinaryInstruction18497 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_xor_in_ruleBitwiseBinaryInstruction18524 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_shl_in_entryRuleInstruction_shl18559 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_shl18569 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_55_in_ruleInstruction_shl18612 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_56_in_ruleInstruction_shl18683 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_57_in_ruleInstruction_shl18751 = new BitSet(new long[]{0x0300000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_shl18813 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_shl18834 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_shl18846 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_shl18867 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_lshr_in_entryRuleInstruction_lshr18903 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_lshr18913 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_60_in_ruleInstruction_lshr18956 = new BitSet(new long[]{0x4000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_62_in_ruleInstruction_lshr18982 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_lshr19005 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_lshr19026 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_lshr19038 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_lshr19059 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_ashr_in_entryRuleInstruction_ashr19095 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_ashr19105 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_61_in_ruleInstruction_ashr19148 = new BitSet(new long[]{0x4000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_62_in_ruleInstruction_ashr19174 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_ashr19197 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_ashr19218 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_ashr19230 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_ashr19251 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_and_in_entryRuleInstruction_and19287 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_and19297 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_70_in_ruleInstruction_and19340 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_and19374 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_and19395 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_and19407 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_and19428 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_or_in_entryRuleInstruction_or19464 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_or19474 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_71_in_ruleInstruction_or19517 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_or19551 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_or19572 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_or19584 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_or19605 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_xor_in_entryRuleInstruction_xor19641 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_xor19651 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_72_in_ruleInstruction_xor19694 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_xor19728 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_xor19749 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_xor19761 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_xor19782 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleVectorInstructions_in_entryRuleVectorInstructions19818 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleVectorInstructions19828 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_extractelement_in_ruleVectorInstructions19875 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_insertelement_in_ruleVectorInstructions19902 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_shufflevector_in_ruleVectorInstructions19929 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_extractelement_in_entryRuleInstruction_extractelement19964 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_extractelement19974 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_47_in_ruleInstruction_extractelement20017 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_extractelement20051 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_extractelement20063 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_extractelement20084 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_insertelement_in_entryRuleInstruction_insertelement20120 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_insertelement20130 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_48_in_ruleInstruction_insertelement20173 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_insertelement20207 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_insertelement20219 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_insertelement20240 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_insertelement20252 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_insertelement20273 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_shufflevector_in_entryRuleInstruction_shufflevector20309 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_shufflevector20319 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_49_in_ruleInstruction_shufflevector20362 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_shufflevector20396 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_shufflevector20408 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_shufflevector20429 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_shufflevector20441 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_shufflevector20462 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleAggregateInstruction_in_entryRuleAggregateInstruction20498 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleAggregateInstruction20508 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_extractvalue_in_ruleAggregateInstruction20555 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_insertvalue_in_ruleAggregateInstruction20582 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_extractvalue_in_entryRuleInstruction_extractvalue20617 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_extractvalue20627 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_50_in_ruleInstruction_extractvalue20670 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_extractvalue20704 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_extractvalue20717 = new BitSet(new long[]{0xBCFFF4000401FC20L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleConstant_in_ruleInstruction_extractvalue20738 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_insertvalue_in_entryRuleInstruction_insertvalue20776 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_insertvalue20786 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_51_in_ruleInstruction_insertvalue20829 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_insertvalue20863 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_insertvalue20875 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_insertvalue20896 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_insertvalue20909 = new BitSet(new long[]{0xBCFFF4000401FC20L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleConstant_in_ruleInstruction_insertvalue20930 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_alloca_in_entryRuleInstruction_alloca20970 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_alloca20980 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_140_in_ruleInstruction_alloca21023 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_alloca21057 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_alloca21070 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_alloca21091 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_alloca21106 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
          public static final BitSet FOLLOW_ruleAlign_in_ruleInstruction_alloca21127 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_load_in_entryRuleInstruction_load21165 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_load21175 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_141_in_ruleInstruction_load21218 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000024000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_142_in_ruleInstruction_load21246 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_load21269 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_load21282 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
          public static final BitSet FOLLOW_ruleAlign_in_ruleInstruction_load21303 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_load21318 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
          public static final BitSet FOLLOW_143_in_ruleInstruction_load21330 = new BitSet(new long[]{0xBCFFF4000401FDA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleMetadataRef_in_ruleInstruction_load21351 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_load21366 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000010000L});
          public static final BitSet FOLLOW_144_in_ruleInstruction_load21378 = new BitSet(new long[]{0xBCFFF4000401FDA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleMetadataRef_in_ruleInstruction_load21399 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_145_in_ruleInstruction_load21421 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000004000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_142_in_ruleInstruction_load21434 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_load21457 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L,0x0000000000007E00L});
          public static final BitSet FOLLOW_146_in_ruleInstruction_load21470 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L,0x0000000000007E00L});
          public static final BitSet FOLLOW_ruleOrdering_in_ruleInstruction_load21493 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
          public static final BitSet FOLLOW_ruleAlign_in_ruleInstruction_load21514 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_store_in_entryRuleInstruction_store21552 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_store21562 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_147_in_ruleInstruction_store21605 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000024000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_142_in_ruleInstruction_store21633 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_store21656 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_store21668 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_store21689 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_store21702 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
          public static final BitSet FOLLOW_ruleAlign_in_ruleInstruction_store21723 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_store21738 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000008000L});
          public static final BitSet FOLLOW_143_in_ruleInstruction_store21750 = new BitSet(new long[]{0xBCFFF4000401FDA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleMetadataRef_in_ruleInstruction_store21771 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_145_in_ruleInstruction_store21793 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000004000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_142_in_ruleInstruction_store21806 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_store21829 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_store21850 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L,0x0000000000007E00L});
          public static final BitSet FOLLOW_146_in_ruleInstruction_store21863 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L,0x0000000000007E00L});
          public static final BitSet FOLLOW_ruleOrdering_in_ruleInstruction_store21886 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
          public static final BitSet FOLLOW_ruleAlign_in_ruleInstruction_store21907 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fence_in_entryRuleInstruction_fence21945 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_fence21955 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_148_in_ruleInstruction_fence21998 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L,0x0000000000007E00L});
          public static final BitSet FOLLOW_146_in_ruleInstruction_fence22024 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L,0x0000000000007E00L});
          public static final BitSet FOLLOW_ruleOrdering_in_ruleInstruction_fence22047 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_cmpxchg_in_entryRuleInstruction_cmpxchg22083 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_cmpxchg22093 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_149_in_ruleInstruction_cmpxchg22136 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000004000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_142_in_ruleInstruction_cmpxchg22162 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_cmpxchg22185 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_cmpxchg22197 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_cmpxchg22218 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_cmpxchg22230 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_cmpxchg22251 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L,0x0000000000007E00L});
          public static final BitSet FOLLOW_146_in_ruleInstruction_cmpxchg22264 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L,0x0000000000007E00L});
          public static final BitSet FOLLOW_ruleOrdering_in_ruleInstruction_cmpxchg22287 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_atomicrmw_in_entryRuleInstruction_atomicrmw22323 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_atomicrmw22333 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_150_in_ruleInstruction_atomicrmw22376 = new BitSet(new long[]{0x0030000000000000L,0x00000000000001C0L,0x000000001F804000L});
          public static final BitSet FOLLOW_142_in_ruleInstruction_atomicrmw22402 = new BitSet(new long[]{0x0030000000000000L,0x00000000000001C0L,0x000000001F804000L});
          public static final BitSet FOLLOW_ruleAtomicrmw_operation_in_ruleInstruction_atomicrmw22425 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_atomicrmw22446 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_atomicrmw22458 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_atomicrmw22479 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L,0x0000000000007E00L});
          public static final BitSet FOLLOW_146_in_ruleInstruction_atomicrmw22492 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L,0x0000000000007E00L});
          public static final BitSet FOLLOW_ruleOrdering_in_ruleInstruction_atomicrmw22515 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleAtomicrmw_operation_in_entryRuleAtomicrmw_operation22552 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleAtomicrmw_operation22563 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_151_in_ruleAtomicrmw_operation22601 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_52_in_ruleAtomicrmw_operation22620 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_53_in_ruleAtomicrmw_operation22639 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_70_in_ruleAtomicrmw_operation22658 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_152_in_ruleAtomicrmw_operation22677 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_71_in_ruleAtomicrmw_operation22696 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_72_in_ruleAtomicrmw_operation22715 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_153_in_ruleAtomicrmw_operation22734 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_154_in_ruleAtomicrmw_operation22753 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_155_in_ruleAtomicrmw_operation22772 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_156_in_ruleAtomicrmw_operation22791 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_getelementptr_in_entryRuleInstruction_getelementptr22831 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_getelementptr22841 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_42_in_ruleInstruction_getelementptr22884 = new BitSet(new long[]{0x0000080014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_43_in_ruleInstruction_getelementptr22910 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_getelementptr22933 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_getelementptr22946 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_getelementptr22967 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleConversionInstruction_in_entryRuleConversionInstruction23005 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConversionInstruction23015 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConvertionOpcode_in_ruleConversionInstruction23061 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleConversionInstruction23082 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleConversionInstruction23103 = new BitSet(new long[]{0x0000010000000000L});
          public static final BitSet FOLLOW_40_in_ruleConversionInstruction23115 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleConversionInstruction23136 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleConvertionOpcode_in_entryRuleConvertionOpcode23173 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleConvertionOpcode23184 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_157_in_ruleConvertionOpcode23222 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_158_in_ruleConvertionOpcode23241 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_159_in_ruleConvertionOpcode23260 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_160_in_ruleConvertionOpcode23279 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_161_in_ruleConvertionOpcode23298 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_162_in_ruleConvertionOpcode23317 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_163_in_ruleConvertionOpcode23336 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_164_in_ruleConvertionOpcode23355 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_165_in_ruleConvertionOpcode23374 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_166_in_ruleConvertionOpcode23393 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_167_in_ruleConvertionOpcode23412 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_168_in_ruleConvertionOpcode23431 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_169_in_ruleConvertionOpcode23450 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleOtherInstruction_in_entryRuleOtherInstruction23490 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleOtherInstruction23500 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_icmp_in_ruleOtherInstruction23547 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fcmp_in_ruleOtherInstruction23574 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_select_in_ruleOtherInstruction23601 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_va_arg_in_ruleOtherInstruction23628 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_landingpad_in_ruleOtherInstruction23655 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_icmp_in_entryRuleInstruction_icmp23690 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_icmp23700 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_45_in_ruleInstruction_icmp23743 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x000FFC0000000000L});
          public static final BitSet FOLLOW_ruleIcmpCondition_in_ruleInstruction_icmp23777 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_icmp23798 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_icmp23819 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_icmp23831 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_icmp23852 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleIcmpCondition_in_entryRuleIcmpCondition23889 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleIcmpCondition23900 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_170_in_ruleIcmpCondition23938 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_171_in_ruleIcmpCondition23957 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_172_in_ruleIcmpCondition23976 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_173_in_ruleIcmpCondition23995 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_174_in_ruleIcmpCondition24014 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_175_in_ruleIcmpCondition24033 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_176_in_ruleIcmpCondition24052 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_177_in_ruleIcmpCondition24071 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_178_in_ruleIcmpCondition24090 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_179_in_ruleIcmpCondition24109 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_fcmp_in_entryRuleInstruction_fcmp24149 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_fcmp24159 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_46_in_ruleInstruction_fcmp24202 = new BitSet(new long[]{0x0000000000002000L,0x0000000000000000L,0x3FF0F00000000000L});
          public static final BitSet FOLLOW_ruleFcmpCondition_in_ruleInstruction_fcmp24236 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_fcmp24257 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_fcmp24278 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_fcmp24290 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_fcmp24311 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFcmpCondition_in_entryRuleFcmpCondition24348 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleFcmpCondition24359 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_BOOLEAN_in_ruleFcmpCondition24399 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_180_in_ruleFcmpCondition24423 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_181_in_ruleFcmpCondition24442 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_182_in_ruleFcmpCondition24461 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_183_in_ruleFcmpCondition24480 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_184_in_ruleFcmpCondition24499 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_185_in_ruleFcmpCondition24518 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_186_in_ruleFcmpCondition24537 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_187_in_ruleFcmpCondition24556 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_172_in_ruleFcmpCondition24575 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_173_in_ruleFcmpCondition24594 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_174_in_ruleFcmpCondition24613 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_175_in_ruleFcmpCondition24632 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_188_in_ruleFcmpCondition24651 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_189_in_ruleFcmpCondition24670 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_phi_in_entryRuleInstruction_phi24710 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_phi24720 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_190_in_ruleInstruction_phi24763 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_phi24797 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
          public static final BitSet FOLLOW_78_in_ruleInstruction_phi24810 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_phi24831 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_phi24843 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_phi24864 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
          public static final BitSet FOLLOW_79_in_ruleInstruction_phi24876 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_phi24890 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
          public static final BitSet FOLLOW_78_in_ruleInstruction_phi24902 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleInstruction_phi24923 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_phi24935 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleBasicBlockRef_in_ruleInstruction_phi24956 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
          public static final BitSet FOLLOW_79_in_ruleInstruction_phi24968 = new BitSet(new long[]{0x0000004000000002L});
          public static final BitSet FOLLOW_ruleInstruction_select_in_entryRuleInstruction_select25006 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_select25016 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_44_in_ruleInstruction_select25059 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_select25093 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_select25105 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_select25126 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_select25138 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_select25159 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_call_nonVoid_in_entryRuleInstruction_call_nonVoid25195 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_call_nonVoid25205 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_191_in_ruleInstruction_call_nonVoid25248 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
          public static final BitSet FOLLOW_192_in_ruleInstruction_call_nonVoid25280 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x000000000000000EL,0xFFFE0001FD3F8000L,0x000000000000007FL});
          public static final BitSet FOLLOW_ruleCConv_in_ruleInstruction_call_nonVoid25314 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x000000000000000EL,0xFFFE0001FD3F8000L,0x000000000000007FL});
          public static final BitSet FOLLOW_ruleParameterAttributes_in_ruleInstruction_call_nonVoid25336 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x000000000000000EL,0xFFFE0001FD000000L,0x000000000000007FL});
          public static final BitSet FOLLOW_ruleNonVoidType_in_ruleInstruction_call_nonVoid25358 = new BitSet(new long[]{0xBCFFF4040401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleCallee_in_ruleInstruction_call_nonVoid25379 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_ruleArgList_in_ruleInstruction_call_nonVoid25400 = new BitSet(new long[]{0x0000000000000012L,0x03FFFFFFE0000000L});
          public static final BitSet FOLLOW_ruleFunctionAttributes_in_ruleInstruction_call_nonVoid25421 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_call_void_in_entryRuleInstruction_call_void25458 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_call_void25468 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_191_in_ruleInstruction_call_void25511 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000001L});
          public static final BitSet FOLLOW_192_in_ruleInstruction_call_void25543 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L,0x000000000000000EL,0xFFFE0000003F8000L,0x000000000000007FL});
      }
  
      private static class FollowSets002 {
          public static final BitSet FOLLOW_ruleCConv_in_ruleInstruction_call_void25577 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L,0x000000000000000EL,0x00000000003F8000L});
          public static final BitSet FOLLOW_ruleParameterAttributes_in_ruleInstruction_call_void25599 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000000L});
          public static final BitSet FOLLOW_ruleVoidType_in_ruleInstruction_call_void25621 = new BitSet(new long[]{0xBCFFF4040401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleCallee_in_ruleInstruction_call_void25642 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_ruleArgList_in_ruleInstruction_call_void25663 = new BitSet(new long[]{0x0000000000000012L,0x03FFFFFFE0000000L});
          public static final BitSet FOLLOW_ruleFunctionAttributes_in_ruleInstruction_call_void25684 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleArgList_in_entryRuleArgList25721 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleArgList25731 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_39_in_ruleArgList25777 = new BitSet(new long[]{0x0000020014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleArgument_in_ruleArgList25799 = new BitSet(new long[]{0x0000024000000000L});
          public static final BitSet FOLLOW_38_in_ruleArgList25812 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleArgument_in_ruleArgList25833 = new BitSet(new long[]{0x0000024000000000L});
          public static final BitSet FOLLOW_41_in_ruleArgList25849 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleCallee_in_entryRuleCallee25885 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleCallee25895 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleCallee25942 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInlineAssembler_in_ruleCallee25969 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInlineAssembler_in_entryRuleInlineAssembler26004 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInlineAssembler26014 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_34_in_ruleInlineAssembler26051 = new BitSet(new long[]{0x0000000000000040L,0x0000000020000000L,0x0000000000000000L,0x0000000000000006L});
          public static final BitSet FOLLOW_193_in_ruleInlineAssembler26064 = new BitSet(new long[]{0x0000000000000040L,0x0000000020000000L,0x0000000000000000L,0x0000000000000004L});
          public static final BitSet FOLLOW_93_in_ruleInlineAssembler26079 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000000L,0x0000000000000000L,0x0000000000000004L});
          public static final BitSet FOLLOW_194_in_ruleInlineAssembler26094 = new BitSet(new long[]{0x0000000000000040L});
          public static final BitSet FOLLOW_RULE_STRING_in_ruleInlineAssembler26113 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInlineAssembler26130 = new BitSet(new long[]{0x0000000000000040L});
          public static final BitSet FOLLOW_RULE_STRING_in_ruleInlineAssembler26147 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_va_arg_in_entryRuleInstruction_va_arg26188 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_va_arg26198 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_195_in_ruleInstruction_va_arg26241 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_va_arg26275 = new BitSet(new long[]{0x0000004000000000L});
          public static final BitSet FOLLOW_38_in_ruleInstruction_va_arg26287 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_va_arg26308 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleInstruction_landingpad_in_entryRuleInstruction_landingpad26344 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleInstruction_landingpad26354 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_196_in_ruleInstruction_landingpad26397 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleInstruction_landingpad26431 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000020L});
          public static final BitSet FOLLOW_197_in_ruleInstruction_landingpad26443 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleInstruction_landingpad26464 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x00000000000001C0L});
          public static final BitSet FOLLOW_ruleLandingpadClause_in_ruleInstruction_landingpad26486 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000180L});
          public static final BitSet FOLLOW_198_in_ruleInstruction_landingpad26504 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000180L});
          public static final BitSet FOLLOW_ruleLandingpadClause_in_ruleInstruction_landingpad26526 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000000000180L});
          public static final BitSet FOLLOW_ruleLandingpadClause_in_entryRuleLandingpadClause26563 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleLandingpadClause26573 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_199_in_ruleLandingpadClause26617 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleTypedValue_in_ruleLandingpadClause26651 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_200_in_ruleLandingpadClause26677 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
          public static final BitSet FOLLOW_ruleArrayType_in_ruleLandingpadClause26711 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
          public static final BitSet FOLLOW_ruleArrayConstant_in_ruleLandingpadClause26732 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleOrdering_in_entryRuleOrdering26770 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleOrdering26781 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_201_in_ruleOrdering26819 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_202_in_ruleOrdering26838 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_203_in_ruleOrdering26857 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_204_in_ruleOrdering26876 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_205_in_ruleOrdering26895 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_206_in_ruleOrdering26914 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTypedValue_in_entryRuleTypedValue26954 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleTypedValue26964 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleType_in_ruleTypedValue27010 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleTypedValue27031 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleParameterType_in_entryRuleParameterType27067 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleParameterType27077 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleType_in_ruleParameterType27123 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x000000000000000EL,0x00000000003F8000L});
          public static final BitSet FOLLOW_ruleParameterAttributes_in_ruleParameterType27144 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleParameterAttributes_in_entryRuleParameterAttributes27181 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleParameterAttributes27191 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleParameterAttribute_in_ruleParameterAttributes27236 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x000000000000000EL,0x00000000003F8000L});
          public static final BitSet FOLLOW_ruleParameterAttribute_in_entryRuleParameterAttribute27273 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleParameterAttribute27284 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_129_in_ruleParameterAttribute27322 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_130_in_ruleParameterAttribute27341 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_131_in_ruleParameterAttribute27360 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_207_in_ruleParameterAttribute27380 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
          public static final BitSet FOLLOW_87_in_ruleParameterAttribute27394 = new BitSet(new long[]{0x0000000000000020L});
          public static final BitSet FOLLOW_RULE_INTEGER_in_ruleParameterAttribute27409 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_208_in_ruleParameterAttribute27436 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_209_in_ruleParameterAttribute27455 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_210_in_ruleParameterAttribute27474 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_211_in_ruleParameterAttribute27493 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_212_in_ruleParameterAttribute27512 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_213_in_ruleParameterAttribute27531 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleArgument_in_entryRuleArgument27571 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleArgument27581 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleParameterType_in_ruleArgument27627 = new BitSet(new long[]{0xBCFFF4000401FFA0L,0x0000000000015FFFL,0x000003FFE0000000L});
          public static final BitSet FOLLOW_ruleValueRef_in_ruleArgument27648 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleParameter_in_entryRuleParameter27684 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleParameter27694 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleParameterType_in_ruleParameter27740 = new BitSet(new long[]{0x0000000000000200L});
          public static final BitSet FOLLOW_ruleParamName_in_ruleParameter27761 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleNonVoidType_in_entryRuleNonVoidType27797 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleNonVoidType27807 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleVoidType_in_ruleNonVoidType27854 = new BitSet(new long[]{0x0000008000000000L});
          public static final BitSet FOLLOW_ruleTypeSuffix_in_ruleNonVoidType27875 = new BitSet(new long[]{0x0000008000000002L});
          public static final BitSet FOLLOW_ruleNonLeftRecursiveNonVoidType_in_ruleNonVoidType27905 = new BitSet(new long[]{0x0000008000000002L,0x0000000000200000L,0x0000000000000000L,0x0000000000400000L});
          public static final BitSet FOLLOW_ruleStar_in_ruleNonVoidType27926 = new BitSet(new long[]{0x0000008000000002L,0x0000000000200000L,0x0000000000000000L,0x0000000000400000L});
          public static final BitSet FOLLOW_ruleTypeSuffix_in_ruleNonVoidType27948 = new BitSet(new long[]{0x0000008000000002L});
          public static final BitSet FOLLOW_ruleStar_in_entryRuleStar27986 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleStar27996 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleAddressSpace_in_ruleStar28051 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000400000L});
          public static final BitSet FOLLOW_214_in_ruleStar28064 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleType_in_entryRuleType28100 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleType28110 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleNonLeftRecursiveType_in_ruleType28156 = new BitSet(new long[]{0x0000008000000002L,0x0000000000200000L,0x0000000000000000L,0x0000000000400000L});
          public static final BitSet FOLLOW_ruleStar_in_ruleType28177 = new BitSet(new long[]{0x0000008000000002L,0x0000000000200000L,0x0000000000000000L,0x0000000000400000L});
          public static final BitSet FOLLOW_ruleTypeSuffix_in_ruleType28199 = new BitSet(new long[]{0x0000008000000002L});
          public static final BitSet FOLLOW_ruleTypeSuffix_in_entryRuleTypeSuffix28236 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleTypeSuffix28246 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_39_in_ruleTypeSuffix28292 = new BitSet(new long[]{0x0000020014080200L,0x0800000010005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleParameterType_in_ruleTypeSuffix28315 = new BitSet(new long[]{0x0000024000000000L});
          public static final BitSet FOLLOW_38_in_ruleTypeSuffix28328 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleParameterType_in_ruleTypeSuffix28349 = new BitSet(new long[]{0x0000024000000000L});
          public static final BitSet FOLLOW_38_in_ruleTypeSuffix28364 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
          public static final BitSet FOLLOW_92_in_ruleTypeSuffix28382 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_92_in_ruleTypeSuffix28423 = new BitSet(new long[]{0x0000020000000000L});
          public static final BitSet FOLLOW_41_in_ruleTypeSuffix28449 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L,0x0000000000000000L,0x0000000000400000L});
          public static final BitSet FOLLOW_ruleStar_in_ruleTypeSuffix28470 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L,0x0000000000000000L,0x0000000000400000L});
          public static final BitSet FOLLOW_ruleNonLeftRecursiveType_in_entryRuleNonLeftRecursiveType28507 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleNonLeftRecursiveType28517 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleIntType_in_ruleNonLeftRecursiveType28565 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFloatingType_in_ruleNonLeftRecursiveType28584 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleVectorType_in_ruleNonLeftRecursiveType28603 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleArrayType_in_ruleNonLeftRecursiveType28622 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleX86mmxType_in_ruleNonLeftRecursiveType28641 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleVoidType_in_ruleNonLeftRecursiveType28660 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataType_in_ruleNonLeftRecursiveType28679 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleStructType_in_ruleNonLeftRecursiveType28698 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleOpaqueType_in_ruleNonLeftRecursiveType28717 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_LOCAL_ID_in_ruleNonLeftRecursiveType28746 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleNonLeftRecursiveNonVoidType_in_entryRuleNonLeftRecursiveNonVoidType28782 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleNonLeftRecursiveNonVoidType28792 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleIntType_in_ruleNonLeftRecursiveNonVoidType28840 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFloatingType_in_ruleNonLeftRecursiveNonVoidType28859 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleVectorType_in_ruleNonLeftRecursiveNonVoidType28878 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleArrayType_in_ruleNonLeftRecursiveNonVoidType28897 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleX86mmxType_in_ruleNonLeftRecursiveNonVoidType28916 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataType_in_ruleNonLeftRecursiveNonVoidType28935 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleStructType_in_ruleNonLeftRecursiveNonVoidType28954 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleOpaqueType_in_ruleNonLeftRecursiveNonVoidType28973 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_LOCAL_ID_in_ruleNonLeftRecursiveNonVoidType29002 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleTypeDef_in_entryRuleTypeDef29038 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleTypeDef29048 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleLocalName_in_ruleTypeDef29094 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000800000L});
          public static final BitSet FOLLOW_215_in_ruleTypeDef29106 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x000000000000000EL,0xFFFE0001FD000000L,0x000000000000007FL});
          public static final BitSet FOLLOW_ruleNonVoidType_in_ruleTypeDef29127 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleIntType_in_entryRuleIntType29165 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleIntType29175 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_RULE_INT_TYPE_in_ruleIntType29211 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleOpaqueType_in_entryRuleOpaqueType29255 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleOpaqueType29265 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_216_in_ruleOpaqueType29302 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleStructType_in_entryRuleStructType29347 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleStructType29357 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_26_in_ruleStructType29405 = new BitSet(new long[]{0x000000001C080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleStructType29427 = new BitSet(new long[]{0x0000004008000000L});
          public static final BitSet FOLLOW_38_in_ruleStructType29440 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleStructType29461 = new BitSet(new long[]{0x0000004008000000L});
          public static final BitSet FOLLOW_27_in_ruleStructType29477 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_76_in_ruleStructType29503 = new BitSet(new long[]{0x0000000004000000L});
          public static final BitSet FOLLOW_26_in_ruleStructType29528 = new BitSet(new long[]{0x000000001C080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleStructType29550 = new BitSet(new long[]{0x0000004008000000L});
          public static final BitSet FOLLOW_38_in_ruleStructType29563 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleStructType29584 = new BitSet(new long[]{0x0000004008000000L});
          public static final BitSet FOLLOW_27_in_ruleStructType29600 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
          public static final BitSet FOLLOW_77_in_ruleStructType29612 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleVectorType_in_entryRuleVectorType29650 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleVectorType29660 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_76_in_ruleVectorType29697 = new BitSet(new long[]{0x0000000000000020L});
          public static final BitSet FOLLOW_RULE_INTEGER_in_ruleVectorType29714 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000002000000L});
          public static final BitSet FOLLOW_217_in_ruleVectorType29731 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleVectorType29752 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
          public static final BitSet FOLLOW_77_in_ruleVectorType29764 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleArrayType_in_entryRuleArrayType29800 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleArrayType29810 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_78_in_ruleArrayType29847 = new BitSet(new long[]{0x0000000000000020L});
          public static final BitSet FOLLOW_RULE_INTEGER_in_ruleArrayType29864 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000002000000L});
          public static final BitSet FOLLOW_217_in_ruleArrayType29881 = new BitSet(new long[]{0x0000000014080200L,0x0800000000005000L,0x0000000000000000L,0x0001FFFFFD000000L,0x0000000000000380L});
          public static final BitSet FOLLOW_ruleType_in_ruleArrayType29902 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
          public static final BitSet FOLLOW_79_in_ruleArrayType29914 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleX86mmxType_in_entryRuleX86mmxType29950 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleX86mmxType29960 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_218_in_ruleX86mmxType29997 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleVoidType_in_entryRuleVoidType30042 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleVoidType30052 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_123_in_ruleVoidType30089 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleMetadataType_in_entryRuleMetadataType30134 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleMetadataType30144 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_28_in_ruleMetadataType30181 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleFloatingType_in_entryRuleFloatingType30226 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleFloatingType30236 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_219_in_ruleFloatingType30274 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_220_in_ruleFloatingType30292 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_221_in_ruleFloatingType30310 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_222_in_ruleFloatingType30328 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_223_in_ruleFloatingType30346 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_224_in_ruleFloatingType30364 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleLinkage_in_entryRuleLinkage30411 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleLinkage30422 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_225_in_ruleLinkage30460 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_226_in_ruleLinkage30479 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_227_in_ruleLinkage30498 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_228_in_ruleLinkage30517 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_229_in_ruleLinkage30536 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_230_in_ruleLinkage30555 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_231_in_ruleLinkage30574 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_232_in_ruleLinkage30593 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_233_in_ruleLinkage30612 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_234_in_ruleLinkage30631 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_235_in_ruleLinkage30650 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_236_in_ruleLinkage30669 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_237_in_ruleLinkage30688 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_238_in_ruleLinkage30707 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_239_in_ruleLinkage30726 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_240_in_ruleLinkage30745 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleCConv_in_entryRuleCConv30785 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleCConv30795 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_241_in_ruleCConv30840 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_242_in_ruleCConv30869 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_243_in_ruleCConv30898 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_244_in_ruleCConv30927 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_245_in_ruleCConv30956 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_246_in_ruleCConv30985 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_247_in_ruleCConv31014 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_248_in_ruleCConv31043 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_249_in_ruleCConv31072 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_250_in_ruleCConv31101 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_251_in_ruleCConv31130 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_252_in_ruleCConv31159 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_253_in_ruleCConv31188 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_254_in_ruleCConv31217 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_255_in_ruleCConv31246 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_256_in_ruleCConv31275 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_257_in_ruleCConv31304 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_258_in_ruleCConv31333 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_259_in_ruleCConv31362 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_260_in_ruleCConv31391 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_261_in_ruleCConv31420 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_262_in_ruleCConv31461 = new BitSet(new long[]{0x0000000000000020L});
          public static final BitSet FOLLOW_RULE_INTEGER_in_ruleCConv31491 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleVisibility_in_entryRuleVisibility31534 = new BitSet(new long[]{0x0000000000000000L});
          public static final BitSet FOLLOW_EOF_in_entryRuleVisibility31545 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_263_in_ruleVisibility31583 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_264_in_ruleVisibility31602 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_265_in_ruleVisibility31621 = new BitSet(new long[]{0x0000000000000002L});
          public static final BitSet FOLLOW_ruleStructureConstant_in_synpred1_InternalLLVM_IR2822 = new BitSet(new long[]{0x0000000000000002L});
      }
  
  
  }