Parse shufflevector
authorChris Lattner <sabre@nondot.org>
Sat, 8 Apr 2006 01:18:35 +0000 (01:18 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 8 Apr 2006 01:18:35 +0000 (01:18 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27511 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AsmParser/Lexer.l
lib/AsmParser/llvmAsmParser.y

index 2fa4ec11ea851cd92f1da4e946dd61d37a3b83db..f93060968479b4744efe5bb0712fd6e50382e3af 100644 (file)
@@ -277,6 +277,7 @@ getelementptr   { RET_TOK(MemOpVal, GetElementPtr, GETELEMENTPTR); }
 
 extractelement  { RET_TOK(OtherOpVal, ExtractElement, EXTRACTELEMENT); }
 insertelement   { RET_TOK(OtherOpVal, InsertElement, INSERTELEMENT); }
+shufflevector   { RET_TOK(OtherOpVal, ShuffleVector, SHUFFLEVECTOR); }
 
 
 {VarID}         {
index 5d9fada8dcadee01e35cd23e283df82137e6c1cb..d77b7eebfc76d103bc3f90085bbeb0700fe70b7f 100644 (file)
@@ -998,7 +998,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) {
 // Other Operators
 %type  <OtherOpVal> ShiftOps
 %token <OtherOpVal> PHI_TOK CAST SELECT SHL SHR VAARG
-%token <OtherOpVal> EXTRACTELEMENT INSERTELEMENT
+%token <OtherOpVal> EXTRACTELEMENT INSERTELEMENT SHUFFLEVECTOR
 %token VAARG_old VANEXT_old //OBSOLETE
 
 
@@ -2260,6 +2260,11 @@ InstVal : ArithmeticOps Types ValueRef ',' ValueRef {
       ThrowException("Third operand of insertelement must be uint!");
     $$ = new InsertElementInst($2, $4, $6);
   }
+  | SHUFFLEVECTOR ResolvedVal ',' ResolvedVal ',' ResolvedVal {
+    if (!ShuffleVectorInst::isValidOperands($2, $4, $6))
+      ThrowException("Invalid shufflevector operands!");
+    $$ = new ShuffleVectorInst($2, $4, $6);
+  }
   | PHI_TOK PHIList {
     const Type *Ty = $2->front().first->getType();
     if (!Ty->isFirstClassType())