From: Duncan Sands Date: Tue, 16 Oct 2007 13:34:11 +0000 (+0000) Subject: Document the fact that the verifier currently requires the X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=67c18d50343577779816e9b87de3349f4a4b33e8;p=oota-llvm.git Document the fact that the verifier currently requires the top bit of a ValueType to be zero. Enforce this by ensuring an assertion failure if someone tries to create a ValueType without this property. I chose this minimal approach rather than a more official integration of the notion of reserved bits into ValueType because I'm hoping that the verifier will be changed to no longer require this :) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43031 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/CodeGen/ValueTypes.h b/include/llvm/CodeGen/ValueTypes.h index 05f10e8b04e..780482b0793 100644 --- a/include/llvm/CodeGen/ValueTypes.h +++ b/include/llvm/CodeGen/ValueTypes.h @@ -107,7 +107,9 @@ namespace MVT { // MVT = Machine Value Types /// /// 31--------------16-----------8-------------0 /// | Vector length | Precision | Simple type | - /// | Vector element | + /// | | Vector element | + /// + /// Note that the verifier currently requires the top bit to be zero. typedef uint32_t ValueType; @@ -313,7 +315,8 @@ namespace MVT { // MVT = Machine Value Types if (NumElements == 2) return MVT::v2f64; break; } - ValueType Result = VT | ((NumElements + 1) << (32 - VectorBits)); + // Set the length with the top bit forced to zero (needed by the verifier). + ValueType Result = VT | (((NumElements + 1) << (33 - VectorBits)) >> 1); assert(getVectorElementType(Result) == VT && "Bad vector element type!"); assert(getVectorNumElements(Result) == NumElements &&