From: Chris Lattner Date: Sat, 8 Apr 2006 01:18:35 +0000 (+0000) Subject: Parse shufflevector X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=4c94908b64ffd89575d2ba19db705bf9618f4da7;p=oota-llvm.git Parse shufflevector git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27511 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AsmParser/Lexer.l b/lib/AsmParser/Lexer.l index 2fa4ec11ea8..f9306096847 100644 --- a/lib/AsmParser/Lexer.l +++ b/lib/AsmParser/Lexer.l @@ -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} { diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index 5d9fada8dca..d77b7eebfc7 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -998,7 +998,7 @@ Module *llvm::RunVMAsmParser(const char * AsmString, Module * M) { // Other Operators %type ShiftOps %token PHI_TOK CAST SELECT SHL SHR VAARG -%token EXTRACTELEMENT INSERTELEMENT +%token 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())