[AVX512] Refactor subvector extracts
authorAdam Nemet <anemet@apple.com>
Thu, 25 Sep 2014 23:48:45 +0000 (23:48 +0000)
committerAdam Nemet <anemet@apple.com>
Thu, 25 Sep 2014 23:48:45 +0000 (23:48 +0000)
commit4007b30ede7b94e7c3a3b9b08a4f7545ac7a37e2
tree457ff4d8db53708db6b8e5b794bfc2eb537fa746
parent1973ffefcf356ad8fdf571cda90c20f57400ad6e
[AVX512] Refactor subvector extracts

No functional change.

These are now implemented as two levels of multiclasses heavily relying on the
new X86VectorVTInfo class.  The multiclass at the first level that is called
with float or int provides the 128 or 256 bit subvector extracts.  The second
level provides the register and memory variants and some more Pat<>s.

I've compared the td.expanded files before and after.  One change is that
ExeDomain for 64x4 is SSEPackedDouble now.  I think this is correct, i.e. a
bugfix.

(BTW, this is the change that was blocked on the recent tablegen fix.  The
class-instance values X86VectorVTInfo inside vextract_for_type weren't
properly evaluated.)

Part of <rdar://problem/17688758>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218478 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86InstrAVX512.td