1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

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 :)

llvm-svn: 43031
This commit is contained in:
Duncan Sands 2007-10-16 13:34:11 +00:00
parent 9d622a6de1
commit b709e0a2cd

View File

@ -107,7 +107,9 @@ namespace MVT { // MVT = Machine Value Types
/// ///
/// 31--------------16-----------8-------------0 /// 31--------------16-----------8-------------0
/// | Vector length | Precision | Simple type | /// | 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; typedef uint32_t ValueType;
@ -313,7 +315,8 @@ namespace MVT { // MVT = Machine Value Types
if (NumElements == 2) return MVT::v2f64; if (NumElements == 2) return MVT::v2f64;
break; 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 && assert(getVectorElementType(Result) == VT &&
"Bad vector element type!"); "Bad vector element type!");
assert(getVectorNumElements(Result) == NumElements && assert(getVectorNumElements(Result) == NumElements &&