-
Notifications
You must be signed in to change notification settings - Fork 67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
De-llvm some integer intrinsics that on the Rust side always use u32
#693
Labels
major-change
A proposal to make a major change to rustc
major-change-accepted
A major change proposal that was accepted
T-compiler
Add this label so rfcbot knows to poll the compiler team
Comments
WaffleLapkin
added
T-compiler
Add this label so rfcbot knows to poll the compiler team
major-change
A proposal to make a major change to rustc
labels
Nov 26, 2023
This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed. cc @rust-lang/compiler @rust-lang/compiler-contributors |
@rustbot second |
rustbot
added
the
final-comment-period
The FCP has started, most (if not all) team members are in agreement
label
Dec 7, 2023
@rustbot label -final-comment-period +major-change-accepted |
rustbot
added
major-change-accepted
A major change proposal that was accepted
to-announce
Announce this issue on triage meeting
and removed
final-comment-period
The FCP has started, most (if not all) team members are in agreement
labels
Dec 18, 2023
matthiaskrgr
added a commit
to matthiaskrgr/rust
that referenced
this issue
Apr 2, 2024
De-LLVM the unchecked shifts [MCP#693] This is just one part of the MCP (rust-lang/compiler-team#693), but it's the one that IMHO removes the most noise from the standard library code. Seems net simpler this way, since MIR already supported heterogeneous shifts anyway, and thus it's not more work for backends than before. r? WaffleLapkin
matthiaskrgr
added a commit
to matthiaskrgr/rust
that referenced
this issue
Apr 2, 2024
De-LLVM the unchecked shifts [MCP#693] This is just one part of the MCP (rust-lang/compiler-team#693), but it's the one that IMHO removes the most noise from the standard library code. Seems net simpler this way, since MIR already supported heterogeneous shifts anyway, and thus it's not more work for backends than before. r? WaffleLapkin
rust-timer
added a commit
to rust-lang-ci/rust
that referenced
this issue
Apr 2, 2024
Rollup merge of rust-lang#123226 - scottmcm:u32-shifts, r=WaffleLapkin De-LLVM the unchecked shifts [MCP#693] This is just one part of the MCP (rust-lang/compiler-team#693), but it's the one that IMHO removes the most noise from the standard library code. Seems net simpler this way, since MIR already supported heterogeneous shifts anyway, and thus it's not more work for backends than before. r? WaffleLapkin
matthiaskrgr
added a commit
to matthiaskrgr/rust
that referenced
this issue
Apr 23, 2024
…tmcm,RalfJung,antoyo Dellvmize some intrinsics (use `u32` instead of `Self` in some integer intrinsics) This implements rust-lang/compiler-team#693 minus what was implemented in rust-lang#123226. Note: I decided to _not_ change `shl`/... builder methods, as it just doesn't seem worth it. r? `@scottmcm`
matthiaskrgr
added a commit
to matthiaskrgr/rust
that referenced
this issue
Apr 23, 2024
…tmcm,RalfJung,antoyo Dellvmize some intrinsics (use `u32` instead of `Self` in some integer intrinsics) This implements rust-lang/compiler-team#693 minus what was implemented in rust-lang#123226. Note: I decided to _not_ change `shl`/... builder methods, as it just doesn't seem worth it. r? ``@scottmcm``
rust-timer
added a commit
to rust-lang-ci/rust
that referenced
this issue
Apr 23, 2024
Rollup merge of rust-lang#124003 - WaffleLapkin:dellvmization, r=scottmcm,RalfJung,antoyo Dellvmize some intrinsics (use `u32` instead of `Self` in some integer intrinsics) This implements rust-lang/compiler-team#693 minus what was implemented in rust-lang#123226. Note: I decided to _not_ change `shl`/... builder methods, as it just doesn't seem worth it. r? ``@scottmcm``
github-actions bot
pushed a commit
to rust-lang/miri
that referenced
this issue
Apr 24, 2024
…Jung,antoyo Dellvmize some intrinsics (use `u32` instead of `Self` in some integer intrinsics) This implements rust-lang/compiler-team#693 minus what was implemented in #123226. Note: I decided to _not_ change `shl`/... builder methods, as it just doesn't seem worth it. r? ``@scottmcm``
bjorn3
pushed a commit
to rust-lang/rustc_codegen_cranelift
that referenced
this issue
Apr 28, 2024
…Jung,antoyo Dellvmize some intrinsics (use `u32` instead of `Self` in some integer intrinsics) This implements rust-lang/compiler-team#693 minus what was implemented in #123226. Note: I decided to _not_ change `shl`/... builder methods, as it just doesn't seem worth it. r? ``@scottmcm``
GuillaumeGomez
pushed a commit
to GuillaumeGomez/rustc_codegen_gcc
that referenced
this issue
May 21, 2024
…Jung,antoyo Dellvmize some intrinsics (use `u32` instead of `Self` in some integer intrinsics) This implements rust-lang/compiler-team#693 minus what was implemented in #123226. Note: I decided to _not_ change `shl`/... builder methods, as it just doesn't seem worth it. r? ``@scottmcm``
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
major-change
A proposal to make a major change to rustc
major-change-accepted
A major change proposal that was accepted
T-compiler
Add this label so rfcbot knows to poll the compiler team
Proposal
There is a number of integer operations which currently use an intrinsic which has
T
(type of the integer being operated on) in place where Rust methods useu32
. All those methods haveas u32
s in the implementation.The only reason why those signatures are the way they are, is because LLVM intrinsics expect them as such.
I propose to change the intrinsics to accept/return
u32
and make LLVM backend insert necessary casts.Here is the list of intrinsics I propose to change:
rotate_left
(.rotate_left()
)rotate_right
(.rotate_right
)unchecked_shl
(basis ofshl
methods)unchecked_shr
(basis ofshr
methods)ctlz
(.leading_zeros()
)cttz
(.trailing_zeros()
)ctlz_nonzero
(.leading_zeros()
)cttz_nonzero
(.trailing_zeros()
)ctpop
(.count_ones()
,.count_zeros()
)I would also like to change codegen methods when applicable (for example the
shl
/ashr
,lshr
).Disclosure: at my
{job}
we are working on a new backend for rustc, those changes would make my work a little bit easier.(still, I think this makes sense even without the context of my work)
Mentors or Reviewers
@scottmcm
Process
The main points of the Major Change Process are as follows:
@rustbot second
.-C flag
, then full team check-off is required.@rfcbot fcp merge
on either the MCP or the PR.You can read more about Major Change Proposals on forge.
Comments
This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.
The text was updated successfully, but these errors were encountered: