Skip to content

core::num::f16b Rust's 16bit Brain Float - #160859

Open
Jamesbarford wants to merge 17 commits into
rust-lang:mainfrom
Jamesbarford:feat/fb16-pt1
Open

core::num::f16b Rust's 16bit Brain Float#160859
Jamesbarford wants to merge 17 commits into
rust-lang:mainfrom
Jamesbarford:feat/fb16-pt1

Conversation

@Jamesbarford

@Jamesbarford Jamesbarford commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

View all comments

Implements the RFC: f16b type. Best reviewed commit by commit, happy to split into separate PRs if that is deemed easier to review. However the line count and surface area is, in my opinion, reasonably small.

Adds;

  • ABI plumbing for the f16b along with bfloat lang item to work with LLVM, GCC is explicitly unimplemented!(...)
  • f16b feature gate, page for f16b on libruscdoc and a struct bf16 in core::num
  • Tests
  • Treat f16b as a scalar primitive for scalable vectors

Issues;

@rustbot

rustbot commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Some changes occurred in compiler/rustc_attr_ir

cc @jdonszelmann, @JonathanBrouwer

This PR changes rustc_public

cc @oli-obk, @celinval, @ouz-a, @makai410

rustc_codegen_gcc is developed in its own repository. If possible, consider making this change to rust-lang/rustc_codegen_gcc instead.

cc @antoyo, @GuillaumeGomez

@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 10, 2026
@rustbot rustbot added T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Aug 10, 2026
@rustbot

rustbot commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

r? @jieyouxu

rustbot has assigned @jieyouxu.
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

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler
  • compiler expanded to 75 candidates
  • Random selection from 18 candidates

@rust-log-analyzer

This comment has been minimized.

@jieyouxu

Copy link
Copy Markdown
Member

@rustbot reroll

@rustbot rustbot assigned mati865 and unassigned jieyouxu Aug 10, 2026
}

fn type_f16b(&self) -> Type<'gcc> {
bug!("f16b is not supported by the GCC codegen backend")

@antoyo antoyo Aug 10, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks 😄, I will aim to add it in a follow up PR 👍

@rustbot

rustbot commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

rustc_codegen_cranelift is developed in its own repository. If possible, consider making this change to rust-lang/rustc_codegen_cranelift instead.

cc @bjorn3

Comment thread compiler/rustc_ty_utils/src/layout.rs

@bjorn3 bjorn3 Aug 10, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the calling convention of other targets?

View changes since the review

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe only these files were changed because they have an exhaustive match on Float.

However, my version of abi-cafe found two interesting failures: GCC and Clang are inconsistent on aarch64 and armv7

// callee, compiled with GCC 12
#include <inttypes.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>

typedef struct Many1 {
    __bf16 f0;
} Many1;

void struct_in_1(Many1 arg0) {
    printf("%d", arg0.f0);
}
// caller, compiled with clang 23
#include <inttypes.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>

typedef struct Many1 {
    __bf16 f0;
} Many1;

void struct_in_1(Many1 arg0);

void do_test(void) {
    {
        Many1 arg0 = { .f0 = (((union { uint16_t bits; __bf16 value; }){ .bits = 49600 }).value) };

        printf("%d", arg0.f0);
        struct_in_1(arg0);

    }
}

hits

    func struct_in_1's values differed
      values (native-endian hex bytes):
        expect: C0 C1
        caller: C0 C1
        callee: 04 00
      the value was arg0.f0: rustarithmeticty(f16b)
      whose arg was arg0: Many1

The current Rust implementation matches clang, and is hence incompatible with GCC


armv7 with hardware floats also runs into incompatibilities

[target.armv7-unknown-linux-gnueabihf."f16::conv_c::repr_c::clang-nightly_calls_distro-gcc"]
busted = "check"

[target.armv7-unknown-linux-gnueabihf."f16::conv_c::repr_c::distro-gcc_calls_clang-nightly"]
busted = "check"

[target.armv7-unknown-linux-gnueabihf."f16b::conv_c::repr_c::clang-nightly_calls_distro-gcc"]
busted = "check"

[target.armv7-unknown-linux-gnueabihf."f16b::conv_c::repr_c::distro-gcc_calls_clang-nightly"]
busted = "check"

Finally, you can let this ICE on many targets, e.g. mips, powerpc, s390x, sparc

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can also (e.g. on loongarch64 https://godbolt.org/z/Y3hdhG4e6) emit a __truncsfbf2 libcall that is not provided (probably needs to be added to compiler-builtins).


I think the ICEs are probably a blocker? That needs a mechanism similar to has_reliable_f128.

@Jamesbarford Jamesbarford Aug 12, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes I added it because of the exhaustive match statement in mips64.rs and sparc64.rs I've removed it; 40d3f6e and put in a panic!(...).

With regard to has_reliable_f128, are you envisaging a has_reliable_f16b entry on TargetConfig?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

With regard to has_reliable_f128, are you envisaging a has_reliable_f16b entry on TargetConfig?

Exactly

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's your take on those ABI mismatches? We should track that somewhere.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not particularly certain what mips64 should do.

It doesn't, at least to my knowledge, have hardware support. Given we aren't implementing scalar arithmetic and an f16b can only be created through a bit pattern or vendor intrinsics, I can't immediately see a practical application? Hence a panic! seems like a pragmatic choice for the time being.

@rust-log-analyzer

This comment has been minimized.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe only these files were changed because they have an exhaustive match on Float.

However, my version of abi-cafe found two interesting failures: GCC and Clang are inconsistent on aarch64 and armv7

// callee, compiled with GCC 12
#include <inttypes.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>

typedef struct Many1 {
    __bf16 f0;
} Many1;

void struct_in_1(Many1 arg0) {
    printf("%d", arg0.f0);
}
// caller, compiled with clang 23
#include <inttypes.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>

typedef struct Many1 {
    __bf16 f0;
} Many1;

void struct_in_1(Many1 arg0);

void do_test(void) {
    {
        Many1 arg0 = { .f0 = (((union { uint16_t bits; __bf16 value; }){ .bits = 49600 }).value) };

        printf("%d", arg0.f0);
        struct_in_1(arg0);

    }
}

hits

    func struct_in_1's values differed
      values (native-endian hex bytes):
        expect: C0 C1
        caller: C0 C1
        callee: 04 00
      the value was arg0.f0: rustarithmeticty(f16b)
      whose arg was arg0: Many1

The current Rust implementation matches clang, and is hence incompatible with GCC


armv7 with hardware floats also runs into incompatibilities

[target.armv7-unknown-linux-gnueabihf."f16::conv_c::repr_c::clang-nightly_calls_distro-gcc"]
busted = "check"

[target.armv7-unknown-linux-gnueabihf."f16::conv_c::repr_c::distro-gcc_calls_clang-nightly"]
busted = "check"

[target.armv7-unknown-linux-gnueabihf."f16b::conv_c::repr_c::clang-nightly_calls_distro-gcc"]
busted = "check"

[target.armv7-unknown-linux-gnueabihf."f16b::conv_c::repr_c::distro-gcc_calls_clang-nightly"]
busted = "check"

Finally, you can let this ICE on many targets, e.g. mips, powerpc, s390x, sparc

Comment thread library/core/src/num/f16b.rs
},
Primitive::Float(float) => match float {
Float::F16 | Float::F32 => "f32",
Float::F16 | Float::F16B | Float::F32 => "f32",

@folkertdev folkertdev Aug 11, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is that right? LLVM just crashes on bf16 right now, so it's probably at least untested?

View changes since the review

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could be mistaken, however I don't think WASM supports bf16? I've made it panic!(...) for now; 40d3f6e

Comment thread library/core/src/num/f16b.rs
Comment thread library/core/src/num/f16b.rs
Comment thread tests/codegen-llvm/float/f16b.rs Outdated
@rust-log-analyzer

This comment has been minimized.

@rustbot rustbot added the A-test-infra-minicore Area: `minicore` test auxiliary and `//@ add-core-stubs` label Aug 12, 2026
@rustbot

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rustbot

rustbot commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Some changes occurred in cfg and check-cfg configuration

cc @Urgau

miri is developed in its own repository. If the Miri part of this change can be broken out, consider making this change to rust-lang/miri instead. However, if Miri needs adjusting for rustc changes, just ignore this message.

cc @rust-lang/miri

@rust-log-analyzer

This comment has been minimized.

@mati865

mati865 commented Aug 12, 2026

Copy link
Copy Markdown
Member

I'm not a good reviewer for this change. Can somebody here pick it up rather than blindly rerolling?

@folkertdev

Copy link
Copy Markdown
Contributor

r? me

@rust-log-analyzer

This comment has been minimized.

Comment thread compiler/rustc_codegen_ssa/src/mir/naked_asm.rs Outdated

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's your take on those ABI mismatches? We should track that somewhere.

// This is similar to <https://github.com/llvm/llvm-project/issues/94434>, however
// does not work until LLVM 23 on Windows.
(Arch::Arm64EC, _) => major >= 23,
(Arch::AArch64, _) | (Arch::X86_64, _) | (Arch::RiscV64, _) => major >= 21,

@folkertdev folkertdev Aug 14, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

62a7f72 Added loongarch64 along with a test, of which I'd hesitate to say the output is correct. I verified it by comparing the output in the ./build... folder to see if it bore a resemblance to what C produced for something similar; https://godbolt.org/z/o17e1e5bc

Comment thread library/core/src/num/f16b.rs Outdated
Comment on lines +1 to +2
//@ edition: 2021
//@ only-aarch64

@folkertdev folkertdev Aug 14, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this probably needs -O too

View changes since the review

@folkertdev folkertdev Aug 14, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you match tests/ui/feature-gates/feature-gate-f16.rs more closely here?

View changes since the review

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-bors

This comment has been minimized.

F16 => tcx.types.f16,
F16B => Ty::new_adt(
tcx,
tcx.adt_def(tcx.require_lang_item(LangItem::BFloat, DUMMY_SP)),

@RalfJung RalfJung Aug 16, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is... interesting.^^

Why does this need both a lang item and a new variant in abi::Float?
Is the key thing that we do not have a new variant in ty::FloatTy?

View changes since the review

@folkertdev folkertdev Aug 16, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because we don't (at present) want to make it a true builtin (like f16), hence the lang item, but bfloat is used in LLVM intrinsic signatures so we want it to make it all the way to the backend.

This is different from Complex which has custom ABI requirements but does not occur in any LLVM signatures.

#[cfg_attr(feature = "nightly", derive(StableHash))]
pub enum Float {
F16,
F16B,

@RalfJung RalfJung Aug 16, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
F16B,
/// `f16b`. This is not a builtin type in Rust (it is exposed as a lang item),
/// but it is a builtin type in LLVM so needs to be explicitly represented
/// in the backend.
F16B,

View changes since the review

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job x86_64-gnu-llvm-21 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)

---- [mir-opt] tests/mir-opt/issues/issue_137086.rs#gpu stdout ----
------rustc stdout------------------------------

------rustc stderr------------------------------
error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:402:11
    |
402 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:406:11
    |
406 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:412:11
    |
412 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:425:11
    |
425 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:428:11
    |
428 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
---
    |
402 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: expected names are: `FALSE`, `cpu`, `gpu`, and `test` and 34 more
    = help: to expect this configuration use `--check-cfg=cfg(target_has_reliable_f16b)`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
    = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition name: `target_has_reliable_f16b`
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:406:11
---

warning: type `c_void` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:448:10
    |
448 | pub enum c_void {
    |          ^^^^^^ help: convert the identifier to upper camel case: `CVoid`
    |
    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default

warning: variant `__variant1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:449:5
    |
449 |     __variant1,
    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `Variant1`

warning: variant `__variant2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:450:5
    |
450 |     __variant2,
    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `Variant2`

warning: type `f16x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:499:14
    |
499 |     pub type f16x2 = Simd<f16, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x2`

warning: type `f16x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:500:14
    |
500 |     pub type f16x4 = Simd<f16, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x4`

warning: type `f16x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:501:14
    |
501 |     pub type f16x8 = Simd<f16, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x8`

warning: type `f16x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:502:14
    |
502 |     pub type f16x16 = Simd<f16, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x16`

warning: type `f16x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:503:14
    |
503 |     pub type f16x32 = Simd<f16, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x32`

warning: type `f32x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:505:14
    |
505 |     pub type f32x2 = Simd<f32, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x2`

warning: type `f32x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:506:14
    |
506 |     pub type f32x4 = Simd<f32, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x4`

warning: type `f32x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:507:14
    |
507 |     pub type f32x8 = Simd<f32, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x8`

warning: type `f32x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:508:14
    |
508 |     pub type f32x16 = Simd<f32, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x16`

warning: type `f32x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:509:14
    |
509 |     pub type f32x32 = Simd<f32, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x32`

warning: type `f64x1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:511:14
    |
511 |     pub type f64x1 = Simd<f64, 1>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x1`

warning: type `f64x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:512:14
    |
512 |     pub type f64x2 = Simd<f64, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x2`

warning: type `f64x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:513:14
    |
513 |     pub type f64x4 = Simd<f64, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x4`

warning: type `f64x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:514:14
    |
514 |     pub type f64x8 = Simd<f64, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x8`

warning: type `i8x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:516:14
    |
516 |     pub type i8x8 = Simd<i8, 8>;
    |              ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x8`

warning: type `i8x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:517:14
    |
517 |     pub type i8x16 = Simd<i8, 16>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x16`

warning: type `i8x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:518:14
    |
518 |     pub type i8x32 = Simd<i8, 32>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x32`

warning: type `i8x64` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:519:14
    |
519 |     pub type i8x64 = Simd<i8, 64>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x64`

warning: type `i16x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:521:14
    |
521 |     pub type i16x2 = Simd<i16, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x2`

warning: type `i16x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:522:14
    |
522 |     pub type i16x4 = Simd<i16, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x4`

warning: type `i16x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:523:14
    |
523 |     pub type i16x8 = Simd<i16, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x8`

warning: type `i16x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:524:14
    |
524 |     pub type i16x16 = Simd<i16, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x16`

warning: type `i16x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:525:14
    |
525 |     pub type i16x32 = Simd<i16, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x32`

warning: type `i32x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:527:14
    |
527 |     pub type i32x2 = Simd<i32, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x2`

warning: type `i32x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:528:14
    |
528 |     pub type i32x4 = Simd<i32, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x4`

warning: type `i32x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:529:14
    |
529 |     pub type i32x8 = Simd<i32, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x8`

warning: type `i32x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:530:14
    |
530 |     pub type i32x16 = Simd<i32, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x16`

warning: type `i64x1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:532:14
    |
532 |     pub type i64x1 = Simd<i64, 1>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x1`

warning: type `i64x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:533:14
    |
533 |     pub type i64x2 = Simd<i64, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x2`

warning: type `i64x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:534:14
    |
534 |     pub type i64x4 = Simd<i64, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x4`

warning: type `i64x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:535:14
    |
535 |     pub type i64x8 = Simd<i64, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x8`

warning: type `u8x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:537:14
    |
537 |     pub type u8x16 = Simd<u8, 16>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `U8x16`

error: aborting due to 5 previous errors; 40 warnings emitted

For more information about this error, try `rustc --explain E0658`.

------------------------------------------

error in revision `gpu`: auxiliary build of /checkout/tests/auxiliary/minicore.rs failed to compile: 
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/auxiliary/minicore.rs" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "--cfg" "gpu" "--check-cfg" "cfg(test,FALSE,cpu,gpu)" "-O" "-Copt-level=1" "-Zdump-mir=all" "-Zvalidate-mir" "-Zlint-mir" "-Zdump-mir-exclude-pass-number" "-Zmir-include-spans=false" "--crate-type=rlib" "-Zmir-opt-level=4" "-Zmir-enable-passes=+ReorderBasicBlocks,+ReorderLocals" "-Zdump-mir-dir=/checkout/obj/build/x86_64-unknown-linux-gnu/test/mir-opt/issues/issue_137086.gpu" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/mir-opt/issues/issue_137086.gpu/libminicore.rlib" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Cpanic=abort" "-Cforce-unwind-tables=yes" "-Z" "mir-opt-level=4" "--target" "nvptx64-nvidia-cuda" "--crate-type" "rlib" "-Cpanic=abort"
stdout: none
--- stderr -------------------------------
error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:402:11
    |
402 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:406:11
    |
406 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:412:11
    |
412 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:425:11
    |
425 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:428:11
    |
428 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
---
    |
402 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: expected names are: `FALSE`, `cpu`, `gpu`, and `test` and 34 more
    = help: to expect this configuration use `--check-cfg=cfg(target_has_reliable_f16b)`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
    = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition name: `target_has_reliable_f16b`
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:406:11
---

warning: type `c_void` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:448:10
    |
448 | pub enum c_void {
    |          ^^^^^^ help: convert the identifier to upper camel case: `CVoid`
    |
    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default

warning: variant `__variant1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:449:5
    |
449 |     __variant1,
    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `Variant1`

warning: variant `__variant2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:450:5
    |
450 |     __variant2,
    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `Variant2`

warning: type `f16x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:499:14
    |
499 |     pub type f16x2 = Simd<f16, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x2`

warning: type `f16x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:500:14
    |
500 |     pub type f16x4 = Simd<f16, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x4`

warning: type `f16x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:501:14
    |
501 |     pub type f16x8 = Simd<f16, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x8`

warning: type `f16x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:502:14
    |
502 |     pub type f16x16 = Simd<f16, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x16`

warning: type `f16x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:503:14
    |
503 |     pub type f16x32 = Simd<f16, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x32`

warning: type `f32x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:505:14
    |
505 |     pub type f32x2 = Simd<f32, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x2`

warning: type `f32x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:506:14
    |
506 |     pub type f32x4 = Simd<f32, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x4`

warning: type `f32x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:507:14
    |
507 |     pub type f32x8 = Simd<f32, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x8`

warning: type `f32x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:508:14
    |
508 |     pub type f32x16 = Simd<f32, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x16`

warning: type `f32x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:509:14
    |
509 |     pub type f32x32 = Simd<f32, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x32`

warning: type `f64x1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:511:14
    |
511 |     pub type f64x1 = Simd<f64, 1>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x1`

warning: type `f64x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:512:14
    |
512 |     pub type f64x2 = Simd<f64, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x2`

warning: type `f64x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:513:14
    |
513 |     pub type f64x4 = Simd<f64, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x4`

warning: type `f64x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:514:14
    |
514 |     pub type f64x8 = Simd<f64, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x8`

warning: type `i8x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:516:14
    |
516 |     pub type i8x8 = Simd<i8, 8>;
    |              ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x8`

warning: type `i8x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:517:14
    |
517 |     pub type i8x16 = Simd<i8, 16>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x16`

warning: type `i8x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:518:14
    |
518 |     pub type i8x32 = Simd<i8, 32>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x32`

warning: type `i8x64` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:519:14
    |
519 |     pub type i8x64 = Simd<i8, 64>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x64`

warning: type `i16x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:521:14
    |
521 |     pub type i16x2 = Simd<i16, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x2`

warning: type `i16x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:522:14
    |
522 |     pub type i16x4 = Simd<i16, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x4`

warning: type `i16x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:523:14
    |
523 |     pub type i16x8 = Simd<i16, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x8`

warning: type `i16x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:524:14
    |
524 |     pub type i16x16 = Simd<i16, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x16`

warning: type `i16x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:525:14
    |
525 |     pub type i16x32 = Simd<i16, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x32`

warning: type `i32x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:527:14
    |
527 |     pub type i32x2 = Simd<i32, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x2`

warning: type `i32x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:528:14
    |
528 |     pub type i32x4 = Simd<i32, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x4`

warning: type `i32x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:529:14
    |
529 |     pub type i32x8 = Simd<i32, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x8`

warning: type `i32x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:530:14
    |
530 |     pub type i32x16 = Simd<i32, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x16`

warning: type `i64x1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:532:14
    |
532 |     pub type i64x1 = Simd<i64, 1>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x1`

warning: type `i64x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:533:14
    |
533 |     pub type i64x2 = Simd<i64, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x2`

warning: type `i64x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:534:14
    |
534 |     pub type i64x4 = Simd<i64, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x4`

warning: type `i64x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:535:14
    |
535 |     pub type i64x8 = Simd<i64, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x8`

warning: type `u8x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:537:14
    |
537 |     pub type u8x16 = Simd<u8, 16>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `U8x16`

error: aborting due to 5 previous errors; 40 warnings emitted

For more information about this error, try `rustc --explain E0658`.
------------------------------------------

---- [mir-opt] tests/mir-opt/issues/issue_137086.rs#gpu stdout end ----
---- [mir-opt] tests/mir-opt/issues/issue_137086.rs#cpu stdout ----
------rustc stdout------------------------------

------rustc stderr------------------------------
error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:402:11
    |
402 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:406:11
    |
406 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:412:11
    |
412 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:425:11
    |
425 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:428:11
    |
428 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
---
    |
402 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: expected names are: `FALSE`, `cpu`, `gpu`, and `test` and 34 more
    = help: to expect this configuration use `--check-cfg=cfg(target_has_reliable_f16b)`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
    = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition name: `target_has_reliable_f16b`
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:406:11
---

warning: type `c_void` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:448:10
    |
448 | pub enum c_void {
    |          ^^^^^^ help: convert the identifier to upper camel case: `CVoid`
    |
    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default

warning: variant `__variant1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:449:5
    |
449 |     __variant1,
    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `Variant1`

warning: variant `__variant2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:450:5
    |
450 |     __variant2,
    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `Variant2`

warning: type `f16x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:499:14
    |
499 |     pub type f16x2 = Simd<f16, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x2`

warning: type `f16x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:500:14
    |
500 |     pub type f16x4 = Simd<f16, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x4`

warning: type `f16x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:501:14
    |
501 |     pub type f16x8 = Simd<f16, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x8`

warning: type `f16x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:502:14
    |
502 |     pub type f16x16 = Simd<f16, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x16`

warning: type `f16x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:503:14
    |
503 |     pub type f16x32 = Simd<f16, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x32`

warning: type `f32x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:505:14
    |
505 |     pub type f32x2 = Simd<f32, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x2`

warning: type `f32x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:506:14
    |
506 |     pub type f32x4 = Simd<f32, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x4`

warning: type `f32x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:507:14
    |
507 |     pub type f32x8 = Simd<f32, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x8`

warning: type `f32x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:508:14
    |
508 |     pub type f32x16 = Simd<f32, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x16`

warning: type `f32x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:509:14
    |
509 |     pub type f32x32 = Simd<f32, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x32`

warning: type `f64x1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:511:14
    |
511 |     pub type f64x1 = Simd<f64, 1>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x1`

warning: type `f64x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:512:14
    |
512 |     pub type f64x2 = Simd<f64, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x2`

warning: type `f64x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:513:14
    |
513 |     pub type f64x4 = Simd<f64, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x4`

warning: type `f64x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:514:14
    |
514 |     pub type f64x8 = Simd<f64, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x8`

warning: type `i8x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:516:14
    |
516 |     pub type i8x8 = Simd<i8, 8>;
    |              ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x8`

warning: type `i8x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:517:14
    |
517 |     pub type i8x16 = Simd<i8, 16>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x16`

warning: type `i8x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:518:14
    |
518 |     pub type i8x32 = Simd<i8, 32>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x32`

warning: type `i8x64` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:519:14
    |
519 |     pub type i8x64 = Simd<i8, 64>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x64`

warning: type `i16x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:521:14
    |
521 |     pub type i16x2 = Simd<i16, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x2`

warning: type `i16x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:522:14
    |
522 |     pub type i16x4 = Simd<i16, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x4`

warning: type `i16x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:523:14
    |
523 |     pub type i16x8 = Simd<i16, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x8`

warning: type `i16x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:524:14
    |
524 |     pub type i16x16 = Simd<i16, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x16`

warning: type `i16x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:525:14
    |
525 |     pub type i16x32 = Simd<i16, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x32`

warning: type `i32x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:527:14
    |
527 |     pub type i32x2 = Simd<i32, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x2`

warning: type `i32x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:528:14
    |
528 |     pub type i32x4 = Simd<i32, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x4`

warning: type `i32x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:529:14
    |
529 |     pub type i32x8 = Simd<i32, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x8`

warning: type `i32x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:530:14
    |
530 |     pub type i32x16 = Simd<i32, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x16`

warning: type `i64x1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:532:14
    |
532 |     pub type i64x1 = Simd<i64, 1>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x1`

warning: type `i64x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:533:14
    |
533 |     pub type i64x2 = Simd<i64, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x2`

warning: type `i64x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:534:14
    |
534 |     pub type i64x4 = Simd<i64, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x4`

warning: type `i64x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:535:14
    |
535 |     pub type i64x8 = Simd<i64, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x8`

warning: type `u8x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:537:14
    |
537 |     pub type u8x16 = Simd<u8, 16>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `U8x16`

error: aborting due to 5 previous errors; 40 warnings emitted

For more information about this error, try `rustc --explain E0658`.

------------------------------------------

error in revision `cpu`: auxiliary build of /checkout/tests/auxiliary/minicore.rs failed to compile: 
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/auxiliary/minicore.rs" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "--cfg" "cpu" "--check-cfg" "cfg(test,FALSE,cpu,gpu)" "-O" "-Copt-level=1" "-Zdump-mir=all" "-Zvalidate-mir" "-Zlint-mir" "-Zdump-mir-exclude-pass-number" "-Zmir-include-spans=false" "--crate-type=rlib" "-Zmir-opt-level=4" "-Zmir-enable-passes=+ReorderBasicBlocks,+ReorderLocals" "-Zdump-mir-dir=/checkout/obj/build/x86_64-unknown-linux-gnu/test/mir-opt/issues/issue_137086.cpu" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/mir-opt/issues/issue_137086.cpu/libminicore.rlib" "-A" "unused" "-W" "unused_attributes" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Cpanic=abort" "-Cforce-unwind-tables=yes" "-Z" "mir-opt-level=4" "--target" "x86_64-unknown-linux-gnu" "--crate-type" "rlib" "-Cpanic=abort"
stdout: none
--- stderr -------------------------------
error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:402:11
    |
402 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:406:11
    |
406 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:412:11
    |
412 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:425:11
    |
425 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: add `#![feature(cfg_target_has_reliable_f16b)]` to the crate attributes to enable
    = note: this compiler was built on 2026-08-17; consider upgrading it if it is out of date

error[E0658]: `cfg(target_has_reliable_f16b)` is experimental and subject to change
##[error]   --> /checkout/tests/auxiliary/minicore.rs:428:11
    |
428 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
---
    |
402 |     #[cfg(target_has_reliable_f16b)]
    |           ^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = help: expected names are: `FALSE`, `cpu`, `gpu`, and `test` and 34 more
    = help: to expect this configuration use `--check-cfg=cfg(target_has_reliable_f16b)`
    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
    = note: `#[warn(unexpected_cfgs)]` on by default

warning: unexpected `cfg` condition name: `target_has_reliable_f16b`
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:406:11
---

warning: type `c_void` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:448:10
    |
448 | pub enum c_void {
    |          ^^^^^^ help: convert the identifier to upper camel case: `CVoid`
    |
    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default

warning: variant `__variant1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:449:5
    |
449 |     __variant1,
    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `Variant1`

warning: variant `__variant2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:450:5
    |
450 |     __variant2,
    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `Variant2`

warning: type `f16x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:499:14
    |
499 |     pub type f16x2 = Simd<f16, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x2`

warning: type `f16x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:500:14
    |
500 |     pub type f16x4 = Simd<f16, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x4`

warning: type `f16x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:501:14
    |
501 |     pub type f16x8 = Simd<f16, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x8`

warning: type `f16x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:502:14
    |
502 |     pub type f16x16 = Simd<f16, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x16`

warning: type `f16x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:503:14
    |
503 |     pub type f16x32 = Simd<f16, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F16x32`

warning: type `f32x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:505:14
    |
505 |     pub type f32x2 = Simd<f32, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x2`

warning: type `f32x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:506:14
    |
506 |     pub type f32x4 = Simd<f32, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x4`

warning: type `f32x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:507:14
    |
507 |     pub type f32x8 = Simd<f32, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x8`

warning: type `f32x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:508:14
    |
508 |     pub type f32x16 = Simd<f32, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x16`

warning: type `f32x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:509:14
    |
509 |     pub type f32x32 = Simd<f32, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F32x32`

warning: type `f64x1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:511:14
    |
511 |     pub type f64x1 = Simd<f64, 1>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x1`

warning: type `f64x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:512:14
    |
512 |     pub type f64x2 = Simd<f64, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x2`

warning: type `f64x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:513:14
    |
513 |     pub type f64x4 = Simd<f64, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x4`

warning: type `f64x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:514:14
    |
514 |     pub type f64x8 = Simd<f64, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `F64x8`

warning: type `i8x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:516:14
    |
516 |     pub type i8x8 = Simd<i8, 8>;
    |              ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x8`

warning: type `i8x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:517:14
    |
517 |     pub type i8x16 = Simd<i8, 16>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x16`

warning: type `i8x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:518:14
    |
518 |     pub type i8x32 = Simd<i8, 32>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x32`

warning: type `i8x64` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:519:14
    |
519 |     pub type i8x64 = Simd<i8, 64>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I8x64`

warning: type `i16x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:521:14
    |
521 |     pub type i16x2 = Simd<i16, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x2`

warning: type `i16x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:522:14
    |
522 |     pub type i16x4 = Simd<i16, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x4`

warning: type `i16x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:523:14
    |
523 |     pub type i16x8 = Simd<i16, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x8`

warning: type `i16x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:524:14
    |
524 |     pub type i16x16 = Simd<i16, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x16`

warning: type `i16x32` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:525:14
    |
525 |     pub type i16x32 = Simd<i16, 32>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I16x32`

warning: type `i32x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:527:14
    |
527 |     pub type i32x2 = Simd<i32, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x2`

warning: type `i32x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:528:14
    |
528 |     pub type i32x4 = Simd<i32, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x4`

warning: type `i32x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:529:14
    |
529 |     pub type i32x8 = Simd<i32, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x8`

warning: type `i32x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:530:14
    |
530 |     pub type i32x16 = Simd<i32, 16>;
    |              ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I32x16`

warning: type `i64x1` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:532:14
    |
532 |     pub type i64x1 = Simd<i64, 1>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x1`

warning: type `i64x2` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:533:14
    |
533 |     pub type i64x2 = Simd<i64, 2>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x2`

warning: type `i64x4` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:534:14
    |
534 |     pub type i64x4 = Simd<i64, 4>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x4`

warning: type `i64x8` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:535:14
    |
535 |     pub type i64x8 = Simd<i64, 8>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `I64x8`

warning: type `u8x16` should have an upper camel case name
##[warning]   --> /checkout/tests/auxiliary/minicore.rs:537:14
    |
537 |     pub type u8x16 = Simd<u8, 16>;
    |              ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `U8x16`

error: aborting due to 5 previous errors; 40 warnings emitted

For more information about this error, try `rustc --explain E0658`.
------------------------------------------

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-test-infra-minicore Area: `minicore` test auxiliary and `//@ add-core-stubs` S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants