Page MenuHomePhabricator

ebrevnov (Evgeniy)
User

Projects

User does not belong to any projects.

User Details

User Since
Jan 23 2018, 4:17 PM (177 w, 2 d)

Recent Activity

Fri, Jun 11

ebrevnov updated the diff for D103954: [SLP] Incorrect handling of external scalar values.

Fix issue found by buildbot. Locs for Scalar should be requested after VectorMap.operator[] since it may invalidate those.

Fri, Jun 11, 3:50 AM · Restricted Project

Thu, Jun 10

ebrevnov updated the diff for D103954: [SLP] Incorrect handling of external scalar values.

Dummy update to restart testing

Thu, Jun 10, 1:35 AM · Restricted Project

Wed, Jun 9

ebrevnov requested review of D103954: [SLP] Incorrect handling of external scalar values.
Wed, Jun 9, 4:28 AM · Restricted Project

Wed, Jun 2

ebrevnov added a comment to D101044: [NFC][DSE]Change 'do-while' to 'for' loop to simplify code structure.

ping @fhahn

Wed, Jun 2, 2:07 AM · Restricted Project

Tue, May 25

ebrevnov added inline comments to D100751: [VPlan] Properly handle sinking of replicate regions..
Tue, May 25, 1:36 AM · Restricted Project
ebrevnov added a comment to D102776: [CG][X86][NFC] Add an option to disable unconditional generation of PLT32 relocations for jmp/call.

How is it infeasible? PLT32 is moving toward the correct direction and matches most other architectures.

Branch relocation types should be different from PC-relative relocations because the former has less reliance on the semantics. PC-relative relocations can mean address taking operations and can cause issues like canonical PLT entries.

Tue, May 25, 12:18 AM · Restricted Project

Wed, May 19

ebrevnov added a reviewer for D102776: [CG][X86][NFC] Add an option to disable unconditional generation of PLT32 relocations for jmp/call: skatkov.
Wed, May 19, 7:46 AM · Restricted Project
ebrevnov retitled D102776: [CG][X86][NFC] Add an option to disable unconditional generation of PLT32 relocations for jmp/call from [CG][X86][NFC] Add option to disable unconditional generation of PLT32 relocations for jmp/call to [CG][X86][NFC] Add an option to disable unconditional generation of PLT32 relocations for jmp/call.
Wed, May 19, 7:45 AM · Restricted Project
ebrevnov retitled D102776: [CG][X86][NFC] Add an option to disable unconditional generation of PLT32 relocations for jmp/call from [CG][X86][NFC] Add option to disable unconditional generation of PLT relocations for jmp/call to [CG][X86][NFC] Add option to disable unconditional generation of PLT32 relocations for jmp/call.
Wed, May 19, 7:45 AM · Restricted Project
ebrevnov requested review of D102776: [CG][X86][NFC] Add an option to disable unconditional generation of PLT32 relocations for jmp/call.
Wed, May 19, 7:37 AM · Restricted Project

May 13 2021

ebrevnov added inline comments to D100751: [VPlan] Properly handle sinking of replicate regions..
May 13 2021, 5:52 AM · Restricted Project

May 12 2021

ebrevnov added inline comments to D100751: [VPlan] Properly handle sinking of replicate regions..
May 12 2021, 4:26 AM · Restricted Project

Apr 30 2021

ebrevnov updated the diff for D101359: [NARY] Don't optimize min/max if there are side uses (part2).

Added comment + removed useless check + replaced explicit for with llvm::any_of

Apr 30 2021, 3:38 AM · Restricted Project
ebrevnov added inline comments to D101359: [NARY] Don't optimize min/max if there are side uses (part2).
Apr 30 2021, 3:16 AM · Restricted Project

Apr 29 2021

ebrevnov updated the diff for D101359: [NARY] Don't optimize min/max if there are side uses (part2).

Renaming

Apr 29 2021, 2:56 AM · Restricted Project
ebrevnov added a reviewer for D101359: [NARY] Don't optimize min/max if there are side uses (part2): lebedev.ri.
Apr 29 2021, 2:54 AM · Restricted Project

Apr 27 2021

ebrevnov updated the summary of D101359: [NARY] Don't optimize min/max if there are side uses (part2).
Apr 27 2021, 6:21 AM · Restricted Project
ebrevnov requested review of D101359: [NARY] Don't optimize min/max if there are side uses (part2).
Apr 27 2021, 6:16 AM · Restricted Project

Apr 22 2021

ebrevnov updated the diff for D90095: [WIP][DSE] Enable MSSA DSE to optimize across PHIs.

Extracted small NFC out and rebase

Apr 22 2021, 4:06 AM · Restricted Project
ebrevnov added reviewers for D101044: [NFC][DSE]Change 'do-while' to 'for' loop to simplify code structure: fhahn, lebedev.ri.
Apr 22 2021, 4:02 AM · Restricted Project
ebrevnov requested review of D101044: [NFC][DSE]Change 'do-while' to 'for' loop to simplify code structure.
Apr 22 2021, 4:01 AM · Restricted Project

Apr 21 2021

ebrevnov added a comment to D98287: [DSE] Queue non-memory dead instructions for later removal..

I think, more robust approach would be not to depend on existing instructions but create the required ones during phi translation as needed. Phi translation already does this to some extent. In D90095 (which prototypes PHI translation support in DSE) pointers are simplified by GetPointerBaseWithConstantOffset during PHI translation what effectively removes dependencies on existing GEPs and BitCasts.

Apr 21 2021, 8:31 PM · Restricted Project

Apr 15 2021

ebrevnov added a comment to D100538: [CVP] processCallSite returns wrong status.

Claiming that changes were done where none were done is a bug too?

Apr 15 2021, 2:43 AM · Restricted Project
ebrevnov updated the summary of D100538: [CVP] processCallSite returns wrong status.
Apr 15 2021, 2:39 AM · Restricted Project
ebrevnov updated the summary of D100538: [CVP] processCallSite returns wrong status.
Apr 15 2021, 2:34 AM · Restricted Project
ebrevnov requested review of D100538: [CVP] processCallSite returns wrong status.
Apr 15 2021, 2:31 AM · Restricted Project

Apr 12 2021

ebrevnov added a comment to D100170: [NARY] Don't optimize min/max if there are side uses.

Thanks for noting. Fixed.

Apr 12 2021, 7:34 PM · Restricted Project

Apr 9 2021

ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

Raising this here as well, as it seems the previous concern I raised with the commit was ignored.

Thanks for letting me know. Hadn't seen this before. I can reproduce the issue and working on the fix.

I am seeing this change go into an infinite loop attempting to example an expression, adding more and more .nary postfixes.
I have reduced the failure to the attached bugpoint.

llc -march=amdgcn -mcpu=gfx700 < bugpoint-reduced-simplified.ll

Apr 9 2021, 3:39 AM · Restricted Project
ebrevnov added reviewers for D100170: [NARY] Don't optimize min/max if there are side uses: lebedev.ri, mkazantsev.
Apr 9 2021, 3:23 AM · Restricted Project
ebrevnov requested review of D100170: [NARY] Don't optimize min/max if there are side uses.
Apr 9 2021, 3:22 AM · Restricted Project

Apr 7 2021

ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

Raising this here as well, as it seems the previous concern I raised with the commit was ignored.

Thanks for letting me know. Hadn't seen this before. I can reproduce the issue and working on the fix.

Apr 7 2021, 6:28 AM · Restricted Project
ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.
Apr 7 2021, 5:46 AM · Restricted Project

Mar 31 2021

ebrevnov added a comment to D75981: [LV] Allow large RT checks, if they are a fraction of the scalar cost..

I don't really understand why we need this separate heuristic for runtime checks. Why don't we simply add cost of runtime checks (possibly with some small scaling to be safe) to total cost of vector loop and just use existing cost model to decide?

Mar 31 2021, 8:42 PM · Restricted Project

Mar 11 2021

ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

This commit may cause multiple CI failures on TensorFlow/NVPTX backend. See https://github.com/tensorflow/tensorflow/commit/b1758bd553dfc2ebbfd07eec01d1e3254eda25b8#commitcomment-48080097.

I am trying to find a minimal reproducible test case here.

Mar 11 2021, 8:11 PM · Restricted Project
ebrevnov updated the diff for D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

Update

Mar 11 2021, 3:40 AM · Restricted Project
ebrevnov added a comment to D98288: [DSE] Translate killing locations through phis..

In general this patch seems to take exactly the same direction as D90095 and is a strict subset of it. We can choose to either re-build functionality step by step or take D90095 and split it to several smaller pieces. D90095 adds the follwoing functionality:

  1. Replaces main 'do-while' loop to 'for' loop in getDomMemoryDef. This is NFC and aimed at simplifying code structure and allows to minimize future changes.
  2. Supports phi translation to any predecessor (not only immediate one)
  3. Is able to phi translate in presence of geps and casts. In order to support this we have to track offests.
Mar 11 2021, 1:58 AM · Restricted Project
ebrevnov added inline comments to D98288: [DSE] Translate killing locations through phis..
Mar 11 2021, 1:33 AM · Restricted Project
ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

Fixed SCEVExpaned in b46c085d2b6d15873fb53718f0a70b3848e19e4a, please rebase/update this patch accordingly.

But, i think we may have a problem still.
Does this patch intend to reassociate only integers, or pointers too? :)

Mar 11 2021, 1:07 AM · Restricted Project
ebrevnov updated the diff for D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

Stepped back to use SCEVExpander

Mar 11 2021, 1:06 AM · Restricted Project

Mar 5 2021

ebrevnov added a comment to D75981: [LV] Allow large RT checks, if they are a fraction of the scalar cost..

I'd like to understand why you chose to go the way it is instead of taking cost of runtime checks into account in the cost model itself? To me, the cost model is the right place for that. I would expect to see something similar to what I did in https://reviews.llvm.org/D71053 for LoopVectorizationPlanner::mayDisregardRTChecksOverhead

Mar 5 2021, 12:11 AM · Restricted Project

Mar 3 2021

ebrevnov updated the diff for D93530: [DSE] Add support for not aligned begin/end.

Update

Mar 3 2021, 2:39 AM · Restricted Project
ebrevnov added inline comments to D93530: [DSE] Add support for not aligned begin/end.
Mar 3 2021, 1:03 AM · Restricted Project

Mar 2 2021

ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

I actually think this patch should not have been reverted in the first place.
SCEV is known to be not good with undef, i don't really see why we should start blocking on that now.
So i would personally recommend to directly revert your revert.

If I'm getting it right you are OK to commit the patch in its current state. If this is the case please unblock it.

Mar 2 2021, 8:10 PM · Restricted Project
ebrevnov added a comment to D75981: [LV] Allow large RT checks, if they are a fraction of the scalar cost..

You better remove (WIP) suffix if this patch is ready for review. Otherwise people may think it still in progress...

Mar 2 2021, 8:05 PM · Restricted Project
ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

Uhm, no? SCEV only supports integers and pointers.

I looked at the failing list one more time and indeed it was a pointer to double case.... In total, there are 54 failing tests which needs to be investigated... Roman, Are you working in this direction?
SCEV Expander should be fixed separately anyway and I don't think there is strong dependence between these pieces.

Mar 2 2021, 1:37 AM · Restricted Project
ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

I don't think we should reinvent SCEV Expander.
I was looking at fixing this properly, but got sidetracked by having to first fix the isHighCostExpansion().

Mar 2 2021, 12:32 AM · Restricted Project
ebrevnov updated the diff for D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

Fix found verification issue

Mar 2 2021, 12:18 AM · Restricted Project
ebrevnov reopened D88287: [NARY-REASSOCIATE] Support reassociation of min/max.
Mar 2 2021, 12:18 AM · Restricted Project

Feb 26 2021

ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

commit 13a5cac2ba919b4d02a296428b58919231e08569 (HEAD -> main, origin/main)
Author: Evgeniy Brevnov <ybrevnov@azul.com>
Date: Fri Feb 26 19:23:32 2021 +0700

Feb 26 2021, 4:49 AM · Restricted Project
ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

I think it's better to revert it for now. Looks like the topic is not that trivial and we should first agree on the fix. There is no need to hurry.

Feb 26 2021, 4:29 AM · Restricted Project
ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

No.

Like i have already said, the fix is https://alive2.llvm.org/ce/z/RkBWxC.
Let me just fix this then.

Feb 26 2021, 3:59 AM · Restricted Project
ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

I think the solution is to use >= instead of > when we do min/max reassociation. In other words, originally we had 'any' > MAX_INT which is known to be false. If we want semantically equal but reassociated expression we should invert the comparison logic. In other words we should check MAX_INT >= 'any' which is known to be true and MAX_INT will be selected.

Feb 26 2021, 3:19 AM · Restricted Project
ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

Just to add to what Roman wrote, thinking of the code as max(,) is misleading. The code is doing icmp sgt INT_MAX, undef which can evaluate to true or false. But we cannot assume that undef from now on is equal to INT_MAX just because the comparison evaluated to true.

Feb 26 2021, 2:48 AM · Restricted Project
ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

I think I understand the problem now. 'any'>max_int is known to be false (first case), while max_int >'any' is unknown (second case)....so this is not verification issue....

Feb 26 2021, 2:36 AM · Restricted Project
ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

I think this is an issue of verification itself. In the first case max(0, undef)=>any and max(any, max_int)=>max_int. In the second case max(max_int, undef)=>x03002006. I believe the behavior of the verifier is inconsistent in these two cases and max(max_int, undef) should be evaluated to max_int as well. We can do the following trivial transformations to prove that: max(max_int, undef) is trivially equal to max(max_int, max(undef, undef)) and max(undef, undef) should be evaluated to 'any' since max(0, undef) is evaluated to 'any' in the first case. Thus we get max(max_int, any) which is evaluated to 'max_int' in the first case. So max(max_int, undef) should be evaluated to 'max_int' but not 'x03002006'.

Makes sense?

Note that given

%a = undef
%b = %a

, %a and %b have undefined values, and there are no guarantees that they are equal/not equal.
Since you emitted icmp+select, you 'read' from undefined %c twice, and you are free to get different result each time.

Feb 26 2021, 2:21 AM · Restricted Project

Feb 25 2021

ebrevnov added a comment to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

I think this is an issue of verification itself. In the first case max(0, undef)=>any and max(any, max_int)=>max_int. In the second case max(max_int, undef)=>x03002006. I believe the behavior of the verifier is inconsistent in these two cases and max(max_int, undef) should be evaluated to max_int as well. We can do the following trivial transformations to prove that: max(max_int, undef) is trivially equal to max(max_int, max(undef, undef)) and max(undef, undef) should be evaluated to 'any' since max(0, undef) is evaluated to 'any' in the first case. Thus we get max(max_int, any) which is evaluated to 'max_int' in the first case. So max(max_int, undef) should be evaluated to 'max_int' but not 'x03002006'.

Feb 25 2021, 7:52 PM · Restricted Project
ebrevnov added inline comments to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.
Feb 25 2021, 3:13 AM · Restricted Project
ebrevnov updated the diff for D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

Update

Feb 25 2021, 2:53 AM · Restricted Project
ebrevnov updated the diff for D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

Addressed comments

Feb 25 2021, 12:31 AM · Restricted Project

Feb 24 2021

ebrevnov accepted D75980: [LV] Generate RT checks up-front and remove them if required..

LGTM.

Feb 24 2021, 7:34 PM · Restricted Project
ebrevnov added a comment to D75980: [LV] Generate RT checks up-front and remove them if required..

Thanks for doing the changes. Overall this version looks fine to me. Please go ahead with some final cleanups.

Feb 24 2021, 1:53 AM · Restricted Project

Feb 18 2021

ebrevnov added a comment to D93530: [DSE] Add support for not aligned begin/end.

I appreciate your time to review and experimenting with the patch. I agree it's kind of unexpected to see less stores get removed. Would it be possible for you to share an IR where that happens (not reduced one is fine)? I'm asking for this because I don't have access to those SPECs.

Feb 18 2021, 4:38 AM · Restricted Project

Feb 17 2021

ebrevnov added inline comments to D75980: [LV] Generate RT checks up-front and remove them if required..
Feb 17 2021, 2:55 AM · Restricted Project

Feb 16 2021

ebrevnov added a comment to D75980: [LV] Generate RT checks up-front and remove them if required..

I started looking into this... Hopefully, will be able to provide my feedback by tomorrow.

Feb 16 2021, 8:36 AM · Restricted Project

Feb 10 2021

ebrevnov added a reviewer for D75980: [LV] Generate RT checks up-front and remove them if required.: ebrevnov.
Feb 10 2021, 4:31 AM · Restricted Project

Feb 6 2021

ebrevnov added a comment to D75980: [LV] Generate RT checks up-front and remove them if required..

I'm going to take a look next week if nobody outstrip me...

Feb 6 2021, 1:27 AM · Restricted Project

Jan 11 2021

ebrevnov added a comment to D93530: [DSE] Add support for not aligned begin/end.

ping

Jan 11 2021, 3:52 AM · Restricted Project

Dec 24 2020

ebrevnov added a comment to D93682: [CodeGen] Add "noreturn" attirbute to _Unwind_Resume.

Yes. Please review proposed fix https://reviews.llvm.org/D93803. Evgeniy

Dec 24 2020, 5:01 AM · Restricted Project
ebrevnov added reviewers for D93803: Moved dwarf_eh_resume.ll from Generic to X86 folder: xbolva00, thakis.
Dec 24 2020, 5:00 AM · Restricted Project
ebrevnov requested review of D93803: Moved dwarf_eh_resume.ll from Generic to X86 folder.
Dec 24 2020, 4:58 AM · Restricted Project
ebrevnov updated subscribers of D93682: [CodeGen] Add "noreturn" attirbute to _Unwind_Resume.

Thanks for letting me know. Looking now...

Dec 24 2020, 4:24 AM · Restricted Project
ebrevnov updated the diff for D93682: [CodeGen] Add "noreturn" attirbute to _Unwind_Resume.

Updated test case due to https://reviews.llvm.org/D79485 has landed.

Dec 24 2020, 12:12 AM · Restricted Project

Dec 23 2020

ebrevnov requested changes to D86017: [BPI] Improve static heuristics for integer comparisons with CST and non-CST.
Dec 23 2020, 7:24 AM · Restricted Project
ebrevnov updated the diff for D79485: [BPI] Improve static heuristics for "cold" paths..

Rebase

Dec 23 2020, 7:12 AM · Restricted Project
ebrevnov updated the diff for D79485: [BPI] Improve static heuristics for "cold" paths..

Rebase

Dec 23 2020, 7:09 AM · Restricted Project
ebrevnov updated the diff for D79485: [BPI] Improve static heuristics for "cold" paths..

Addressed comments

Dec 23 2020, 6:56 AM · Restricted Project
ebrevnov updated the summary of D93682: [CodeGen] Add "noreturn" attirbute to _Unwind_Resume.
Dec 23 2020, 3:02 AM · Restricted Project
ebrevnov updated the diff for D93682: [CodeGen] Add "noreturn" attirbute to _Unwind_Resume.

Added test case.

Dec 23 2020, 2:53 AM · Restricted Project

Dec 22 2020

ebrevnov added inline comments to D79485: [BPI] Improve static heuristics for "cold" paths..
Dec 22 2020, 3:07 AM · Restricted Project
ebrevnov requested review of D93682: [CodeGen] Add "noreturn" attirbute to _Unwind_Resume.
Dec 22 2020, 3:07 AM · Restricted Project
ebrevnov updated the diff for D79485: [BPI] Improve static heuristics for "cold" paths..

Addressed comments

Dec 22 2020, 3:05 AM · Restricted Project

Dec 20 2020

ebrevnov added a comment to D93530: [DSE] Add support for not aligned begin/end.

I had already tried to measure performance with the test-suite previously with out success. This time again I observe big variation. I'm using dedicated performance machine which runs only my process. I've build test-suite as follows:

Dec 20 2020, 11:55 PM · Restricted Project

Dec 18 2020

ebrevnov updated the diff for D93530: [DSE] Add support for not aligned begin/end.

Initial update

Dec 18 2020, 3:44 AM · Restricted Project
ebrevnov updated the summary of D93530: [DSE] Add support for not aligned begin/end.
Dec 18 2020, 2:59 AM · Restricted Project
ebrevnov requested review of D93530: [DSE] Add support for not aligned begin/end.
Dec 18 2020, 2:43 AM · Restricted Project

Dec 4 2020

ebrevnov added a reviewer for D92648: [DSE][NFC] Need to be carefull mixing signed and unsigned types: fhahn.
Dec 4 2020, 3:20 AM · Restricted Project
ebrevnov updated the diff for D92648: [DSE][NFC] Need to be carefull mixing signed and unsigned types.

Updated comments

Dec 4 2020, 3:20 AM · Restricted Project
ebrevnov requested review of D92648: [DSE][NFC] Need to be carefull mixing signed and unsigned types.
Dec 4 2020, 3:09 AM · Restricted Project
ebrevnov abandoned D72832: [NFC][LoopUtils] Added regression test for getEstimatedTripCount..
Dec 4 2020, 2:30 AM · Restricted Project

Dec 3 2020

ebrevnov updated the diff for D88285: [NARY-REASSOCIATE] Simplify traversal logic by post deleting dead instructions.

Rebase

Dec 3 2020, 4:21 AM · Restricted Project
ebrevnov accepted D92566: [NFC][Tests] Added one additional test case for NaryRessociation pass..
Dec 3 2020, 4:05 AM · Restricted Project
ebrevnov updated the summary of D92566: [NFC][Tests] Added one additional test case for NaryRessociation pass..
Dec 3 2020, 4:05 AM · Restricted Project
ebrevnov requested review of D92566: [NFC][Tests] Added one additional test case for NaryRessociation pass..
Dec 3 2020, 4:03 AM · Restricted Project
ebrevnov updated the diff for D88287: [NARY-REASSOCIATE] Support reassociation of min/max.

Rebase

Dec 3 2020, 3:18 AM · Restricted Project
ebrevnov updated the diff for D88286: [NFC][NARY-REASSOCIATE] Restructure code to aviod isPotentiallyReassociatable.

Rebase

Dec 3 2020, 3:16 AM · Restricted Project
ebrevnov updated the diff for D88286: [NFC][NARY-REASSOCIATE] Restructure code to aviod isPotentiallyReassociatable.

Rebase

Dec 3 2020, 3:06 AM · Restricted Project
ebrevnov updated the diff for D88285: [NARY-REASSOCIATE] Simplify traversal logic by post deleting dead instructions.

Rebase

Dec 3 2020, 3:03 AM · Restricted Project
ebrevnov added a reviewer for D92561: [NFC][Tests] Auto generate checks for llvm/test/Transforms/NaryReassociate/pr24301.ll using update_test_checks.py: mkazantsev.
Dec 3 2020, 3:00 AM · Restricted Project
ebrevnov requested review of D92561: [NFC][Tests] Auto generate checks for llvm/test/Transforms/NaryReassociate/pr24301.ll using update_test_checks.py.
Dec 3 2020, 3:00 AM · Restricted Project

Dec 2 2020

ebrevnov added inline comments to D88287: [NARY-REASSOCIATE] Support reassociation of min/max.
Dec 2 2020, 2:39 AM · Restricted Project