Changes in directory llvm/lib/Bytecode/Reader:
Reader.cpp updated: 1.191 -> 1.192 --- Log message: Add shufflevector reading support --- Diffs of the changes: (+22 -0) Reader.cpp | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+) Index: llvm/lib/Bytecode/Reader/Reader.cpp diff -u llvm/lib/Bytecode/Reader/Reader.cpp:1.191 llvm/lib/Bytecode/Reader/Reader.cpp:1.192 --- llvm/lib/Bytecode/Reader/Reader.cpp:1.191 Fri Apr 7 00:00:02 2006 +++ llvm/lib/Bytecode/Reader/Reader.cpp Fri Apr 7 20:17:59 2006 @@ -734,6 +734,20 @@ getValue(Type::UIntTyID, Oprnds[2])); break; } + case Instruction::ShuffleVector: { + const PackedType *PackedTy = dyn_cast<PackedType>(InstTy); + if (!PackedTy || Oprnds.size() != 3) + throw std::string("Invalid shufflevector instruction!"); + Value *V1 = getValue(iType, Oprnds[0]); + Value *V2 = getValue(iType, Oprnds[1]); + const PackedType *EltTy = + PackedType::get(Type::UIntTy, PackedTy->getNumElements()); + Value *V3 = getValue(getTypeSlot(EltTy), Oprnds[2]); + if (!ShuffleVectorInst::isValidOperands(V1, V2, V3)) + throw std::string("Invalid shufflevector instruction!"); + Result = new ShuffleVectorInst(V1, V2, V3); + break; + } case Instruction::Cast: Result = new CastInst(getValue(iType, Oprnds[0]), getSanitizedType(Oprnds[1])); @@ -1493,6 +1507,14 @@ ConstantExpr::getInsertElement(ArgVec[0], ArgVec[1], ArgVec[2]); if (Handler) Handler->handleConstantExpression(Opcode, ArgVec, Result); return Result; + } else if (Opcode == Instruction::ShuffleVector) { + if (ArgVec.size() != 3 || + !ShuffleVectorInst::isValidOperands(ArgVec[0], ArgVec[1], ArgVec[2])) + error("shufflevector constant expr must have three arguments."); + Constant *Result = + ConstantExpr::getShuffleVector(ArgVec[0], ArgVec[1], ArgVec[2]); + if (Handler) Handler->handleConstantExpression(Opcode, ArgVec, Result); + return Result; } else { // All other 2-operand expressions Constant* Result = ConstantExpr::get(Opcode, ArgVec[0], ArgVec[1]); if (Handler) Handler->handleConstantExpression(Opcode, ArgVec, Result); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits