User Details
- User Since
- Feb 22 2022, 7:13 AM (56 w, 2 d)
Yesterday
Mon, Feb 27
The change looks correct. Let's wait for somebody else to give their final approval.
Dec 2 2022
Dec 1 2022
Do other targets not support > 128 bit integers, or is this PR only the first conservative step of lifting the limit?
I think this was the last reason for restricting _BitInt to <= 128 by default in clang. Are you planning to create a PR to lift that restriction now?
Nov 29 2022
I'm scared about missing some subtle issue in the implementation, but I think the test cases on the other PR should cover that.
Nov 23 2022
Rebase main to update alloca-bitcast.ll
Split tests and remove explicit metadata numbers
Nov 22 2022
Great that you worked on this!
I will have a deeper look at the end of this week.
Nov 18 2022
Hey @jmorse, I talked to @nikolaos-amd offline and will take over this revision.
Sep 12 2022
Use a field instead of virtual functions
Sep 8 2022
Thanks back to everyone who helped by reviewing!
Unfortunately, float-to-big-int and and big-int-to-float conversions still crash in the backend.
I want to take a look at this next.
Sep 7 2022
Sep 6 2022
- Simplified tests to only check for NOT: call
Sep 2 2022
Yes, you are right. I will restrict the IR tests to maybe just check for the absence of a call instructions? And at least to check that llc doesn't assert like it used to do.
Hey, thanks for the PR!
In the test cases, I think that both of the modified transformations (simplifyAllocaArraySize & PromoteCastOfAllocation) trigger (one after another).
Aug 25 2022
Ping :)
Aug 18 2022
Rename expandlargedivrem to expand-large-div-rem
Fix filenames in comments
Aug 17 2022
Thanks @aaron.ballman for helping out with the reviewers!
Aug 15 2022
Rebased
Friendly ping :-)
I think I addressed all comments. Is somebody able to approve this?
Jul 29 2022
We explored and prototyped the approach of adding a functions to compiler-rt in a different PR. We discovered multiple issues.
Jul 28 2022
Set limit to 64 bit for ARM and x86_32
Clarify that x86_32 cannot lower division with more than 64 bits.
Fix description of expand-div-rem-bits argument
Use ConstantInt::get
Jul 19 2022
Abandoned in favor of https://reviews.llvm.org/D130076
I'm abandoning this approach in favor of https://reviews.llvm.org/D130076
Instead of linking to libbitint, I instead created a backend pass to transform div/rem instructions: https://reviews.llvm.org/D130076
Remove pass from pass pipeline (will be added in next PR)
Jul 15 2022
Thanks for the review! I updated the PR to reflect your comments.
Implement review comments
Jul 12 2022
Ping, how can I get review/approval for this PR? Should I add somebody else as reviewer?
Jul 6 2022
Merged
With the work around constant expressions (e.g. https://reviews.llvm.org/rG941c8e0ea50b), I might not need to handle div/mod constants anymore. For that reason, I would at least land this PR without support for transforming constant expressions.
Jun 17 2022
Use IntegerDivison.cpp
Do not emit separate functions
Turn into FunctionPass
Jun 15 2022
Jun 14 2022
Jun 8 2022
Thanks for the quick review!
Used Optional
Added entry to release notes
Modifed help text according to suggestion
Added comment to LANGOPT that it will be removed in the future
I split the introduction of -fexperimental-max-bitint-width into https://reviews.llvm.org/D127287 because there is still discussion about the bitint libraries in the backend PRs.
May 30 2022
I have tried to circumvent various issues around changing compiler-rt by synthesizing the division function directly in LLVM: https://reviews.llvm.org/D126644
May 9 2022
There is some push back on the gcc mailing list both on requiring an extra word to enable Knuth [0]
and generally defining the libgcc function before _BitInt is implemented in gcc [1].
There are also concerns about whether this would be consistent with the ABI,
which is isn't finalized on all targets yet.
May 5 2022
May 3 2022
unsigned int -> unsigned
Fix memory leaks in unit tests
Apr 10 2022
Note for self: Also broke armv8 here: https://lab.llvm.org/buildbot/#/builders/178/builds/1902
Apr 8 2022
Apr 7 2022
@howard.hinnant, as Code Owner, do you know a good person to review/approve this? @programmerjake would like a second opinion.
Mar 29 2022
Require 'a' to be a large integer with n + 1 words; update tests accordingly
- Remove diagnostics for float-to-bitint
- Remove lexer changes (will be another PR)
- Add -fexperimental-max-bitint-width=N
Mar 28 2022
Implement a basic long division
Make it work on big endian machines
Only provide
void __divmodei5(su_int *quo, su_int *rem, su_int *a, su_int *b, unsigned int words)
and
void __udivmodei5(su_int *quo, su_int *rem, const su_int *a, const su_int *b, unsigned int words)
Mar 22 2022
In that case I will go for a subtract-shift implementation because Knuth seem to require multiple temporary buffers, and it would be odd to expose all of them through the API.
It also means that I likely need to modify the LLVM backend to emit calls to divmodei5 and not divei4 or __modei4.
I opened the review for the clang changes (including linking bitint by default) here: https://reviews.llvm.org/D122234
Thanks a lot!
Mar 21 2022
Hey, yes it's still near the top of my TODO list. Had a few other things to do, but I'm planning to come back to this.
LGTM
Mar 14 2022
@LuoYuanke, thank you very much for the review and comments!
Mar 11 2022
Rename to ExpandExtIntRes_DIVREM
Add nounwind
Mar 7 2022
Add a test case for aarch64 (showing big endian)