cleanup: remove support for 3DNow! cpu features by durin42 · Pull Request #127864 · rust-lang/rust (original) (raw)
In llvm/llvm-project@f0eb558 all support for 3DNow! intrinsics and instructions were removed. Per the commit message there, only AMD chips between 1998 and 2011 or so actually supported these instructions, and they were effectively replaced by SSE which was available on many more chips. I'd be very surprised if anyone had ever used these from Rust.
@rustbot label: +llvm-main
r? @wesleywiser
rustbot has assigned @wesleywiser.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.
Use r?
to explicitly pick a reviewer
rustbot added S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
Relevant to the compiler team, which will review and decide on the PR/issue.
Marks PRs that are making Rust work with LLVM main (this label is consumed by CI tooling)
labels
This comment has been minimized.
I think you are missing "were removed" or something like that in the first sentence of the description (and commit message).
I think you are missing "were removed" or something like that in the first sentence of the description (and commit message).
whoops, good catch. Thanks!
@@ -7210,29 +7210,6 @@ match name { |
---|
"llvm.ve.vl.xorm.MMM" => "__builtin_ve_vl_xorm_MMM", |
"llvm.ve.vl.xorm.mmm" => "__builtin_ve_vl_xorm_mmm", |
// x86 |
"llvm.x86.3dnow.pavgusb" => "__builtin_ia32_pavgusb", |
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file is auto-generated, so it doesn't make sense to remove these.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shucks, just noticed it's in the GCC backend too. I'll undo that.
You should squash this so the commit history still doesn't touch an autogenerated file (twice)
In llvm/llvm-project@f0eb558 all support for 3DNow! intrinsics and instructions were removed. Per the commit message there, only AMD chips between 1998 and 2011 or so actually supported these instructions, and they were effectively replaced by SSE which was available on many more chips. I'd be very surprised if anyone had ever used these from Rust.
📌 Commit 72e2255 has been approved by nikic
It is now in the queue for this repository.
bors added S-waiting-on-bors
Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
and removed S-waiting-on-review
Status: Awaiting review from the assignee but also interested parties.
labels
bors added a commit to rust-lang-ci/rust that referenced this pull request
Rollup of 7 pull requests
Successful merges:
- rust-lang#127491 (Migrate 8 very similar FFI
run-make
tests to rmake) - rust-lang#127687 (Const-to-pattern-to-MIR cleanup)
- rust-lang#127822 (Migrate
issue-85401-static-mir
,missing-crate-dependency
andunstable-flag-required
run-make
tests to rmake) - rust-lang#127842 (Remove
TrailingToken
.) - rust-lang#127864 (cleanup: remove support for 3DNow! cpu features)
- rust-lang#127899 (Mark myself as on leave)
- rust-lang#127901 (Add missing GHA group for building
llvm-bitcode-linker
)
r? @ghost
@rustbot
modify labels: rollup
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
Rollup merge of rust-lang#127864 - durin42:farewell-3dnow, r=nikic
cleanup: remove support for 3DNow! cpu features
In llvm/llvm-project@f0eb558 all support for 3DNow! intrinsics and instructions were removed. Per the commit message there, only AMD chips between 1998 and 2011 or so actually supported these instructions, and they were effectively replaced by SSE which was available on many more chips. I'd be very surprised if anyone had ever used these from Rust.
@rustbot
label: +llvm-main
ojeda mentioned this pull request
ojeda added a commit to ojeda/linux that referenced this pull request
LLVM 19 is dropping support for 3DNow! in commit f0eb5587ceeb ("Remove support for 3DNow!, both intrinsics and builtins. (#96246)"):
Remove support for 3DNow!, both intrinsics and builtins. (#96246)
This set of instructions was only supported by AMD chips starting in
the K6-2 (introduced 1998), and before the "Bulldozer" family
(2011). They were never much used, as they were effectively superseded
by the more-widely-implemented SSE (first implemented on the AMD side
in Athlon XP in 2001).
This is being done as a predecessor towards general removal of MMX
register usage. Since there is almost no usage of the 3DNow!
intrinsics, and no modern hardware even implements them, simple
removal seems like the best option.
Thus we should avoid passing these to the backend, since otherwise we get a diagnostic about it:
'-3dnow' is not a recognized feature for this target (ignoring feature)
'-3dnowa' is not a recognized feature for this target (ignoring feature)
We could try to disable them only up to LLVM 19 (not the C side one,
but the one used by rustc
, which may be built with a range of
LLVMs). However, to avoid more complexity, we can likely just remove
them altogether. According to Nikita [2]:
I don't think it's needed because LLVM should not generate 3dnow instructions unless specifically asked to, using intrinsics that Rust does not provide in the first place.
Thus do so, like Rust did for one of their builtin targets [3].
For those curious: Clang will warn only about trying to enable them
(-m3dnow{,a}
), but not about disabling them (-mno-3dnow{,a}
), so
there is no change needed there.
Cc: Nikita Popov github@npopov.com Cc: Nathan Chancellor nathan@kernel.org Cc: x86@kernel.org Link: llvm/llvm-project@f0eb558 [1] Link: rust-lang/rust#127864 (comment) [2] Link: rust-lang/rust#127864 [3] Closes: Rust-for-Linux#1094 Signed-off-by: Miguel Ojeda ojeda@kernel.org
intel-lab-lkp pushed a commit to intel-lab-lkp/linux that referenced this pull request
LLVM 19 is dropping support for 3DNow! in commit f0eb5587ceeb ("Remove support for 3DNow!, both intrinsics and builtins. (#96246)"):
Remove support for 3DNow!, both intrinsics and builtins. (#96246)
This set of instructions was only supported by AMD chips starting in
the K6-2 (introduced 1998), and before the "Bulldozer" family
(2011). They were never much used, as they were effectively superseded
by the more-widely-implemented SSE (first implemented on the AMD side
in Athlon XP in 2001).
This is being done as a predecessor towards general removal of MMX
register usage. Since there is almost no usage of the 3DNow!
intrinsics, and no modern hardware even implements them, simple
removal seems like the best option.
Thus we should avoid passing these to the backend, since otherwise we get a diagnostic about it:
'-3dnow' is not a recognized feature for this target (ignoring feature)
'-3dnowa' is not a recognized feature for this target (ignoring feature)
We could try to disable them only up to LLVM 19 (not the C side one,
but the one used by rustc
, which may be built with a range of
LLVMs). However, to avoid more complexity, we can likely just remove
them altogether. According to Nikita [2]:
I don't think it's needed because LLVM should not generate 3dnow instructions unless specifically asked to, using intrinsics that Rust does not provide in the first place.
Thus do so, like Rust did for one of their builtin targets [3].
For those curious: Clang will warn only about trying to enable them
(-m3dnow{,a}
), but not about disabling them (-mno-3dnow{,a}
), so
there is no change needed there.
Cc: Nikita Popov github@npopov.com Cc: Nathan Chancellor nathan@kernel.org Cc: x86@kernel.org Link: llvm/llvm-project@f0eb558 [1] Link: rust-lang/rust#127864 (comment) [2] Link: rust-lang/rust#127864 [3] Closes: Rust-for-Linux#1094 Signed-off-by: Miguel Ojeda ojeda@kernel.org
fbq pushed a commit to Rust-for-Linux/linux that referenced this pull request
LLVM 19 is dropping support for 3DNow! in commit f0eb5587ceeb ("Remove support for 3DNow!, both intrinsics and builtins. (#96246)"):
Remove support for 3DNow!, both intrinsics and builtins. (#96246)
This set of instructions was only supported by AMD chips starting in
the K6-2 (introduced 1998), and before the "Bulldozer" family
(2011). They were never much used, as they were effectively superseded
by the more-widely-implemented SSE (first implemented on the AMD side
in Athlon XP in 2001).
This is being done as a predecessor towards general removal of MMX
register usage. Since there is almost no usage of the 3DNow!
intrinsics, and no modern hardware even implements them, simple
removal seems like the best option.
Thus we should avoid passing these to the backend, since otherwise we get a diagnostic about it:
'-3dnow' is not a recognized feature for this target (ignoring feature)
'-3dnowa' is not a recognized feature for this target (ignoring feature)
We could try to disable them only up to LLVM 19 (not the C side one,
but the one used by rustc
, which may be built with a range of
LLVMs). However, to avoid more complexity, we can likely just remove
them altogether. According to Nikita [2]:
I don't think it's needed because LLVM should not generate 3dnow instructions unless specifically asked to, using intrinsics that Rust does not provide in the first place.
Thus do so, like Rust did for one of their builtin targets [3].
For those curious: Clang will warn only about trying to enable them
(-m3dnow{,a}
), but not about disabling them (-mno-3dnow{,a}
), so
there is no change needed there.
Cc: Nikita Popov github@npopov.com Cc: Nathan Chancellor nathan@kernel.org Cc: x86@kernel.org Link: llvm/llvm-project@f0eb558 [1] Link: rust-lang/rust#127864 (comment) [2] Link: rust-lang/rust#127864 [3] Closes: #1094 Signed-off-by: Miguel Ojeda ojeda@kernel.org Tested-by: Benno Lossin benno.lossin@proton.me Link: https://lore.kernel.org/r/20240806144558.114461-1-ojeda@kernel.org
ojeda added a commit to Rust-for-Linux/linux that referenced this pull request
LLVM 19 is dropping support for 3DNow! in commit f0eb5587ceeb ("Remove support for 3DNow!, both intrinsics and builtins. (#96246)"):
Remove support for 3DNow!, both intrinsics and builtins. (#96246)
This set of instructions was only supported by AMD chips starting in
the K6-2 (introduced 1998), and before the "Bulldozer" family
(2011). They were never much used, as they were effectively superseded
by the more-widely-implemented SSE (first implemented on the AMD side
in Athlon XP in 2001).
This is being done as a predecessor towards general removal of MMX
register usage. Since there is almost no usage of the 3DNow!
intrinsics, and no modern hardware even implements them, simple
removal seems like the best option.
Thus we should avoid passing these to the backend, since otherwise we get a diagnostic about it:
'-3dnow' is not a recognized feature for this target (ignoring feature)
'-3dnowa' is not a recognized feature for this target (ignoring feature)
We could try to disable them only up to LLVM 19 (not the C side one,
but the one used by rustc
, which may be built with a range of
LLVMs). However, to avoid more complexity, we can likely just remove
them altogether. According to Nikita [2]:
I don't think it's needed because LLVM should not generate 3dnow instructions unless specifically asked to, using intrinsics that Rust does not provide in the first place.
Thus do so, like Rust did for one of their builtin targets [3].
For those curious: Clang will warn only about trying to enable them
(-m3dnow{,a}
), but not about disabling them (-mno-3dnow{,a}
), so
there is no change needed there.
Cc: Nikita Popov github@npopov.com Cc: Nathan Chancellor nathan@kernel.org Cc: x86@kernel.org Link: llvm/llvm-project@f0eb558 [1] Link: rust-lang/rust#127864 (comment) [2] Link: rust-lang/rust#127864 [3] Closes: #1094 Tested-by: Benno Lossin benno.lossin@proton.me Tested-by: Alice Ryhl aliceryhl@google.com Link: https://lore.kernel.org/r/20240806144558.114461-1-ojeda@kernel.org Signed-off-by: Miguel Ojeda ojeda@kernel.org
ojeda added a commit to Rust-for-Linux/linux that referenced this pull request
LLVM 19 is dropping support for 3DNow! in commit f0eb5587ceeb ("Remove support for 3DNow!, both intrinsics and builtins. (#96246)"):
Remove support for 3DNow!, both intrinsics and builtins. (#96246)
This set of instructions was only supported by AMD chips starting in
the K6-2 (introduced 1998), and before the "Bulldozer" family
(2011). They were never much used, as they were effectively superseded
by the more-widely-implemented SSE (first implemented on the AMD side
in Athlon XP in 2001).
This is being done as a predecessor towards general removal of MMX
register usage. Since there is almost no usage of the 3DNow!
intrinsics, and no modern hardware even implements them, simple
removal seems like the best option.
Thus we should avoid passing these to the backend, since otherwise we get a diagnostic about it:
'-3dnow' is not a recognized feature for this target (ignoring feature)
'-3dnowa' is not a recognized feature for this target (ignoring feature)
We could try to disable them only up to LLVM 19 (not the C side one,
but the one used by rustc
, which may be built with a range of
LLVMs). However, to avoid more complexity, we can likely just remove
them altogether. According to Nikita [2]:
I don't think it's needed because LLVM should not generate 3dnow instructions unless specifically asked to, using intrinsics that Rust does not provide in the first place.
Thus do so, like Rust did for one of their builtin targets [3].
For those curious: Clang will warn only about trying to enable them
(-m3dnow{,a}
), but not about disabling them (-mno-3dnow{,a}
), so
there is no change needed there.
Cc: Nikita Popov github@npopov.com Cc: Nathan Chancellor nathan@kernel.org Cc: x86@kernel.org Link: llvm/llvm-project@f0eb558 [1] Link: rust-lang/rust#127864 (comment) [2] Link: rust-lang/rust#127864 [3] Closes: #1094 Tested-by: Benno Lossin benno.lossin@proton.me Tested-by: Alice Ryhl aliceryhl@google.com Link: https://lore.kernel.org/r/20240806144558.114461-1-ojeda@kernel.org Signed-off-by: Miguel Ojeda ojeda@kernel.org
Mr-Bossman pushed a commit to Mr-Bossman/linux that referenced this pull request
LLVM 19 is dropping support for 3DNow! in commit f0eb5587ceeb ("Remove support for 3DNow!, both intrinsics and builtins. (#96246)"):
Remove support for 3DNow!, both intrinsics and builtins. (#96246)
This set of instructions was only supported by AMD chips starting in
the K6-2 (introduced 1998), and before the "Bulldozer" family
(2011). They were never much used, as they were effectively superseded
by the more-widely-implemented SSE (first implemented on the AMD side
in Athlon XP in 2001).
This is being done as a predecessor towards general removal of MMX
register usage. Since there is almost no usage of the 3DNow!
intrinsics, and no modern hardware even implements them, simple
removal seems like the best option.
Thus we should avoid passing these to the backend, since otherwise we get a diagnostic about it:
'-3dnow' is not a recognized feature for this target (ignoring feature)
'-3dnowa' is not a recognized feature for this target (ignoring feature)
We could try to disable them only up to LLVM 19 (not the C side one,
but the one used by rustc
, which may be built with a range of
LLVMs). However, to avoid more complexity, we can likely just remove
them altogether. According to Nikita [2]:
I don't think it's needed because LLVM should not generate 3dnow instructions unless specifically asked to, using intrinsics that Rust does not provide in the first place.
Thus do so, like Rust did for one of their builtin targets [3].
For those curious: Clang will warn only about trying to enable them
(-m3dnow{,a}
), but not about disabling them (-mno-3dnow{,a}
), so
there is no change needed there.
Cc: Nikita Popov github@npopov.com Cc: Nathan Chancellor nathan@kernel.org Cc: x86@kernel.org Link: llvm/llvm-project@f0eb558 [1] Link: rust-lang/rust#127864 (comment) [2] Link: rust-lang/rust#127864 [3] Closes: Rust-for-Linux#1094 Tested-by: Benno Lossin benno.lossin@proton.me Tested-by: Alice Ryhl aliceryhl@google.com Link: https://lore.kernel.org/r/20240806144558.114461-1-ojeda@kernel.org Signed-off-by: Miguel Ojeda ojeda@kernel.org