User Details
- User Since
- Aug 8 2016, 8:14 AM (345 w, 6 d)
Jan 14 2021
Duplicate - D87145
Apr 19 2020
Apr 14 2020
Apr 8 2020
As per @spatel 's request,
Added a comment explaining the motive behind implementing the transformation in aggressive instcombine instead of normal instcombine.
Apr 7 2020
The first 4 with diff.
Where most of the other cases are there to check various "edge" cases of the added code behavior.
I think, that even if some of the tests are not in a canonical form (and can be optimized by instcombine), we still have an added value having them here in order to check the behavior of this specific pass with similar cases.
Don't you agree?Yes, I agree that we want to have tests for edge cases to make sure that the logic is correct here. But we also should have tests that show why this patch is necessary - functions that could not be solved in regular instcombine easily.
I agree with you 100%. That's why we have several test cases.
Apr 6 2020
This change has broke the update_llc_test_checks.py tool's functionality for any test that includes a local function.
The tool now removes all "; CHECK" lines from such tests and emits nothing instead.
You can check this by adding "dso_local" attribute to any of the X86 existing tests (for example /llvm/CodeGen/X86/add-i64.ll) and run "update_llc_test_checks.py on it.
@spatel: Basically the test cases with the real motivation are the first 4.
Where most of the other cases are there to check various "edge" cases of the added code behavior.
I think, that even if some of the tests are not in a canonical form (and can be optimized by instcombine), we still have an added value having them here in order to check the behavior of this specific pass with similar cases.
Don't you agree?
Mar 31 2020
Just checked the patch @spatel mentioned.
Doesn't really help with the cases provided here.
Mar 29 2020
PING.
Mar 10 2020
Mar 8 2020
Ping #2.
Feb 27 2020
Ping.
Feb 20 2020
Feb 16 2020
Fix the constant aux functions to correctly handle vector constants.
Feb 13 2020
Addressed @nikic & @lebedev.ri comments.
Deal with APInt instead of 64-bit value in constants.
Feb 12 2020
Extract the std::max omission to a separate patch as requested (patch D74476)
Feb 11 2020
Adding full context to patch.
Removed all cmp instruction handling to get a pure SELECT patch support.
Feb 9 2020
Jan 26 2020
Following @nikic's comment:
I agree, the patch is missing some select exclusive tests.
Adding such test cases.
IMHO, there is no added value to splitting to 2 patches, the select changed are too obvious, and the compare is strongly related to the select changes.
Fix @spatel's test case. Thanks for the review.
Involve constants in cmp operations in the MinBitWidth calculations.
Jan 20 2020
Somehow the test wasn't included with the differential text file.
Adding now.
Jan 16 2020
Jul 14 2019
Thanks Anton.
Can you please keep us updated with any progress in this regard?
Jul 9 2019
Just to make sure I understand the change correctly:
This can still hoist instructions outside of their BB and execute them speculatively even if you can't prove that all possible paths execute the instruction, am I right?
Jun 26 2019
Hi Anton,
Dec 12 2017
Nov 13 2017
Nov 2 2017
Oct 31 2017
Targeted Gadi's comments.
Oct 29 2017
Manually reducing "bugpointed" test.
Oct 23 2017
Adding triple & a test case for PR23657
Ping #3!
Ping #3!
Abandoning - lack of response.
Oct 22 2017
Minor comments but LGTM overall.
Oct 10 2017
Oct 8 2017
Kind ping #2
Kind ping #2
The bug was filed for Clang's 3.8 version, it passed with clang-4.0 and clang-ToT (top of trunc).
Seems like the issue was fixed while ago.
Oct 4 2017
The goal is to make tablegen generate the "correct" tables (according to what we define is correct).
So it's up to us to decide what will go in and out of the tables.
Oct 3 2017
@craig.topper that's right, at the end of this process both the generated and manual tables will hold the same entries. But the backend would be disabled and we would include a copy of the last generated inc file from it.
The main challenge here is how to integrate the TableGen's backend and taking advantage of its capabilities while supervising and validating each change made to them.
No it won't completely replace it. It would be used as a reference to the manual tables.
It's explained in the description section of this patch.
The decision was made after a discussion in the community's mailing list (http://lists.llvm.org/pipermail/llvm-dev/2017-July/115734.html)
Oct 2 2017
Ping.
Ping.
Oct 1 2017
LGTM
Fixed in D38120
Since the backend would be disabled at the end of the process, I think that it's better to keep it that way from the beginning.
The generated tables do not mean anything now and IMHO should not be visible to anyone who has no interest in contributing to this specific effort.
So I guess the best way to keep the temporary tables "hidden" is by enabling the "run-by-demand" mechanism now.
Sep 19 2017
Sep 18 2017
Sep 17 2017
Total redesign to the previous solution.
moved the transformation to a more "natural" area.
Sep 14 2017
Sep 13 2017
Sep 12 2017
Thanks for the answer.
LGTM