diff options
author | Duncan Sands <baldrick@free.fr> | 2007-10-16 13:34:11 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2007-10-16 13:34:11 +0000 |
commit | 67c18d50343577779816e9b87de3349f4a4b33e8 (patch) | |
tree | fafd94bc7ad93c04c8b3e97dee93950269ad0c36 | |
parent | af47b11b959713d70c45bee1922e468adfaeaff0 (diff) |
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
-rw-r--r-- | include/llvm/CodeGen/ValueTypes.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/include/llvm/CodeGen/ValueTypes.h b/include/llvm/CodeGen/ValueTypes.h index 05f10e8b04..780482b079 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 && |