[llvm-commits] [llvm] r61834 - in /llvm/trunk: include/llvm/DerivedTypes.h include/llvm/Intrinsics.td lib/VMCore/Verifier.cpp utils/TableGen/CodeGenTarget.cpp utils/TableGen/IntrinsicEmitter.cpp

Bob Wilson bob.wilson at apple.com
Wed Jan 7 15:44:41 PST 2009


On Jan 6, 2009, at 5:13 PM, Chris Lattner wrote:
>
> On Jan 6, 2009, at 4:09 PM, Bob Wilson wrote:
>> +  /// VectorType::getTruncatedElementVectorType - This static
>> method is like
>> +  /// getInteger except that the element types are half as wide as
>> the
>> +  /// elements in the input type.
>> +  ///
>> +  static VectorType *getTruncatedElementVectorType(const VectorType
>> *VTy) {
>> +    unsigned EltBits = VTy->getElementType()-
>>> getPrimitiveSizeInBits();
>> +    const Type *EltTy = IntegerType::get(EltBits / 2);
>> +    return VectorType::get(EltTy, VTy->getNumElements());
>> +  }
>
> Should this assert that EltBits is a multiple of 2?  It would be nice
> for tblgen to reject cases where the size was not a multiple of two
> also.

I've added the assertion.

TableGen can't check the vector element sizes since it never sees the  
specific types.  It only sees the overloaded "iAny" types.  Instead, I  
added a check in the verifier to make sure that vector elements with  
an odd bit-width don't get "truncated".  Let me know if that doesn't  
address your concern. 



More information about the llvm-commits mailing list