[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