[PATCH] Preserve IR flags (nsw, nuw, exact, fast-math) in SLP vectorizer (PR20802)

Nadav Rotem nrotem at apple.com
Wed Sep 3 09:29:18 PDT 2014

LGTM!   Thanks Sanjay! 

> On Sep 3, 2014, at 9:01 AM, Sanjay Patel <spatel at rotateright.com> wrote:
> Hi nadav, aschwaighofer, hfinkel, karthikthecool, andreadb,
> The SLP vectorizer should propagate IR-level optimization hints/flags (nsw, nuw, exact, fast-math) when converting scalar instructions into vectors. But this isn't a simple copy - we need to take the intersection (the logical 'and') of the sets of flags on the scalars.
> The solution is further complicated because we can have non-uniform (non-SIMD) vector ops after:
> http://reviews.llvm.org/D4015
> http://llvm.org/viewvc/llvm-project?view=revision&revision=211339
> The vast majority of changed files are existing tests that were not propagating IR flags, but I've also added a new test file for focused testing of IR flag possibilities.
> http://reviews.llvm.org/D5172
> Files:
>  lib/Transforms/Vectorize/SLPVectorizer.cpp
>  test/Transforms/SLPVectorizer/AArch64/commute.ll
>  test/Transforms/SLPVectorizer/ARM/sroa.ll
>  test/Transforms/SLPVectorizer/X86/addsub.ll
>  test/Transforms/SLPVectorizer/X86/cycle_dup.ll
>  test/Transforms/SLPVectorizer/X86/hoist.ll
>  test/Transforms/SLPVectorizer/X86/horizontal.ll
>  test/Transforms/SLPVectorizer/X86/loopinvariant.ll
>  test/Transforms/SLPVectorizer/X86/multi_user.ll
>  test/Transforms/SLPVectorizer/X86/powof2div.ll
>  test/Transforms/SLPVectorizer/X86/propagate_ir_flags.ll
>  test/Transforms/SLPVectorizer/X86/saxpy.ll
>  test/Transforms/SLPVectorizer/X86/scheduling.ll
> <D5172.13212.patch>

More information about the llvm-commits mailing list