[PATCH] [X86] Refactor PMOV[SZ]Xrm to add missing AVX2 patterns.

Ahmed Bougacha ahmed.bougacha at gmail.com
Thu Nov 13 11:56:02 PST 2014


================
Comment at: lib/Target/X86/X86InstrSSE.td:6168
@@ +6167,3 @@
+  def : Pat<(v16i16 (ExtOp (v32i8 VR256:$src))),
+            (!cast<I>(OpcPrefix#BWYrr) (EXTRACT_SUBREG VR256:$src, sub_xmm))>;
+  def : Pat<(v8i32 (ExtOp (v32i8 VR256:$src))),
----------------
delena wrote:
> Why v32i8 ? How do you get it? If you have v8i8 it will be legalized to v8i32 or v8i16.
> I think you have a lot of redundant patterns.
Good point, lots of the patterns are unusual but were there before. So I started investigating, there's years of cruft behind them. Notably:

PR14887/r172353 added the VR256 AVX2 patterns, but they don't seem useful (anymore?)

r56594 added the vzmovl/vzload patterns, and I'm not sure if we want those: they fire on the sse41.ll tests, but I don't know how common these are. For now I left those patterns there, but we have to decide whether to keep those tests. In that case we need to cover all of the patterns of the form:


  # load from an int type of the same size as the source vector
  # insert elements into enough lanes to fill the register
  # bitcast into the intrinsics expected input type
  # intrinsic call

http://reviews.llvm.org/D6125






More information about the llvm-commits mailing list