[PATCH][Loop Vectorizer] Identify basic FP recurrences in LoopVectorizer
Tyler Nowicki
tnowicki at apple.com
Wed Jun 17 10:37:04 PDT 2015
Hi Arnold,
It might be possible to combine both methods. Soon I’ll be extending AddBasicRecurrenceVar() to identify other uses of a recurrence, such as a store. I’ll try to combine them after that.
This is better?
// A value in the basic recurrence can be used:
// - By the recurrence:
// - Recurrence operation:
// - One use of recurrence value (safe).
// - Multiple use of recurrence value (not safe).
// - PHI:
// - All uses of the PHI must be the recurrence (safe).
// - Otherwise, not safe.
// - By out-of-loop instructions (not safe).
// - By non-recurrence instructions in the loop:
// - Multiple uses by reductions (safe).
// - Otherwise, not safe.
// This is either:
// * An instruction type other than PHI or the recurrence operation.
// * A PHI in the header other than the initial PHI.
Thanks for the review!
Tyler
> + // A value in the simple recurrence can be used:
> + // - By the recurrence:
> + // - Recurrence operation:
> + // - One use of recurrence value (safe).
> + // - Multiple use of recurrence value (not safe).
> + // - PHI:
> + // - All uses of the PHI must be the recurrence (safe).
> + // - Otherwise, not safe.
> + // - By any instructions outside of the loop (not safe).
>
> Here.
>
> + // - By an instruction that is not part of the recurrence:
> + // - Multiple uses by reductions (safe).
> + // - Multiple uses by stores (safe).
> + // - Otherwise, not safe.
> + // This is either:
> + // * An instruction type other than PHI or the reduction operation.
> + // * A PHI in the header other than the initial PHI.
>
>
> We should be able to refactor AddReductionVar and AddBasicRecurrenceVar into a common utility? They are largely identical.
>
> Other than that this LGTM.
>
>
>> On Jun 13, 2015, at 6:59 PM, Tyler Nowicki <tnowicki at apple.com> wrote:
>>
>> Hi,
>>
>> I would appreciate a review of this patch. It builds off a couple of other patches that are also in review.
>>
>> Thanks,
>>
>> Tyler
>>
>>> On Jun 3, 2015, at 6:29 PM, Tyler Nowicki <tnowicki at apple.com> wrote:
>>>
>>> Hi,
>>>
>>> This patch builds on the refactoring patches in "[PATCH][VECTORIZER] Refactor ReductionDescriptor to also support floating-point recurrences".
>>>
>>> The patch identifies basic floating-point recurrences and emits diagnostic remarks when a recurrence is found. Tests in the patch look for the diagnostic messages to verify the recurrences were found.
>>>
>>> Subsequent patches will make the loop vectorizer generate code for the basic recurrences. Basic recurrences are a lot like the basic reductions that are already identified and vectorized.
>>>
>>> Thanks,
>>>
>>> Tyler
>>>
>>> <0003-Identify-Basic-FP-Recurrences-In-Loop-Vectorizer.patch>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150617/c2a0f54e/attachment.html>
More information about the llvm-commits
mailing list