Page MenuHomePhabricator

wristow (Warren Ristow)
User

Projects

User does not belong to any projects.

User Details

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

Recent Activity

Yesterday

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

Updated patch to correct a comment and fix a typo.

Fri, Jan 17, 5:33 PM · Restricted Project

Thu, Jan 16

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.

Thu, Jan 16, 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.

Thu, Jan 16, 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").

Thu, Jan 16, 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.

Thu, Jan 16, 11:29 AM · Restricted Project

Wed, Jan 15

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

Tue, Jan 14

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

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

Tue, Jan 14, 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:

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

Addressed comments from @hfinkel .

Tue, Jan 14, 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

Tue, Jan 14, 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.

Tue, Jan 14, 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
Tue, Jan 14, 10:33 AM
wristow closed D72469: SCC: Allow ReplaceNode to safely support insertion.
Tue, Jan 14, 10:33 AM · Restricted Project

Mon, Jan 13

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

Thu, Jan 9

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

Thu, Dec 19

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

Thanks for the quick review.

Thu, Dec 19, 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
Thu, Dec 19, 11:53 AM
wristow closed D71718: [X86] Mark various pointer arguments in builtins as const.
Thu, Dec 19, 11:53 AM · Restricted Project
wristow created D71718: [X86] Mark various pointer arguments in builtins as const.
Thu, Dec 19, 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
wristow committed rL344286: Update test of r344198 to work with release builds..
Update test of r344198 to work with release builds.
Oct 11 2018, 1:21 PM
wristow added a comment to D52836: [LTO] Account for overriding lib calls via the alias attribute.

However, the function argument uses an implicit label %0, causing failure of LTO/X86/libcall-overridden-via-alias.ll

; Function Attrs: norecurse nounwind readnone
define internal float @logf(float) #2 {
  %2 = fadd float %0, %0
  ret float %2
}
Oct 11 2018, 11:01 AM

Oct 10 2018

wristow committed rL344198: [LTO] Account for overriding lib calls via the alias attribute.
[LTO] Account for overriding lib calls via the alias attribute
Oct 10 2018, 3:56 PM
wristow closed D52836: [LTO] Account for overriding lib calls via the alias attribute.
Oct 10 2018, 3:56 PM

Oct 5 2018

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

I'll respond more on the bug (especially since I can't reproduce the actual link time error), ...

Thanks for that. I've responded more thoroughly in the bug, but a short note here to clarify.

Oct 5 2018, 6:22 PM

Oct 3 2018

wristow created D52836: [LTO] Account for overriding lib calls via the alias attribute.
Oct 3 2018, 10:57 AM

Sep 21 2018

wristow committed rL342786: [Loop Vectorizer] Abandon vectorization when no integer IV found.
[Loop Vectorizer] Abandon vectorization when no integer IV found
Sep 21 2018, 4:08 PM
wristow closed D52327: [Loop Vectorizer] Abandon vectorization when no integer IV found.
Sep 21 2018, 4:08 PM
wristow updated the diff for D52327: [Loop Vectorizer] Abandon vectorization when no integer IV found.

Added test from D47216.

Sep 21 2018, 3:49 PM
wristow added a comment to D52327: [Loop Vectorizer] Abandon vectorization when no integer IV found.

Regarding the LIT test from D47216, isn't that essentially the same as the LIT test I have here?

I say yes and no. One induction versus two inductions. Given that there were none before, it's nice to have more than one, especially so if another one is handily available. I don't insist, though.

Sep 21 2018, 3:39 PM
wristow updated the diff for D52327: [Loop Vectorizer] Abandon vectorization when no integer IV found.

As the discussion on the possibility of creating an integer IV goes on, I'm updating the patch to include the non-NULL assertion for IdxTy.

Sep 21 2018, 2:38 PM
wristow added a comment to D52327: [Loop Vectorizer] Abandon vectorization when no integer IV found.

Sorry, I totally forgot about my old patch https://reviews.llvm.org/D47216.

  1. I like your two different message version better than changing Line 788 condition to if (!WidestIndTy). That's good.
  2. Please add non-NULL assertion after "Type *IdxTy = Legal->getWidestInductionType();" in InnerLoopVectorizer::getOrCreateTripCount().
  3. Please include LIT test from D47216.
Sep 21 2018, 1:08 PM

Sep 20 2018

wristow created D52327: [Loop Vectorizer] Abandon vectorization when no integer IV found.
Sep 20 2018, 3:36 PM

Jun 18 2018

wristow added inline comments to D48289: refactor of visitFADD for AllowNewConst cases.
Jun 18 2018, 12:31 PM
wristow added inline comments to D48289: refactor of visitFADD for AllowNewConst cases.
Jun 18 2018, 12:28 PM