Page MenuHomePhabricator

wristow (Warren Ristow)
User

Projects

User does not belong to any projects.

User Details

User Since
Jan 29 2015, 2:13 PM (294 w, 2 d)

Recent Activity

Wed, Sep 2

wristow added a comment to D86907: Fix for PR46384. Failure on weak dllimport..

Tweaked the test to specifically look for the error of interest

Wed, Sep 2, 5:29 PM · Restricted Project

Tue, Sep 1

wristow accepted D86907: Fix for PR46384. Failure on weak dllimport..

Simplified the test case.

Tue, Sep 1, 6:46 PM · Restricted Project
wristow added inline comments to D86907: Fix for PR46384. Failure on weak dllimport..
Tue, Sep 1, 1:44 PM · Restricted Project
wristow added inline comments to D86649: Fix for assertion failure on PR46865.
Tue, Sep 1, 11:55 AM · Restricted Project
wristow added inline comments to D86907: Fix for PR46384. Failure on weak dllimport..
Tue, Sep 1, 11:52 AM · Restricted Project

Jun 22 2020

wristow added inline comments to D80952: [FPEnv][Clang][Driver] Disable constrained floating point on targets lacking support..
Jun 22 2020, 12:54 PM · Restricted Project

Mar 11 2020

wristow added a comment to D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.

Revisiting this patch. I think that before fixing the -ffp-contract=off problem I originally raised here, there are two questions that have come up in this discussion that we should first resolve. Specifically:

Mar 11 2020, 1:01 PM · Restricted Project

Feb 26 2020

wristow accepted D74851: [x86] use instruction-level fast-math-flags to drive MachineCombiner.

LGTM

Feb 26 2020, 7:10 PM · Restricted Project

Jan 27 2020

wristow added inline comments to D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.
Jan 27 2020, 2:55 PM · Restricted Project
wristow updated the diff for D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.

Used the clearer '!off && !on' (rather than '!(off || on)') in the checks.

Jan 27 2020, 2:52 PM · Restricted Project

Jan 26 2020

wristow added a comment to D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.

About:

This is a bit of an oddity in our handling.

Yes it is!

This is certainly getting more complicated than I had originally expected. I feel there isn't a clear spec on what we want in terms of whether FMA should be enabled "automatically" at (for example) '-O2', and/or whether it should be enabled by -ffast-math. I'm very willing to make whatever change is needed here, to meet whatever spec we all ultimately agree on.

So I think this patch should be put on hold until we decide on these wider aspects.

Jan 26 2020, 7:14 PM · Restricted Project

Jan 24 2020

wristow added inline comments to D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.
Jan 24 2020, 7:18 PM · Restricted Project
wristow updated the diff for D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.

Update a comment to remove the discussion about enabling the __FAST_MATH__ preprocessor macro. The handling of the setting of __FAST_MATH__ is done in "clang/lib/Frontend/InitPreprocessor.cpp", and once we decide on the set of conditions that enable that definition, we can add an appropriate comment there.

Jan 24 2020, 3:23 PM · Restricted Project
wristow added a comment to D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.
  1. Should we enable FMA "by default" at (for example) '-O2'?

We recently introduced a new option "-ffp-model=[precise|fast|strict], which is supposed to serve as an umbrella option for the most common combination of options. I think our default behavior should be equivalent to -ffp-model=precise, which enables contraction. It currently seems to enable -ffp-contract=fast in the precise model (https://godbolt.org/z/c6w8mJ). I'm not sure that's what it should be doing, but whatever the precise model does should be our default.

Jan 24 2020, 3:14 PM · Restricted Project
wristow added a comment to D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.

A separate question is the interaction of -ffast-math with -ffp-contract=. Currently, there is no such interaction whatsoever in GCC: -ffast-math does not imply any particular -ffp-contract= setting, and vice versa the -ffp-contract= setting is not considered at all when defining __FAST_MATH__. This seems at least internally consistent.

Jan 24 2020, 12:36 PM · Restricted Project

Jan 17 2020

wristow updated the diff for D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.

Updated patch to correct a comment and fix a typo.

Jan 17 2020, 5:33 PM · Restricted Project

Jan 16 2020

wristow added a comment to D72529: [SCCIterator] Fix use-after-free.

Jinx ;) This took quite some tracking down on our side - too bad we didn't wait a couple of weeks.

Jan 16 2020, 2:44 PM · Restricted Project
wristow updated the diff for D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.

Changing this to address only the Clang driver aspect, as discussed in the comments. Will spin off a separate patch for the LLVM side.

Jan 16 2020, 1:26 PM · Restricted Project
wristow added a comment to D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.

One commit for the clang changes should be ok; it's a very small diff. But I'm still not sure if the driver change induces frontend diffs that we should make visible via tests.

The only thing I can think of is that it changes whether/when __FAST_MATH__ is defined. But that'll be indirectly tested, via the updated tests in "Driver/fast-math.c", which will verify that "-ffast-math" is passed appropriately (and the __FAST_MATH__ dependency on "-ffast-math" is already tested in "Preprocessor/predefined-macros.c").

Jan 16 2020, 12:56 PM · Restricted Project
wristow added a comment to D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.

This all sounds good to me.

Jan 16 2020, 11:29 AM · Restricted Project

Jan 15 2020

wristow added inline comments to D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.
Jan 15 2020, 5:38 PM · Restricted Project

Jan 14 2020

wristow added a comment to D72550: [SCCIterator] Fix another potential use-after-free.

This is a follow up to https://reviews.llvm.org/D72529.

Jan 14 2020, 11:58 PM · Restricted Project
wristow added a comment to D72529: [SCCIterator] Fix use-after-free.

Independently, we came across this same problem, and I proposed a patch at D72469 (which has been committed) that is essentially the simple fix that is described above:

Jan 14 2020, 11:21 PM · Restricted Project
wristow updated the diff for D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.

Addressed comments from @hfinkel .

Jan 14 2020, 4:55 PM · Restricted Project
wristow added a comment to D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.

Thanks for the quick feedback @hfinkel

Jan 14 2020, 2:45 PM · Restricted Project
wristow added a comment to D72469: SCC: Allow ReplaceNode to safely support insertion.

Seems to me we've needed to do this sort of tweak before, so LGTM.
Because it depends on the memory-management behavior of the map, it would be tricky to test with IR input. Would it be feasible to do something in llvm/unittests/ADT/SCCIteratorTest.cpp that could trigger this reliably? Can be done as a follow-up, as I know the branch is coming soon.

Jan 14 2020, 10:44 AM · Restricted Project
wristow committed rGf7e9f4f4c502: SCC: Allow ReplaceNode to safely support insertion (authored by wristow).
SCC: Allow ReplaceNode to safely support insertion
Jan 14 2020, 10:33 AM
wristow closed D72469: SCC: Allow ReplaceNode to safely support insertion.
Jan 14 2020, 10:33 AM · Restricted Project

Jan 13 2020

wristow created D72675: [Clang][Driver] Fix -ffast-math/-ffp-contract interaction.
Jan 13 2020, 7:19 PM · Restricted Project

Jan 9 2020

wristow created D72469: SCC: Allow ReplaceNode to safely support insertion.
Jan 9 2020, 11:29 AM · Restricted Project

Dec 19 2019

wristow added a comment to D71718: [X86] Mark various pointer arguments in builtins as const.

Thanks for the quick review.

Dec 19 2019, 1:34 PM · Restricted Project
wristow committed rG7fcd9e3f7083: [X86] Mark various pointer arguments in builtins as const (authored by wristow).
[X86] Mark various pointer arguments in builtins as const
Dec 19 2019, 11:53 AM
wristow closed D71718: [X86] Mark various pointer arguments in builtins as const.
Dec 19 2019, 11:53 AM · Restricted Project
wristow created D71718: [X86] Mark various pointer arguments in builtins as const.
Dec 19 2019, 10:32 AM · Restricted Project

Dec 13 2019

wristow added a comment to D69732: [WIP][LTO] Apply SamplePGO pipeline tunes for ThinLTO pre-link to full LTO.

Given the performance improvements here, I'd like to develop this patch further.

In D69732#1784290, @ormris wrote:
Ping @tejohnson

Dec 13 2019, 6:28 PM · Restricted Project, Restricted Project

Dec 12 2019

wristow committed rGbcae3a77afd1: [PS4] Predefine the __SCE__ macro for the x86_64-scei-ps4 triple (authored by wristow).
[PS4] Predefine the __SCE__ macro for the x86_64-scei-ps4 triple
Dec 12 2019, 11:10 AM

Nov 4 2019

wristow added inline comments to D69732: [WIP][LTO] Apply SamplePGO pipeline tunes for ThinLTO pre-link to full LTO.
Nov 4 2019, 6:38 PM · Restricted Project, Restricted Project
wristow added a comment to D69732: [WIP][LTO] Apply SamplePGO pipeline tunes for ThinLTO pre-link to full LTO.

This probably needs to be taken over by someone who cares about full LTO performance

Nov 4 2019, 6:29 PM · Restricted Project, Restricted Project

Oct 4 2019

wristow committed rL373790: Request commit access for wristow.
Request commit access for wristow
Oct 4 2019, 2:21 PM

Jul 19 2019

wristow accepted D64780: Disallow most calling convention attributes on PS4..

LGTM aside from a nit. You should give other reviewers a chance to sign off in case they have additional comments.

Jul 19 2019, 11:14 AM · Restricted Project, Restricted Project

Jul 17 2019

wristow added reviewers for D64780: Disallow most calling convention attributes on PS4.: rnk, rjmccall.
Jul 17 2019, 10:21 AM · Restricted Project, Restricted Project

Jul 15 2019

wristow added a comment to D64672: [X86] Prevent passing vectors of __int128 as <X x i128> in llvm IR.

Do we need to keep the old behavior on platforms where clang is the de facto compiler?

Jul 15 2019, 11:06 AM · Restricted Project

Jun 17 2019

wristow committed rG6452bdd29b5a: [LV] Suppress vectorization in some nontemporal cases (authored by wristow).
[LV] Suppress vectorization in some nontemporal cases
Jun 17 2019, 10:18 AM
wristow committed rL363581: [LV] Suppress vectorization in some nontemporal cases.
[LV] Suppress vectorization in some nontemporal cases
Jun 17 2019, 10:17 AM
wristow closed D61764: [LV] Suppress vectorization in some nontemporal cases.
Jun 17 2019, 10:16 AM · Restricted Project

Jun 13 2019

wristow added inline comments to D61764: [LV] Suppress vectorization in some nontemporal cases.
Jun 13 2019, 7:37 PM · Restricted Project

Jun 12 2019

wristow updated the diff for D61764: [LV] Suppress vectorization in some nontemporal cases.

Updated patch to address comments from @RKSimon cand @fhahn -- primarily change the default so that nontemporal misaligned mem-ops are assumed to not exist.

Jun 12 2019, 1:46 AM · Restricted Project

Jun 11 2019

wristow added a comment to D61764: [LV] Suppress vectorization in some nontemporal cases.

Thanks @fhahn. I'll update the patch to address those comments.

Jun 11 2019, 2:25 PM · Restricted Project
wristow added a comment to D61764: [LV] Suppress vectorization in some nontemporal cases.

This patch was accepted by @andreadb about a week ago, but Andrea said he'd leave the final decision to @RKSimon. With Simon's comments from a week ago asking @fhahn if he had any preferences for keeping the current default as-is, or changing it to something that seems to reflect existing hardware better, I've been hesitant to actually commit it, even though it's marked as Accepted. With a week now gone by, I'll plan on committing this tomorrow, unless Simon or Florian raise any concerns.

Jun 11 2019, 11:46 AM · Restricted Project

Jun 4 2019

wristow added inline comments to D61764: [LV] Suppress vectorization in some nontemporal cases.
Jun 4 2019, 10:53 AM · Restricted Project

May 31 2019

wristow added inline comments to D61764: [LV] Suppress vectorization in some nontemporal cases.
May 31 2019, 9:25 AM · Restricted Project
wristow added a comment to D61764: [LV] Suppress vectorization in some nontemporal cases.

Would it be possible to add tests where non-temporal load/stores successfully vectorize?

Glad to see your comment about SSE4A supporting nt-stores at any alignment. With that, I can make an X86 test-case that does vectorize.

May 31 2019, 1:05 AM · Restricted Project
wristow updated the diff for D61764: [LV] Suppress vectorization in some nontemporal cases.

Updated the patch to allow arbitrary alignment of float and double nt-stores for SSE4A.

May 31 2019, 12:54 AM · Restricted Project

May 28 2019

wristow added inline comments to D61764: [LV] Suppress vectorization in some nontemporal cases.
May 28 2019, 4:49 PM · Restricted Project
wristow added a comment to D61764: [LV] Suppress vectorization in some nontemporal cases.

Would it be possible to add tests where non-temporal load/stores successfully vectorize?

May 28 2019, 11:16 AM · Restricted Project

May 16 2019

wristow added a comment to D61764: [LV] Suppress vectorization in some nontemporal cases.

ping

May 16 2019, 3:38 PM · Restricted Project

May 9 2019

wristow added a comment to D61764: [LV] Suppress vectorization in some nontemporal cases.

One point I want to explicitly raise, is that prior to this proposed change, the current vectorization implementation ignores the nontemporal hint when checking whether a memory op is vectorizable. So conceptually, it's as though the two new routines:
bool isLegalNTStore(Type *DataType, unsigned Alignment)
bool isLegalNTLoad(Type *DataType, unsigned Alignment)
return true for all types and alignments. With that in mind, I've made the (default) target-independent implementations of these functions return true -- it's only the overriding functions on X86 (which is the target PR40759 was reported against) that will ever return false here (so on non X86 targets, this would be an NFC commit). But in looking through the other backends, I believe that none of them support misaligned nontemporal mem ops. So possibly a better default would be to have these new functions return true only if the specified DataType is minimally aligned at Alignment.

May 9 2019, 3:27 PM · Restricted Project
wristow created D61764: [LV] Suppress vectorization in some nontemporal cases.
May 9 2019, 3:22 PM · Restricted Project

May 8 2019

wristow added a comment to D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.

lgtm

May 8 2019, 11:50 AM · Restricted Project
wristow committed rGd27b0c624722: [SCEV] Suppress hoisting insertion point of binops when unsafe (authored by wristow).
[SCEV] Suppress hoisting insertion point of binops when unsafe
May 8 2019, 11:48 AM
wristow committed rL360280: [SCEV] Suppress hoisting insertion point of binops when unsafe.
[SCEV] Suppress hoisting insertion point of binops when unsafe
May 8 2019, 11:48 AM
wristow closed D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.
May 8 2019, 11:48 AM · Restricted Project

May 7 2019

wristow added inline comments to D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.
May 7 2019, 7:51 PM · Restricted Project
wristow updated the diff for D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.

Thanks for the review @sanjoy!

May 7 2019, 7:47 PM · Restricted Project

May 6 2019

wristow added a comment to D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.

ping x 3

May 6 2019, 9:54 AM · Restricted Project

May 1 2019

wristow accepted D61355: [ThinLTO] Fix unreachable code when parsing summary entries..

Seems pretty straightforward and clearly correct.
LGTM

May 1 2019, 9:22 AM · Restricted Project

Apr 24 2019

wristow added a comment to D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.

ping

Apr 24 2019, 9:57 PM · Restricted Project

Apr 8 2019

wristow added a comment to D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.

ping

Apr 8 2019, 3:13 PM · Restricted Project

Mar 29 2019

wristow updated the diff for D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.

Limiting to constants looks super-conservative. How about getting SCEV for RHS and then asking SE isKnownPredicate(ICMP_NE, RHS, 0)?

Sounds good. ... In any case, until the fix that was done as rL347934 is re-instated in some form, I'll hold off on making the fix discussed here.

Mar 29 2019, 4:54 PM · Restricted Project

Mar 18 2019

wristow committed rGad7d0ded2e45: [SCEV] Guard movement of insertion point for loop-invariants (authored by wristow).
[SCEV] Guard movement of insertion point for loop-invariants
Mar 18 2019, 11:52 AM
wristow committed rL356392: [SCEV] Guard movement of insertion point for loop-invariants.
[SCEV] Guard movement of insertion point for loop-invariants
Mar 18 2019, 11:52 AM
wristow closed D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2).
Mar 18 2019, 11:52 AM · Restricted Project
wristow added a comment to D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2).

Thanks for the review @sanjoy . I've updated it with a comment about IndVarSimplify, and will commit.

Mar 18 2019, 11:52 AM · Restricted Project

Mar 15 2019

wristow added a comment to D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2).

Apologies for the late review Warren.

I agree that it is weird that the insert point is a PHI node. Have you traced through the code to see how we're ending up in that situation? Is IndVarSimplify choosing this insertion point?

Mar 15 2019, 2:51 PM · Restricted Project

Mar 14 2019

wristow added a comment to D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2).

ping x 3

Mar 14 2019, 11:35 AM · Restricted Project

Mar 4 2019

wristow added a comment to D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2).

ping

Mar 4 2019, 11:32 AM · Restricted Project

Feb 24 2019

wristow added a comment to D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2).

ping

Feb 24 2019, 9:59 PM · Restricted Project

Feb 19 2019

wristow added a comment to D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2).

I did not look into this too deeply, but the problem you're describing sounds like it can be solved by setting InsertPt to getFirstNonPHI at some point.

Feb 19 2019, 5:02 PM · Restricted Project

Feb 7 2019

Herald added a project to D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2): Restricted Project.

ping

Feb 7 2019, 7:03 PM · Restricted Project

Jan 29 2019

wristow updated subscribers of D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2).
Jan 29 2019, 5:30 PM · Restricted Project
wristow created D57428: [SCEV] Guard movement of insertion point for loop-invariants (take 2).
Jan 29 2019, 5:14 PM · Restricted Project

Dec 5 2018

wristow added inline comments to D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.
Dec 5 2018, 6:19 PM · Restricted Project
wristow added a comment to D54713: [SCEV] Guard movement of insertion point for loop-invariants.

This fix (rL347934) was reverted at rL348426 because it was causing SEGVs in instcombine. As noted in D55232, a similar fix as this one was originally committed about a year ago (rL289412), but it was reverted shortly thereafter at rL289453, because of OOB PHI operand access in instcombine. The cause of the SEGVs here may be the same underlying issue.

Dec 5 2018, 4:29 PM

Dec 3 2018

wristow updated subscribers of D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.

Since the callers of SCEVExpander::InsertBinop "know" whether the binop being inserted is safe to hoist, this proposed solution of having the caller pass a parameter to indicate whether it's safe seems clean. But a simpler approach is to special-case the opcode Instruction::UDiv in InsertBinop.

Dec 3 2018, 12:55 PM · Restricted Project
wristow created D55232: [SCEV] Suppress hoisting insertion point of binops when unsafe.
Dec 3 2018, 12:49 PM · Restricted Project

Nov 29 2018

wristow committed rL347934: [SCEV] Guard movement of insertion point for loop-invariants.
[SCEV] Guard movement of insertion point for loop-invariants
Nov 29 2018, 4:06 PM
wristow closed D54713: [SCEV] Guard movement of insertion point for loop-invariants.
Nov 29 2018, 4:06 PM

Nov 28 2018

wristow added a comment to D54713: [SCEV] Guard movement of insertion point for loop-invariants.

I'm not sure whether you use a custom pipeline or not. But my point was that code came to vectorization pass seems strange because trivial loop unswitch optimization (provided by LoopUnswitch pass) could hoist the invariant check. By some reason it did not happen.

Nov 28 2018, 10:46 PM
wristow added a comment to D54713: [SCEV] Guard movement of insertion point for loop-invariants.

@mkazantsev: Thanks for clarifying about the Unit test approach. I'll create a Unit test to check on the non-preheader case as a followup commit.

Nov 28 2018, 10:16 PM
wristow added a comment to D54713: [SCEV] Guard movement of insertion point for loop-invariants.

Thanks for the review. I'll hold off for a day or so before committing, to give Max and Sanjoy an opportunity to object. (And I'll remove the {} that you suggested, before committing.)

Nov 28 2018, 7:10 PM
wristow updated the diff for D54713: [SCEV] Guard movement of insertion point for loop-invariants.

Tabs were accidentally added in the previous updated patch. This update just removes those tabs.

Nov 28 2018, 11:55 AM
wristow updated the diff for D54713: [SCEV] Guard movement of insertion point for loop-invariants.

Have the SafeToHoist check guard the entire hoisting loop, as discussed in the review.

Nov 28 2018, 11:46 AM
wristow added inline comments to D54713: [SCEV] Guard movement of insertion point for loop-invariants.
Nov 28 2018, 9:55 AM

Nov 27 2018

wristow added inline comments to D54713: [SCEV] Guard movement of insertion point for loop-invariants.
Nov 27 2018, 11:20 PM
wristow added inline comments to D54713: [SCEV] Guard movement of insertion point for loop-invariants.
Nov 27 2018, 11:15 PM
wristow added inline comments to D54713: [SCEV] Guard movement of insertion point for loop-invariants.
Nov 27 2018, 11:07 PM

Nov 26 2018

wristow added inline comments to D54713: [SCEV] Guard movement of insertion point for loop-invariants.
Nov 26 2018, 6:23 PM
wristow added inline comments to D54713: [SCEV] Guard movement of insertion point for loop-invariants.
Nov 26 2018, 11:41 AM

Nov 19 2018

wristow created D54713: [SCEV] Guard movement of insertion point for loop-invariants.
Nov 19 2018, 10:39 AM

Oct 11 2018

wristow added a comment to D52836: [LTO] Account for overriding lib calls via the alias attribute.

Thanks for explaining, and sorry for the trouble!
Test updated at r344286.

Oct 11 2018, 1:29 PM