rust-lang / compiler-team

A home for compiler team planning documents, meeting minutes, and other such things.
https://rust-lang.github.io/compiler-team/
Apache License 2.0
388 stars 69 forks source link

De-llvm some integer intrinsics that on the Rust side always use `u32` #693

Closed WaffleLapkin closed 11 months ago

WaffleLapkin commented 1 year ago

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 use u32. All those methods have as u32s 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:

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:

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.

rustbot commented 1 year ago

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

davidtwco commented 12 months ago

@rustbot second

apiraino commented 11 months ago

@rustbot label -final-comment-period +major-change-accepted