aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2006-04-08 01:18:35 +0000
committerChris Lattner <sabre@nondot.org>2006-04-08 01:18:35 +0000
commit4c94908b64ffd89575d2ba19db705bf9618f4da7 (patch)
treeb528483845d4ce375334a247633797f941c86ee9
parent00f1023cf8b30c74dc219525f518a80c45b6e7ba (diff)
Parse shufflevector
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27511 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/AsmParser/Lexer.l1
-rw-r--r--lib/AsmParser/llvmAsmParser.y7
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/AsmParser/Lexer.l b/lib/AsmParser/Lexer.l
index 2fa4ec11ea..f930609684 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 5d9fada8dc..d77b7eebfc 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 <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())