[PATCH] D29370: [X86] Don't base domain decisions on VEXTRACTF128/VINSERTF128 if only AVX1 is available.

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 31 21:18:44 PST 2017


craig.topper created this revision.

Seems the execution dependency pass likes to use FP instructions when most of the consuming code is integer if a vextractf128 instruction produced the register. Without AVX2 we don't have the corresponding integer instruction available.

This patch suppresses the domain on these instructions to GenericDomain if AVX2 is not supported so that they are ignored by domain fixing. If AVX2 is supported we'll report the correct domain and allow them to switch between integer and fp.

Overall I think this produces better results in the modified test cases.


https://reviews.llvm.org/D29370

Files:
  lib/Target/X86/X86InstrInfo.cpp
  test/CodeGen/X86/merge-consecutive-loads-256.ll
  test/CodeGen/X86/nontemporal-loads.ll
  test/CodeGen/X86/oddshuffles.ll
  test/CodeGen/X86/psubus.ll
  test/CodeGen/X86/unaligned-32-byte-memops.ll
  test/CodeGen/X86/vec_fptrunc.ll
  test/CodeGen/X86/vec_int_to_fp.ll
  test/CodeGen/X86/vec_minmax_uint.ll
  test/CodeGen/X86/vector-bitreverse.ll
  test/CodeGen/X86/vector-compare-results.ll
  test/CodeGen/X86/vector-half-conversions.ll
  test/CodeGen/X86/vector-idiv-sdiv-256.ll
  test/CodeGen/X86/vector-idiv-udiv-256.ll
  test/CodeGen/X86/vector-lzcnt-256.ll
  test/CodeGen/X86/vector-popcnt-256.ll
  test/CodeGen/X86/vector-trunc-math.ll
  test/CodeGen/X86/vector-trunc.ll
  test/CodeGen/X86/viabs.ll
  test/CodeGen/X86/vselect-minmax.ll
  test/CodeGen/X86/x86-interleaved-access.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D29370.86572.patch
Type: text/x-patch
Size: 78136 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170201/7fab80f5/attachment.bin>


More information about the llvm-commits mailing list