]> granicus.if.org Git - llvm/commit
[X86][SLP] Enable SLP vectorization for 128-bit horizontal X86 instructions (add...
authorAnton Afanasyev <anton.a.afanasyev@gmail.com>
Wed, 13 Feb 2019 08:26:43 +0000 (08:26 +0000)
committerAnton Afanasyev <anton.a.afanasyev@gmail.com>
Wed, 13 Feb 2019 08:26:43 +0000 (08:26 +0000)
commit74c86f74996dd5d17c8f6e8a2ee3d73e0ec9ba41
tree71a1bbca064d6d628bf02ff59428d40a0446a070
parent7cbba3526136e1802a9292283248aaba85556320
[X86][SLP] Enable SLP vectorization for 128-bit horizontal X86 instructions (add, sub)

Try to use 64-bit SLP vectorization. In addition to horizontal instrs
this change triggers optimizations for partial vector operations (for instance,
using low halfs of 128-bit registers xmm0 and xmm1 to multiply <2 x float> by
<2 x float>).

Fixes llvm.org/PR32433

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@353923 91177308-0d34-0410-b5e6-96231b3b80d8
29 files changed:
lib/Target/X86/X86TargetTransformInfo.cpp
lib/Target/X86/X86TargetTransformInfo.h
test/Transforms/SLPVectorizer/X86/addsub.ll
test/Transforms/SLPVectorizer/X86/alternate-fp.ll
test/Transforms/SLPVectorizer/X86/alternate-int.ll
test/Transforms/SLPVectorizer/X86/crash_7zip.ll
test/Transforms/SLPVectorizer/X86/crash_bullet.ll
test/Transforms/SLPVectorizer/X86/crash_bullet3.ll
test/Transforms/SLPVectorizer/X86/crash_cmpop.ll
test/Transforms/SLPVectorizer/X86/crash_sim4b1.ll
test/Transforms/SLPVectorizer/X86/fptosi.ll
test/Transforms/SLPVectorizer/X86/fptoui.ll
test/Transforms/SLPVectorizer/X86/insertvalue.ll
test/Transforms/SLPVectorizer/X86/phi.ll
test/Transforms/SLPVectorizer/X86/remark_not_all_parts.ll
test/Transforms/SLPVectorizer/X86/reorder_phi.ll
test/Transforms/SLPVectorizer/X86/resched.ll
test/Transforms/SLPVectorizer/X86/rgb_phi.ll
test/Transforms/SLPVectorizer/X86/saxpy.ll
test/Transforms/SLPVectorizer/X86/schedule-bundle.ll
test/Transforms/SLPVectorizer/X86/sext.ll
test/Transforms/SLPVectorizer/X86/shift-lshr.ll
test/Transforms/SLPVectorizer/X86/shift-shl.ll
test/Transforms/SLPVectorizer/X86/sitofp.ll
test/Transforms/SLPVectorizer/X86/tiny-tree.ll
test/Transforms/SLPVectorizer/X86/uitofp.ll
test/Transforms/SLPVectorizer/X86/vec-reg-64bit.ll [new file with mode: 0644]
test/Transforms/SLPVectorizer/X86/vect_copyable_in_binops.ll
test/Transforms/SLPVectorizer/X86/zext.ll