Page MenuHomePhabricator
Feed Advanced Search

Sat, May 15

congzhe abandoned D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.
Sat, May 15, 1:28 PM · Restricted Project, Restricted Project
congzhe added a comment to D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.

The optimization has been removed in D101191, so this patch can be abandoned now.

Sat, May 15, 1:28 PM · Restricted Project, Restricted Project
congzhe added inline comments to D97828: [LoopInterchange] Disallow interchange when memory accesses are guarded by control flow (PR48057).
Sat, May 15, 1:24 PM · Restricted Project

Tue, May 11

congzhe updated the diff for D102300: [LoopInterchange] Check lcssa phis in the inner latch in scenarios of multi-level nested loops.
Tue, May 11, 9:28 PM · Restricted Project
congzhe updated the summary of D102300: [LoopInterchange] Check lcssa phis in the inner latch in scenarios of multi-level nested loops.
Tue, May 11, 7:41 PM · Restricted Project
congzhe requested review of D102300: [LoopInterchange] Check lcssa phis in the inner latch in scenarios of multi-level nested loops.
Tue, May 11, 7:34 PM · Restricted Project
congzhe committed rG3f8be15f2911: [LoopInterchange] Handle lcssa PHIs with multiple predecessors (authored by congzhe).
[LoopInterchange] Handle lcssa PHIs with multiple predecessors
Tue, May 11, 6:31 PM
congzhe closed D100792: [LoopInterchange] Handle lcssa PHIs with multiple predecessors.
Tue, May 11, 6:31 PM · Restricted Project
congzhe committed rG40e3aa39bd68: [LoopInterchange] Fix legality for triangular loops (authored by congzhe).
[LoopInterchange] Fix legality for triangular loops
Tue, May 11, 3:37 PM
congzhe closed D101305: [LoopInterchange] Fix legality for triangular loops.
Tue, May 11, 3:37 PM · Restricted Project
congzhe updated the diff for D101305: [LoopInterchange] Fix legality for triangular loops.
Tue, May 11, 3:23 PM · Restricted Project
congzhe added a reverting change for rG29342291d25b: [LoopInterchange] Fix legality for triangular loops: rGd3f89d4d1688: Revert "[LoopInterchange] Fix legality for triangular loops".
Tue, May 11, 3:14 PM
congzhe committed rGd3f89d4d1688: Revert "[LoopInterchange] Fix legality for triangular loops" (authored by congzhe).
Revert "[LoopInterchange] Fix legality for triangular loops"
Tue, May 11, 3:14 PM
congzhe added a reverting change for D101305: [LoopInterchange] Fix legality for triangular loops: rGd3f89d4d1688: Revert "[LoopInterchange] Fix legality for triangular loops".
Tue, May 11, 3:13 PM · Restricted Project
congzhe reopened D101305: [LoopInterchange] Fix legality for triangular loops.

Looks like this patch might be leading to the test failure we're seeing on our two-stage-builders (https://luci-milo.appspot.com/p/fuchsia/builders/prod/clang-linux-x64/b8847508232983084096):

FAIL: LLVM :: Transforms/LoopInterchange/inner-indvar-depend-on-outer-indvar.ll (31462 of 43640)
******************** TEST 'LLVM :: Transforms/LoopInterchange/inner-indvar-depend-on-outer-indvar.ll' FAILED ********************
Script:
--
: 'RUN: at line 1';   /b/s/w/ir/x/w/staging/llvm_build/tools/clang/stage2-bins/bin/opt < /b/s/w/ir/x/w/llvm-project/llvm/test/Transforms/LoopInterchange/inner-indvar-depend-on-outer-indvar.ll -basic-aa -loop-interchange -verify-dom-info -verify-loop-info      -S -debug 2>&1 | /b/s/w/ir/x/w/staging/llvm_build/tools/clang/stage2-bins/bin/FileCheck /b/s/w/ir/x/w/llvm-project/llvm/test/Transforms/LoopInterchange/inner-indvar-depend-on-outer-indvar.ll
--
Exit Code: 1

Command Output (stderr):
--
/b/s/w/ir/x/w/llvm-project/llvm/test/Transforms/LoopInterchange/inner-indvar-depend-on-outer-indvar.ll:14:10: error: CHECK: expected string not found in input
; CHECK: Loop structure not understood by pass
         ^
<stdin>:1:1: note: scanning from here
opt: Unknown command line argument '-debug'. Try: '/b/s/w/ir/x/w/staging/llvm_build/tools/clang/stage2-bins/bin/opt --help'
^
<stdin>:1:19: note: possible intended match here
opt: Unknown command line argument '-debug'. Try: '/b/s/w/ir/x/w/staging/llvm_build/tools/clang/stage2-bins/bin/opt --help'
                  ^

Input file: <stdin>
Check file: /b/s/w/ir/x/w/llvm-project/llvm/test/Transforms/LoopInterchange/inner-indvar-depend-on-outer-indvar.ll

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1: opt: Unknown command line argument '-debug'. Try: '/b/s/w/ir/x/w/staging/llvm_build/tools/clang/stage2-bins/bin/opt --help' 
check:14'0     X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
check:14'1                       ?                                                                                                          possible intended match
            2: opt: Did you mean '--debugify'? 
check:14'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>>>

--

********************
Testing:  0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. 
********************
Failed Tests (1):
  LLVM :: Transforms/LoopInterchange/inner-indvar-depend-on-outer-indvar.ll


Testing Time: 47.05s
  Unsupported      : 11360
  Passed           : 32216
  Expectedly Failed:    63
  Failed           :     1

Is this a known issue?

Sounds like this test needs to either require an assert build or not use -debug (or using remarks instead)

Tue, May 11, 2:42 PM · Restricted Project
congzhe updated the diff for D100792: [LoopInterchange] Handle lcssa PHIs with multiple predecessors.
Tue, May 11, 8:34 AM · Restricted Project
congzhe committed rG29342291d25b: [LoopInterchange] Fix legality for triangular loops (authored by congzhe).
[LoopInterchange] Fix legality for triangular loops
Tue, May 11, 8:06 AM
congzhe closed D101305: [LoopInterchange] Fix legality for triangular loops.
Tue, May 11, 8:06 AM · Restricted Project
congzhe updated the diff for D101305: [LoopInterchange] Fix legality for triangular loops.
Tue, May 11, 7:57 AM · Restricted Project

Mon, May 10

congzhe added inline comments to D101305: [LoopInterchange] Fix legality for triangular loops.
Mon, May 10, 12:33 PM · Restricted Project
congzhe added inline comments to D101305: [LoopInterchange] Fix legality for triangular loops.
Mon, May 10, 12:12 PM · Restricted Project
congzhe updated the diff for D101305: [LoopInterchange] Fix legality for triangular loops.
Mon, May 10, 12:10 PM · Restricted Project
congzhe updated the diff for D101305: [LoopInterchange] Fix legality for triangular loops.
Mon, May 10, 8:47 AM · Restricted Project
congzhe added a comment to D101305: [LoopInterchange] Fix legality for triangular loops.

@bmahjour thanks again for the comments, updated and added test cases accordingly.

Mon, May 10, 8:36 AM · Restricted Project
congzhe updated the diff for D101305: [LoopInterchange] Fix legality for triangular loops.
Mon, May 10, 8:31 AM · Restricted Project

Sun, May 9

congzhe added inline comments to D101305: [LoopInterchange] Fix legality for triangular loops.
Sun, May 9, 7:02 PM · Restricted Project

Thu, May 6

congzhe added a comment to D100792: [LoopInterchange] Handle lcssa PHIs with multiple predecessors.

Just to better clarify, for the test case added in this patch, this is the IR after loop interchange (with this patch):

define i64 @lcssa_08([100 x [100 x i64]]* %Arr) {
entry:
  br label %for2.preheader
Thu, May 6, 1:29 PM · Restricted Project

Tue, Apr 27

congzhe updated the diff for D101305: [LoopInterchange] Fix legality for triangular loops.
Tue, Apr 27, 1:59 PM · Restricted Project
congzhe updated the diff for D101305: [LoopInterchange] Fix legality for triangular loops.
Tue, Apr 27, 10:29 AM · Restricted Project
congzhe updated the diff for D101305: [LoopInterchange] Fix legality for triangular loops.
Tue, Apr 27, 4:33 AM · Restricted Project

Mon, Apr 26

congzhe added a comment to D100792: [LoopInterchange] Handle lcssa PHIs with multiple predecessors.

gentle ping @bmahjour @Whitney @fhahn

Mon, Apr 26, 9:13 PM · Restricted Project
congzhe requested review of D101305: [LoopInterchange] Fix legality for triangular loops.
Mon, Apr 26, 9:45 AM · Restricted Project

Tue, Apr 20

congzhe updated the summary of D100792: [LoopInterchange] Handle lcssa PHIs with multiple predecessors.
Tue, Apr 20, 11:57 PM · Restricted Project
congzhe updated the summary of D100792: [LoopInterchange] Handle lcssa PHIs with multiple predecessors.
Tue, Apr 20, 11:57 PM · Restricted Project

Mon, Apr 19

congzhe requested review of D100792: [LoopInterchange] Handle lcssa PHIs with multiple predecessors.
Mon, Apr 19, 1:38 PM · Restricted Project

Apr 8 2021

congzhe committed rGce2db9005d70: [LoopInterchange] Fix transformation bugs in loop interchange (authored by congzhe).
[LoopInterchange] Fix transformation bugs in loop interchange
Apr 8 2021, 12:00 PM
congzhe closed D98475: [LoopInterchange] Fix transformation bugs in loop interchange.
Apr 8 2021, 11:59 AM · Restricted Project
congzhe reopened D98475: [LoopInterchange] Fix transformation bugs in loop interchange.
Apr 8 2021, 8:55 AM · Restricted Project
congzhe added a comment to D98475: [LoopInterchange] Fix transformation bugs in loop interchange.

I committed and reverted the patch since it fails x86 sanitizer check. The reason is that after the patch, the variable LoopExit becomes unused.

Apr 8 2021, 8:54 AM · Restricted Project
congzhe updated the diff for D98475: [LoopInterchange] Fix transformation bugs in loop interchange.

Removed the variable LoopExit.

Apr 8 2021, 8:51 AM · Restricted Project

Apr 7 2021

congzhe committed rG593cb4655097: Revert "[LoopInterchange] Fix transformation bugs in loop interchange" (authored by congzhe).
Revert "[LoopInterchange] Fix transformation bugs in loop interchange"
Apr 7 2021, 6:18 PM
congzhe committed rGf5645ea65f0d: [LoopInterchange] Fix transformation bugs in loop interchange (authored by congzhe).
[LoopInterchange] Fix transformation bugs in loop interchange
Apr 7 2021, 5:57 PM
congzhe closed D98475: [LoopInterchange] Fix transformation bugs in loop interchange.
Apr 7 2021, 5:57 PM · Restricted Project
congzhe added a comment to D98475: [LoopInterchange] Fix transformation bugs in loop interchange.

Thanks for fixing this problem. I just have some comments about the tests, otherwise LGTM.

Apr 7 2021, 9:38 AM · Restricted Project
congzhe updated the diff for D98475: [LoopInterchange] Fix transformation bugs in loop interchange.

All comments addressed.

Apr 7 2021, 9:36 AM · Restricted Project

Apr 6 2021

congzhe updated the diff for D98475: [LoopInterchange] Fix transformation bugs in loop interchange.

Removed unnecessary code, simplified the logic.

Apr 6 2021, 10:08 AM · Restricted Project
congzhe added a comment to D98475: [LoopInterchange] Fix transformation bugs in loop interchange.
Apr 6 2021, 8:27 AM · Restricted Project

Mar 28 2021

congzhe added a comment to D98475: [LoopInterchange] Fix transformation bugs in loop interchange.

gentle ping @fhahn @Whitney @bmahjour

Mar 28 2021, 3:06 PM · Restricted Project

Mar 26 2021

congzhe added a reviewer for D98475: [LoopInterchange] Fix transformation bugs in loop interchange: bmahjour.
Mar 26 2021, 1:09 PM · Restricted Project

Mar 24 2021

congzhe committed rG829c1b644390: [LoopInterchange] fix tightlyNested() in LoopInterchange legality (authored by congzhe).
[LoopInterchange] fix tightlyNested() in LoopInterchange legality
Mar 24 2021, 12:50 PM
congzhe closed D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.
Mar 24 2021, 12:50 PM · Restricted Project

Mar 23 2021

congzhe added a comment to D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.

I am fine with this change now, but in the future we should try to

  1. Use utilities in LoopNest as much as possible
  2. Loosen the definition perfect loop nest in LoopNest
  3. Make the transformation more generic to handle more cases, e.g. the newly added test interchange_07.
Mar 23 2021, 7:12 PM · Restricted Project
congzhe updated the diff for D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.

Updated the patch according to the comments.

Mar 23 2021, 7:08 PM · Restricted Project
congzhe added a comment to D98475: [LoopInterchange] Fix transformation bugs in loop interchange.

gentle ping @fhahn @Whitney

Mar 23 2021, 1:47 AM · Restricted Project
congzhe added a comment to D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.

gentle ping @fhahn @Whitney

Mar 23 2021, 1:47 AM · Restricted Project

Mar 17 2021

congzhe added a comment to D98475: [LoopInterchange] Fix transformation bugs in loop interchange.

gentle ping @fhahn @Whitney

Mar 17 2021, 1:29 AM · Restricted Project
congzhe added a comment to D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.

gentle ping @fhahn @Whitney

Mar 17 2021, 1:28 AM · Restricted Project

Mar 11 2021

congzhe updated the summary of D98475: [LoopInterchange] Fix transformation bugs in loop interchange.
Mar 11 2021, 8:10 PM · Restricted Project
congzhe requested review of D98475: [LoopInterchange] Fix transformation bugs in loop interchange.
Mar 11 2021, 8:09 PM · Restricted Project

Mar 10 2021

congzhe added a comment to D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.

Hi @congzhe, thanks for the fix!

I think it'd probably be better to keep the LoopNest::checkLoopsStructure and add the additional checks of branch instructions for now.
By doing so, future changes to LoopNest will also apply in LoopInterchange, which is what we are trying to achieve I think (by making the definition of perfectly-nested loop in sync).
The check can be removed in the future, when LoopNest is eventually taught to correctly identify guard branches (singleSucc is currently considered to be the guard branch of the inner loop, but the loops should only be considered perfectly-nested if the guard branch corresponds to the one added by LoopRotate IMO, which is not true in this case).

What do you think?

Mar 10 2021, 10:51 PM · Restricted Project
congzhe added a comment to D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.

The patch now revert part of https://reviews.llvm.org/rGdf9158c9a45a6902c2b0394f9bd6512e3e441f31, which leave some changes behind.
Given that the change cause a test case crash, @TaWeiTu can you please revert the change?

Sure, reverted.

Mar 10 2021, 6:44 PM · Restricted Project
congzhe updated the diff for D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.

Updated the patch based on the latest trunk code.

Mar 10 2021, 6:41 PM · Restricted Project
congzhe added a comment to D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.

Thanks for fixing it. Is the crashing test case an existing test case, or will be added in D96708 or D91682? If not, can you please also include that test case in this patch?

Mar 10 2021, 9:10 AM · Restricted Project
congzhe updated the diff for D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.

Updated the patch.

Mar 10 2021, 9:06 AM · Restricted Project

Mar 9 2021

congzhe updated the summary of D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.
Mar 9 2021, 10:16 PM · Restricted Project
congzhe added a comment to D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.

An update: the current trunk code (without this patch) fails the following test (crashes as follows):

Mar 9 2021, 9:54 PM · Restricted Project
congzhe added a comment to D96708: [llvm] Bug fix: tightlyNested() of Loop interchange.

I added some comments to the source code.

Mar 9 2021, 1:18 PM · Restricted Project
congzhe updated the diff for D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.
Mar 9 2021, 8:00 AM · Restricted Project
congzhe updated the summary of D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.
Mar 9 2021, 7:45 AM · Restricted Project
congzhe updated the summary of D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.
Mar 9 2021, 7:45 AM · Restricted Project
congzhe updated the summary of D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.
Mar 9 2021, 7:44 AM · Restricted Project
congzhe updated the summary of D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.
Mar 9 2021, 7:43 AM · Restricted Project
congzhe updated the summary of D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.
Mar 9 2021, 7:34 AM · Restricted Project
congzhe updated the summary of D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.
Mar 9 2021, 7:34 AM · Restricted Project
congzhe updated the summary of D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.
Mar 9 2021, 7:33 AM · Restricted Project
congzhe requested review of D98263: [LoopInterchange] fix tightlyNested() in LoopInterchange legality.
Mar 9 2021, 7:24 AM · Restricted Project

Feb 25 2021

congzhe added inline comments to D96708: [llvm] Bug fix: tightlyNested() of Loop interchange.
Feb 25 2021, 9:49 PM · Restricted Project

Dec 31 2020

congzhe added a comment to D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.

Okay, I think the remaining optimizations (other than opened patches) are:

  • LoopUnswitch.cpp: I can address this
  • PredicateInfo.cpp: I'm not sure whether a local change will be enough, because the relevant classes in PredicateInfo.h are exposed to other optimizations.
  • SimpleLoopUnswitch.cpp, LoopPredication.cpp, InductiveRangeCheckElimination.cpp: have no idea

After LoopUnswitch and PredicateInfo is updated & the select -> and/or is conditionally allowed, we can try performance evaluation again and see whether there still exists regression. What do you think? @nikic @congzhe

Dec 31 2020, 8:16 AM · Restricted Project, Restricted Project

Dec 21 2020

congzhe added a comment to D93272: [InstCombine] Add checking of i1 types when converting select instructions into zext/sext instructions.

LGTM

Dec 21 2020, 3:50 PM · Restricted Project, Restricted Project
congzhe committed rGc60a58f8d435: [InstCombine] Add check of i1 types in select-to-zext/sext transformation (authored by congzhe).
[InstCombine] Add check of i1 types in select-to-zext/sext transformation
Dec 21 2020, 3:48 PM
congzhe closed D93272: [InstCombine] Add checking of i1 types when converting select instructions into zext/sext instructions.
Dec 21 2020, 3:48 PM · Restricted Project, Restricted Project
congzhe updated the diff for D93272: [InstCombine] Add checking of i1 types when converting select instructions into zext/sext instructions.
Dec 21 2020, 10:29 AM · Restricted Project, Restricted Project
congzhe updated the diff for D93272: [InstCombine] Add checking of i1 types when converting select instructions into zext/sext instructions.
Dec 21 2020, 10:28 AM · Restricted Project, Restricted Project

Dec 20 2020

congzhe added a comment to D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.

Using freeze loses information (if some of the inputs was poison). Plus It requires an extra op.
If we canonicalize around select there's no loss of information and it's just 1 instruction.

The disadvantage is that then we have 2 ways or doing boolean ANDs/ORs. Though most analyses can be patched easily, as most LLVM analyses' results are of the form "x has property foo unless it's poison". So for those analyses using and/or or select is the same (as the only difference between these is propagation of poison).
Other analyses/optimization can learn about select as needed.

Thank you for raising up the good point! I understand that we lose information by preventing poison values from propagation using freeze. But I'm unclear what would be the side effect or problem with that? I'd appreciate it if you could clarify a bit, thanks!

In practice, probably not a lot. But it may have implications for loop optimization, like:

for (i=0; some_bool && i < limit; ++i) {
...
}

If you remove the poison from the i+1 < limit bit it may make the work of SCEV harder (or impossible; didn't think the example through carefully).

Dec 20 2020, 12:40 PM · Restricted Project, Restricted Project

Dec 18 2020

congzhe committed rG06d5b1c9ad52: [SROA] Remove Dead Instructions while creating speculative instructions (authored by Arnamoy Bhattacharyya <arnamoy.bhattacharyya@huawei.com>).
[SROA] Remove Dead Instructions while creating speculative instructions
Dec 18 2020, 8:49 AM
congzhe closed D92431: [SROA] Remove Dead Instructions while creating speculative instructions.
Dec 18 2020, 8:49 AM · Restricted Project

Dec 17 2020

congzhe added a comment to D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.

Using freeze loses information (if some of the inputs was poison). Plus It requires an extra op.
If we canonicalize around select there's no loss of information and it's just 1 instruction.

The disadvantage is that then we have 2 ways or doing boolean ANDs/ORs. Though most analyses can be patched easily, as most LLVM analyses' results are of the form "x has property foo unless it's poison". So for those analyses using and/or or select is the same (as the only difference between these is propagation of poison).
Other analyses/optimization can learn about select as needed.

Dec 17 2020, 2:05 PM · Restricted Project, Restricted Project
congzhe added a comment to D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.

This will require other parts of the compiler (especially anything dealing with and/or'd branch conditions, like SCEV, LVI, ValueTracking etc) to understand this new form of and/or first. I don't think most optimizations care about whether and/or is poison-blocking or not, but they need to recognize the select form if we don't canonicalize.

Thank you, I do agree with you that some infrastructures like SCEV might be impacted. Could you clarify it a bit? I am working on unit tests and perf degradation. Should the cause of any of them be those infrastructures, I will post fixes. Would that address your concern? Or something more than that is needed?"

Thanks Sanjay, by "perf data" I'm wondering which benchmarks does the community mostly care about? LLVM test-suite?

We would get a different answer for each person/company, but test-suite is solid common ground. I think SPEC is also widely used by a large part of the community.

As you said there's two ways to address this bug -- one is this patch, the other is inserting freezes. With this patch I do see degradations on some internal benchmarks and I'm working on the fix. Do you think it is the right track? I just would like to make sure before going too far.

The work I do is on AArch64. It may or may not impact other architectures (X86, PowerPC, etc). I'm wondering what is the typical way in the community to address performance degradations since addressing degradations for all possible architectures seems significant amount of work hence not likely?

In general, we try to address known regressions in advance. If you see a problem on AArch64, it will probably not be too different for the other CPU targets.
It is acknowledged that it is impossible to know how a change like this will affect everything, so as long as we have a plan to deal with problems, it's fine to proceed.
My suggestion is to compare the regressions between this patch vs. adding freeze on test-suite. Is there a clear winner (number and average size of regressions)?
Thank you for pushing this forward!

Dec 17 2020, 9:11 AM · Restricted Project, Restricted Project

Dec 15 2020

congzhe updated the diff for D93272: [InstCombine] Add checking of i1 types when converting select instructions into zext/sext instructions.
Dec 15 2020, 2:59 PM · Restricted Project, Restricted Project

Dec 14 2020

congzhe requested review of D93272: [InstCombine] Add checking of i1 types when converting select instructions into zext/sext instructions.
Dec 14 2020, 9:18 PM · Restricted Project, Restricted Project
congzhe added inline comments to D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.
Dec 14 2020, 1:37 PM · Restricted Project, Restricted Project
congzhe updated the diff for D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.
Dec 14 2020, 1:36 PM · Restricted Project, Restricted Project
congzhe added a comment to D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.

Current failing regression tests:

Dec 14 2020, 1:18 PM · Restricted Project, Restricted Project
congzhe added a comment to D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.

This will require other parts of the compiler (especially anything dealing with and/or'd branch conditions, like SCEV, LVI, ValueTracking etc) to understand this new form of and/or first. I don't think most optimizations care about whether and/or is poison-blocking or not, but they need to recognize the select form if we don't canonicalize.

Dec 14 2020, 1:15 PM · Restricted Project, Restricted Project
congzhe added a comment to D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.

Performance data? No regressions for benchmarks?

Dec 14 2020, 10:10 AM · Restricted Project, Restricted Project

Dec 11 2020

congzhe added inline comments to D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.
Dec 11 2020, 8:58 PM · Restricted Project, Restricted Project
congzhe updated the diff for D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.

Updated to address comments.

Dec 11 2020, 8:56 PM · Restricted Project, Restricted Project

Dec 10 2020

congzhe updated the summary of D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.
Dec 10 2020, 1:29 PM · Restricted Project, Restricted Project
congzhe updated the summary of D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.
Dec 10 2020, 1:28 PM · Restricted Project, Restricted Project
congzhe requested review of D93065: [InstCombine] Disable optimizations of select instructions that causes propagation of poison values.
Dec 10 2020, 1:24 PM · Restricted Project, Restricted Project