[llvm] Add 3 way compare <=> integer intrinsics to Langref (PR #83227)

via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 6 08:32:56 PST 2024


scottmcm wrote:

> Is this meant to be i32?

FWIW, I feel strongly that it shouldn't be `i32`, because it would be a shame to need a `trunc` on it for both clang & rustc -- today `std::strong_ordering` (<https://cpp.godbolt.org/z/4qc7YhqW3>) and `std::cmp::Ordering` (<https://rust.godbolt.org/z/5E3fK5hf5>) are both `i8`.

Sometimes needing a lossless instruction like `sext` to get an i32 feels much more tolerable than nearly-always needing a lossy `trunc` instruction to get `i8` -- especially when we don't yet have `trunc nsw`.

I don't know enough to be able to say whether overloading it for multiple possible return types would be valuable, so I'll leave that for others to comment on.


https://github.com/llvm/llvm-project/pull/83227


More information about the llvm-commits mailing list