Change how extended types are represented in MVTs. Instead of fiddling
authorDan Gohman <gohman@apple.com>
Mon, 3 Nov 2008 17:56:27 +0000 (17:56 +0000)
committerDan Gohman <gohman@apple.com>
Mon, 3 Nov 2008 17:56:27 +0000 (17:56 +0000)
commit3a5797d94662d1e3cd52ade56bc16e159ec05838
tree82b9ebe67d4fb60f58723b4ba4db10338a32504e
parenteb909ca524f89a24c9bc668aebd9204783576ff2
Change how extended types are represented in MVTs. Instead of fiddling
bits, use a union of a SimpleValueType enum and a regular Type*.

This increases the size of MVT on 64-bit hosts from 32 bits to 64 bits.
In most cases, this doesn't add significant overhead. There are places
in codegen that use arrays of MVTs, so these are now larger, but
they're small in common cases.

This eliminates restrictions on the size of integer types and vector
types that can be represented in codegen. As the included testcase
demonstrates, it's now possible to codegen very large add operations.
There are still some complications with using very large types. PR2880
is still open so they can't be used as return values on normal targets,
there are no libcalls defined for very large integers so operations
like multiply and divide aren't supported.

This also introduces a minimal tablgen Type library, capable of
handling IntegerType and VectorType. This will allow parts of
TableGen that don't depend on using SimpleValueType values to handle
arbitrary integer and vector types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58623 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/ValueTypes.h
lib/VMCore/ValueTypes.cpp
test/CodeGen/X86/i2k.ll [new file with mode: 0644]
utils/TableGen/CMakeLists.txt
utils/TableGen/TGValueTypes.cpp [new file with mode: 0644]