Chromium Code Reviews| Index: lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp |
| diff --git a/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp b/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp |
| index 8f6da8d4c533b02eaca459c1d33c72569cbcf1f6..65e21cd973cb7785d2630c3434b062a8502c3389 100644 |
| --- a/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp |
| +++ b/lib/Bitcode/NaCl/Writer/NaClBitcodeWriter.cpp |
| @@ -285,6 +285,14 @@ static void WriteTypeTable(const NaClValueEnumerator &VE, |
| Code = naclbitc::TYPE_CODE_INTEGER; |
| TypeVals.push_back(cast<IntegerType>(T)->getBitWidth()); |
| break; |
| + case Type::VectorTyID: { |
|
Mark Seaborn
2014/04/09 15:03:03
Can you add a reader/writer vector test to test/Na
JF
2014/04/15 20:22:36
Done, see test/NaCl/Bitcode/vector.ll
|
| + VectorType *VT = cast<VectorType>(T); |
| + // VECTOR [numelts, eltty] |
| + Code = naclbitc::TYPE_CODE_VECTOR; |
| + TypeVals.push_back(VT->getNumElements()); |
| + TypeVals.push_back(VE.getTypeID(VT->getElementType())); |
| + break; |
| + } |
| case Type::FunctionTyID: { |
| FunctionType *FT = cast<FunctionType>(T); |
| // FUNCTION: [isvararg, retty, paramty x N] |
| @@ -300,8 +308,6 @@ static void WriteTypeTable(const NaClValueEnumerator &VE, |
| report_fatal_error("Struct types are not supported in PNaCl bitcode"); |
| case Type::ArrayTyID: |
| report_fatal_error("Array types are not supported in PNaCl bitcode"); |
| - case Type::VectorTyID: |
| - report_fatal_error("Vector types are not supported in PNaCl bitcode"); |
| } |
| // Emit the finished record. |
| @@ -645,6 +651,17 @@ static bool WriteInstruction(const Instruction &I, unsigned InstID, |
| pushValue(I.getOperand(2), InstID, Vals, VE, Stream); |
| pushValue(I.getOperand(0), InstID, Vals, VE, Stream); |
| break; |
| + case Instruction::ExtractElement: |
| + Code = naclbitc::FUNC_CODE_INST_EXTRACTELT; |
| + pushValue(I.getOperand(0), InstID, Vals, VE, Stream); |
| + pushValue(I.getOperand(1), InstID, Vals, VE, Stream); |
| + break; |
| + case Instruction::InsertElement: |
| + Code = naclbitc::FUNC_CODE_INST_INSERTELT; |
| + pushValue(I.getOperand(0), InstID, Vals, VE, Stream); |
| + pushValue(I.getOperand(1), InstID, Vals, VE, Stream); |
| + pushValue(I.getOperand(2), InstID, Vals, VE, Stream); |
| + break; |
| case Instruction::ICmp: |
| case Instruction::FCmp: |
| // compare returning Int1Ty or vector of Int1Ty |