OSDN Git Service

Change IndexedModeAction representation.
authorDavid Greene <greened@obbligato.org>
Mon, 8 Jun 2009 23:53:19 +0000 (23:53 +0000)
committerDavid Greene <greened@obbligato.org>
Mon, 8 Jun 2009 23:53:19 +0000 (23:53 +0000)
commit9df4eb8cfecec9dd15b6fde5983e046d81e646dc
tree6b1c3d51c1065808bb89a434c880cc4ac1cf02ec
parent0d973999f3a7973e680e12acdf6def9d769911b6
Change IndexedModeAction representation.

This changes the IndexedModeAction representation to remove the
limitation on the number of value types in MVT.  This limitation
prevents us from specifying AVX types.

Prior to this change IndexedModActions was represented as follows...

uint64_t IndexedModeActions[2][ISD::LAST_INDEXED_MODE];

the first dimension was used to represent loads, then stores.  This
imposed a limitation of 32 on the number of value types that could be
handled with this method.  The value type was used to shift the two bits
into and out of the approprate bits in the uint64_t.

With this change the array is now represented as ...

uint8_t IndexedModeActions[MVT::LAST_VALUETYPE][2][ISD::LAST_INDEXED_MODE];

Takes more space but removes the limitation on MVT::LAST_VALUETYPE.  The
first dimension is now the value_type for the reference.  The second
dimension is the load [0] vs. store[1].  The third dimension represents
the various modes for load store.  Accesses are now direct, no shifting
or masking.

There are other limitations that need to be removed, so that
MVT::LAST_VALUETYPE can be greater than 32.  This is merely the first
step towards that goal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73102 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Target/TargetLowering.h