- User Since
- Feb 22 2022, 7:13 AM (56 w, 2 d)
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
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
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
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
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
Do not emit separate functions
Turn into FunctionPass
Jun 15 2022
Jun 14 2022
Jun 8 2022
Thanks for the quick review!
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 
and generally defining the libgcc function before _BitInt is implemented in gcc .
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
void __divmodei5(su_int *quo, su_int *rem, su_int *a, su_int *b, unsigned int words)
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.
Mar 14 2022
@LuoYuanke, thank you very much for the review and comments!
Mar 11 2022
Rename to ExpandExtIntRes_DIVREM
Mar 7 2022
Add a test case for aarch64 (showing big endian)