about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/spellcheck.yml23
-rw-r--r--.gitignore2
-rw-r--r--Cargo.lock159
-rw-r--r--REUSE.toml2
-rw-r--r--compiler/rustc_ast/src/ast.rs285
-rw-r--r--compiler/rustc_ast/src/format.rs20
-rw-r--r--compiler/rustc_ast/src/mut_visit.rs259
-rw-r--r--compiler/rustc_ast/src/tokenstream.rs4
-rw-r--r--compiler/rustc_ast/src/visit.rs2235
-rw-r--r--compiler/rustc_ast_lowering/src/lib.rs29
-rw-r--r--compiler/rustc_attr_data_structures/src/attributes.rs20
-rw-r--r--compiler/rustc_attr_data_structures/src/encode_cross_crate.rs2
-rw-r--r--compiler/rustc_attr_data_structures/src/lib.rs4
-rw-r--r--compiler/rustc_attr_parsing/src/attributes/codegen_attrs.rs3
-rw-r--r--compiler/rustc_attr_parsing/src/attributes/macro_attrs.rs115
-rw-r--r--compiler/rustc_attr_parsing/src/attributes/mod.rs1
-rw-r--r--compiler/rustc_attr_parsing/src/attributes/must_use.rs2
-rw-r--r--compiler/rustc_attr_parsing/src/attributes/repr.rs2
-rw-r--r--compiler/rustc_attr_parsing/src/context.rs14
-rw-r--r--compiler/rustc_attr_parsing/src/session_diagnostics.rs10
-rw-r--r--compiler/rustc_borrowck/src/diagnostics/move_errors.rs9
-rw-r--r--compiler/rustc_codegen_cranelift/example/float-minmax-pass.rs22
-rw-r--r--compiler/rustc_codegen_cranelift/example/mini_core_hello_world.rs3
-rw-r--r--compiler/rustc_codegen_gcc/build_system/src/test.rs2
-rw-r--r--compiler/rustc_codegen_llvm/src/back/lto.rs7
-rw-r--r--compiler/rustc_codegen_llvm/src/builder.rs69
-rw-r--r--compiler/rustc_codegen_llvm/src/builder/gpu_offload.rs439
-rw-r--r--compiler/rustc_codegen_llvm/src/common.rs9
-rw-r--r--compiler/rustc_codegen_llvm/src/context.rs18
-rw-r--r--compiler/rustc_codegen_llvm/src/coverageinfo/mapgen/spans.rs28
-rw-r--r--compiler/rustc_codegen_llvm/src/declare.rs6
-rw-r--r--compiler/rustc_codegen_llvm/src/lib.rs22
-rw-r--r--compiler/rustc_codegen_llvm/src/llvm/enzyme_ffi.rs10
-rw-r--r--compiler/rustc_codegen_llvm/src/llvm/ffi.rs8
-rw-r--r--compiler/rustc_codegen_ssa/src/back/write.rs2
-rw-r--r--compiler/rustc_codegen_ssa/src/mir/operand.rs19
-rw-r--r--compiler/rustc_codegen_ssa/src/mir/rvalue.rs2
-rw-r--r--compiler/rustc_const_eval/src/const_eval/machine.rs18
-rw-r--r--compiler/rustc_const_eval/src/interpret/memory.rs18
-rw-r--r--compiler/rustc_error_codes/src/error_codes/E0466.md4
-rw-r--r--compiler/rustc_expand/src/base.rs9
-rw-r--r--compiler/rustc_expand/src/lib.rs2
-rw-r--r--compiler/rustc_expand/src/mbe/macro_rules.rs16
-rw-r--r--compiler/rustc_feature/src/builtin_attrs.rs3
-rw-r--r--compiler/rustc_hir/src/hir.rs1
-rw-r--r--compiler/rustc_hir/src/lang_items.rs3
-rw-r--r--compiler/rustc_hir_analysis/src/check_unused.rs2
-rw-r--r--compiler/rustc_interface/src/tests.rs9
-rw-r--r--compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp37
-rw-r--r--compiler/rustc_macros/src/lib.rs11
-rw-r--r--compiler/rustc_macros/src/visitable.rs82
-rw-r--r--compiler/rustc_middle/src/middle/codegen_fn_attrs.rs1
-rw-r--r--compiler/rustc_middle/src/query/mod.rs3
-rw-r--r--compiler/rustc_middle/src/ty/context.rs2
-rw-r--r--compiler/rustc_middle/src/ty/inhabitedness/mod.rs16
-rw-r--r--compiler/rustc_mir_transform/src/add_retag.rs2
-rw-r--r--compiler/rustc_mir_transform/src/coverage/spans.rs38
-rw-r--r--compiler/rustc_mir_transform/src/elaborate_drops.rs4
-rw-r--r--compiler/rustc_mir_transform/src/impossible_predicates.rs25
-rw-r--r--compiler/rustc_mir_transform/src/shim.rs4
-rw-r--r--compiler/rustc_mir_transform/src/unreachable_prop.rs2
-rw-r--r--compiler/rustc_mir_transform/src/validate.rs9
-rw-r--r--compiler/rustc_parse/src/lexer/diagnostics.rs44
-rw-r--r--compiler/rustc_parse/src/lexer/mod.rs18
-rw-r--r--compiler/rustc_parse/src/lexer/tokentrees.rs106
-rw-r--r--compiler/rustc_parse/src/validate_attr.rs6
-rw-r--r--compiler/rustc_passes/messages.ftl6
-rw-r--r--compiler/rustc_passes/src/check_attr.rs18
-rw-r--r--compiler/rustc_pattern_analysis/src/rustc.rs7
-rw-r--r--compiler/rustc_public/src/alloc.rs14
-rw-r--r--compiler/rustc_public/src/compiler_interface.rs30
-rw-r--r--compiler/rustc_public/src/error.rs6
-rw-r--r--compiler/rustc_public/src/lib.rs4
-rw-r--r--compiler/rustc_public/src/mir/alloc.rs2
-rw-r--r--compiler/rustc_public/src/mir/body.rs6
-rw-r--r--compiler/rustc_public/src/mir/mono.rs30
-rw-r--r--compiler/rustc_public/src/mir/pretty.rs2
-rw-r--r--compiler/rustc_public/src/mir/visit.rs2
-rw-r--r--compiler/rustc_public/src/rustc_internal/mod.rs38
-rw-r--r--compiler/rustc_public/src/rustc_internal/pretty.rs2
-rw-r--r--compiler/rustc_public/src/unstable/convert/internal.rs8
-rw-r--r--compiler/rustc_public/src/unstable/convert/mod.rs16
-rw-r--r--compiler/rustc_public/src/unstable/convert/stable/abi.rs50
-rw-r--r--compiler/rustc_public/src/unstable/convert/stable/mir.rs87
-rw-r--r--compiler/rustc_public/src/unstable/convert/stable/mod.rs14
-rw-r--r--compiler/rustc_public/src/unstable/convert/stable/ty.rs120
-rw-r--r--compiler/rustc_public/src/unstable/internal_cx/helpers.rs (renamed from compiler/rustc_public/src/unstable/internal_cx/traits.rs)6
-rw-r--r--compiler/rustc_public/src/unstable/internal_cx/mod.rs10
-rw-r--r--compiler/rustc_public/src/unstable/mod.rs25
-rw-r--r--compiler/rustc_public_bridge/src/alloc.rs18
-rw-r--r--compiler/rustc_public_bridge/src/bridge.rs6
-rw-r--r--compiler/rustc_public_bridge/src/builder.rs7
-rw-r--r--compiler/rustc_public_bridge/src/context/helpers.rs (renamed from compiler/rustc_public_bridge/src/context/traits.rs)8
-rw-r--r--compiler/rustc_public_bridge/src/context/impls.rs18
-rw-r--r--compiler/rustc_public_bridge/src/context/mod.rs26
-rw-r--r--compiler/rustc_public_bridge/src/lib.rs14
-rw-r--r--compiler/rustc_resolve/messages.ftl2
-rw-r--r--compiler/rustc_resolve/src/build_reduced_graph.rs67
-rw-r--r--compiler/rustc_resolve/src/errors.rs7
-rw-r--r--compiler/rustc_resolve/src/macros.rs9
-rw-r--r--compiler/rustc_session/src/config.rs19
-rw-r--r--compiler/rustc_session/src/options.rs27
-rw-r--r--compiler/rustc_span/src/symbol.rs3
-rw-r--r--compiler/rustc_target/src/spec/base/avr.rs67
-rw-r--r--library/Cargo.lock4
-rw-r--r--library/alloc/src/collections/vec_deque/drain.rs2
-rw-r--r--library/alloc/src/raw_vec/mod.rs2
-rw-r--r--library/compiler-builtins/.github/workflows/rustc-pull.yml23
-rw-r--r--library/compiler-builtins/CONTRIBUTING.md9
-rw-r--r--library/compiler-builtins/Cargo.toml1
-rw-r--r--library/compiler-builtins/builtins-test/Cargo.toml4
-rwxr-xr-xlibrary/compiler-builtins/ci/bench-icount.sh2
-rw-r--r--library/compiler-builtins/compiler-builtins/src/mem/impls.rs5
-rw-r--r--library/compiler-builtins/compiler-builtins/src/mem/mod.rs13
-rw-r--r--library/compiler-builtins/crates/josh-sync/Cargo.toml8
-rw-r--r--library/compiler-builtins/crates/josh-sync/src/main.rs45
-rw-r--r--library/compiler-builtins/crates/josh-sync/src/sync.rs401
-rw-r--r--library/compiler-builtins/crates/libm-macros/Cargo.toml2
-rw-r--r--library/compiler-builtins/crates/musl-math-sys/Cargo.toml2
-rw-r--r--library/compiler-builtins/josh-sync.toml3
-rw-r--r--library/compiler-builtins/libm-test/Cargo.toml4
-rw-r--r--library/compiler-builtins/libm/src/math/support/float_traits.rs2
-rw-r--r--library/compiler-builtins/rust-version2
-rw-r--r--library/compiler-builtins/triagebot.toml5
-rw-r--r--library/core/src/array/mod.rs3
-rw-r--r--library/core/src/ascii/ascii_char.rs3
-rw-r--r--library/core/src/char/convert.rs15
-rw-r--r--library/core/src/convert/mod.rs40
-rw-r--r--library/core/src/convert/num.rs24
-rw-r--r--library/core/src/net/ip_addr.rs36
-rw-r--r--library/core/src/net/socket_addr.rs9
-rw-r--r--library/core/src/num/error.rs6
-rw-r--r--library/core/src/num/flt2dec/mod.rs18
-rw-r--r--library/core/src/num/mod.rs3
-rw-r--r--library/core/src/num/nonzero.rs3
-rw-r--r--library/core/src/ops/try_trait.rs8
-rw-r--r--library/core/src/option.rs30
-rw-r--r--library/core/src/ptr/alignment.rs6
-rw-r--r--library/core/src/ptr/unique.rs2
-rw-r--r--library/core/src/result.rs26
-rw-r--r--library/core/src/str/traits.rs2
-rw-r--r--library/core/src/sync/atomic.rs6
-rw-r--r--library/std/Cargo.toml7
-rw-r--r--library/std/src/sys/thread_local/guard/windows.rs17
-rw-r--r--library/std_detect/Cargo.toml (renamed from library/stdarch/crates/std_detect/Cargo.toml)12
-rw-r--r--library/std_detect/README.md (renamed from library/stdarch/crates/std_detect/README.md)2
-rw-r--r--library/std_detect/src/detect/arch/aarch64.rs (renamed from library/stdarch/crates/std_detect/src/detect/arch/aarch64.rs)0
-rw-r--r--library/std_detect/src/detect/arch/arm.rs (renamed from library/stdarch/crates/std_detect/src/detect/arch/arm.rs)0
-rw-r--r--library/std_detect/src/detect/arch/loongarch.rs (renamed from library/stdarch/crates/std_detect/src/detect/arch/loongarch.rs)2
-rw-r--r--library/std_detect/src/detect/arch/mips.rs (renamed from library/stdarch/crates/std_detect/src/detect/arch/mips.rs)0
-rw-r--r--library/std_detect/src/detect/arch/mips64.rs (renamed from library/stdarch/crates/std_detect/src/detect/arch/mips64.rs)0
-rw-r--r--library/std_detect/src/detect/arch/mod.rs (renamed from library/stdarch/crates/std_detect/src/detect/arch/mod.rs)2
-rw-r--r--library/std_detect/src/detect/arch/powerpc.rs (renamed from library/stdarch/crates/std_detect/src/detect/arch/powerpc.rs)0
-rw-r--r--library/std_detect/src/detect/arch/powerpc64.rs (renamed from library/stdarch/crates/std_detect/src/detect/arch/powerpc64.rs)0
-rw-r--r--library/std_detect/src/detect/arch/riscv.rs (renamed from library/stdarch/crates/std_detect/src/detect/arch/riscv.rs)0
-rw-r--r--library/std_detect/src/detect/arch/s390x.rs (renamed from library/stdarch/crates/std_detect/src/detect/arch/s390x.rs)0
-rw-r--r--library/std_detect/src/detect/arch/x86.rs (renamed from library/stdarch/crates/std_detect/src/detect/arch/x86.rs)0
-rw-r--r--library/std_detect/src/detect/bit.rs (renamed from library/stdarch/crates/std_detect/src/detect/bit.rs)0
-rw-r--r--library/std_detect/src/detect/cache.rs (renamed from library/stdarch/crates/std_detect/src/detect/cache.rs)38
-rw-r--r--library/std_detect/src/detect/macros.rs (renamed from library/stdarch/crates/std_detect/src/detect/macros.rs)2
-rw-r--r--library/std_detect/src/detect/mod.rs (renamed from library/stdarch/crates/std_detect/src/detect/mod.rs)2
-rw-r--r--library/std_detect/src/detect/os/aarch64.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/aarch64.rs)8
-rw-r--r--library/std_detect/src/detect/os/darwin/aarch64.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/darwin/aarch64.rs)11
-rw-r--r--library/std_detect/src/detect/os/freebsd/aarch64.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/freebsd/aarch64.rs)0
-rw-r--r--library/std_detect/src/detect/os/freebsd/arm.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/freebsd/arm.rs)0
-rw-r--r--library/std_detect/src/detect/os/freebsd/auxvec.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/freebsd/auxvec.rs)7
-rw-r--r--library/std_detect/src/detect/os/freebsd/mod.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/freebsd/mod.rs)0
-rw-r--r--library/std_detect/src/detect/os/freebsd/powerpc.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/freebsd/powerpc.rs)0
-rw-r--r--library/std_detect/src/detect/os/linux/aarch64.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/linux/aarch64.rs)92
-rw-r--r--library/std_detect/src/detect/os/linux/aarch64/tests.rs77
-rw-r--r--library/std_detect/src/detect/os/linux/arm.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/linux/arm.rs)0
-rw-r--r--library/std_detect/src/detect/os/linux/auxvec.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/linux/auxvec.rs)133
-rw-r--r--library/std_detect/src/detect/os/linux/auxvec/tests.rs109
-rw-r--r--library/std_detect/src/detect/os/linux/loongarch.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/linux/loongarch.rs)15
-rw-r--r--library/std_detect/src/detect/os/linux/mips.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/linux/mips.rs)0
-rw-r--r--library/std_detect/src/detect/os/linux/mod.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/linux/mod.rs)12
-rw-r--r--library/std_detect/src/detect/os/linux/powerpc.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/linux/powerpc.rs)0
-rw-r--r--library/std_detect/src/detect/os/linux/riscv.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/linux/riscv.rs)11
-rw-r--r--library/std_detect/src/detect/os/linux/s390x.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/linux/s390x.rs)0
-rw-r--r--library/std_detect/src/detect/os/openbsd/aarch64.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/openbsd/aarch64.rs)4
-rw-r--r--library/std_detect/src/detect/os/other.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/other.rs)0
-rw-r--r--library/std_detect/src/detect/os/riscv.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/riscv.rs)67
-rw-r--r--library/std_detect/src/detect/os/riscv/tests.rs64
-rw-r--r--library/std_detect/src/detect/os/windows/aarch64.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/windows/aarch64.rs)0
-rw-r--r--library/std_detect/src/detect/os/x86.rs (renamed from library/stdarch/crates/std_detect/src/detect/os/x86.rs)39
-rw-r--r--library/std_detect/src/detect/test_data/linux-artificial-aarch64.auxv (renamed from library/stdarch/crates/std_detect/src/detect/test_data/linux-artificial-aarch64.auxv)bin336 -> 336 bytes
-rw-r--r--library/std_detect/src/detect/test_data/linux-empty-hwcap2-aarch64.auxv (renamed from library/stdarch/crates/std_detect/src/detect/test_data/linux-empty-hwcap2-aarch64.auxv)bin336 -> 336 bytes
-rw-r--r--library/std_detect/src/detect/test_data/linux-hwcap2-aarch64.auxv (renamed from library/stdarch/crates/std_detect/src/detect/test_data/linux-hwcap2-aarch64.auxv)bin336 -> 336 bytes
-rw-r--r--library/std_detect/src/detect/test_data/linux-no-hwcap2-aarch64.auxv (renamed from library/stdarch/crates/std_detect/src/detect/test_data/linux-no-hwcap2-aarch64.auxv)bin320 -> 320 bytes
-rw-r--r--library/std_detect/src/detect/test_data/linux-rpi3.auxv (renamed from library/stdarch/crates/std_detect/src/detect/test_data/linux-rpi3.auxv)bin160 -> 160 bytes
-rw-r--r--library/std_detect/src/detect/test_data/macos-virtualbox-linux-x86-4850HQ.auxv (renamed from library/stdarch/crates/std_detect/src/detect/test_data/macos-virtualbox-linux-x86-4850HQ.auxv)bin160 -> 160 bytes
-rw-r--r--library/std_detect/src/lib.rs (renamed from library/stdarch/crates/std_detect/src/lib.rs)0
-rw-r--r--library/std_detect/tests/cpu-detection.rs (renamed from library/stdarch/crates/std_detect/tests/cpu-detection.rs)60
-rw-r--r--library/std_detect/tests/macro_trailing_commas.rs (renamed from library/stdarch/crates/std_detect/tests/macro_trailing_commas.rs)8
-rw-r--r--library/std_detect/tests/x86-specific.rs (renamed from library/stdarch/crates/std_detect/tests/x86-specific.rs)42
-rw-r--r--library/stdarch/.github/workflows/main.yml22
-rw-r--r--library/stdarch/.github/workflows/rustc-pull.yml22
-rw-r--r--library/stdarch/Cargo.lock95
-rw-r--r--library/stdarch/Cargo.toml3
-rw-r--r--library/stdarch/README.md10
-rwxr-xr-xlibrary/stdarch/ci/build-std-detect.sh46
-rw-r--r--library/stdarch/ci/docker/aarch64-unknown-linux-gnu/Dockerfile4
-rw-r--r--library/stdarch/ci/docker/aarch64_be-unknown-linux-gnu/Dockerfile8
-rw-r--r--library/stdarch/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/i586-unknown-linux-gnu/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/i686-unknown-linux-gnu/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/loongarch64-unknown-linux-gnu/Dockerfile4
-rw-r--r--library/stdarch/ci/docker/mips-unknown-linux-gnu/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/mipsel-unknown-linux-musl/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/nvptx64-nvidia-cuda/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/powerpc-unknown-linux-gnu/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/riscv32gc-unknown-linux-gnu/Dockerfile4
-rw-r--r--library/stdarch/ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/s390x-unknown-linux-gnu/Dockerfile2
-rw-r--r--library/stdarch/ci/docker/wasm32-wasip1/Dockerfile8
-rw-r--r--library/stdarch/ci/docker/x86_64-unknown-linux-gnu/Dockerfile4
-rw-r--r--library/stdarch/ci/docker/x86_64-unknown-linux-gnu/cpuid.def36
-rwxr-xr-xlibrary/stdarch/ci/dox.sh3
-rwxr-xr-xlibrary/stdarch/ci/run-docker.sh1
-rwxr-xr-xlibrary/stdarch/ci/run.sh16
-rw-r--r--library/stdarch/crates/core_arch/src/aarch64/neon/generated.rs596
-rw-r--r--library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs953
-rw-r--r--library/stdarch/crates/core_arch/src/core_arch_docs.md2
-rw-r--r--library/stdarch/crates/core_arch/src/loongarch32/mod.rs47
-rw-r--r--library/stdarch/crates/core_arch/src/loongarch64/lasx/generated.rs2912
-rw-r--r--library/stdarch/crates/core_arch/src/loongarch64/lsx/generated.rs2832
-rw-r--r--library/stdarch/crates/core_arch/src/loongarch64/mod.rs254
-rw-r--r--library/stdarch/crates/core_arch/src/loongarch_shared/mod.rs242
-rw-r--r--library/stdarch/crates/core_arch/src/mod.rs21
-rw-r--r--library/stdarch/crates/core_arch/src/s390x/vector.rs25
-rw-r--r--library/stdarch/crates/intrinsic-test/src/arm/compile.rs83
-rw-r--r--library/stdarch/crates/intrinsic-test/src/arm/config.rs1
-rw-r--r--library/stdarch/crates/intrinsic-test/src/arm/intrinsic.rs15
-rw-r--r--library/stdarch/crates/intrinsic-test/src/arm/json_parser.rs2
-rw-r--r--library/stdarch/crates/intrinsic-test/src/arm/mod.rs94
-rw-r--r--library/stdarch/crates/intrinsic-test/src/arm/types.rs27
-rw-r--r--library/stdarch/crates/intrinsic-test/src/common/argument.rs32
-rw-r--r--library/stdarch/crates/intrinsic-test/src/common/cli.rs6
-rw-r--r--library/stdarch/crates/intrinsic-test/src/common/compare.rs34
-rw-r--r--library/stdarch/crates/intrinsic-test/src/common/compile_c.rs137
-rw-r--r--library/stdarch/crates/intrinsic-test/src/common/gen_c.rs323
-rw-r--r--library/stdarch/crates/intrinsic-test/src/common/gen_rust.rs99
-rw-r--r--library/stdarch/crates/intrinsic-test/src/common/intrinsic_helpers.rs88
-rw-r--r--library/stdarch/crates/intrinsic-test/src/common/write_file.rs33
-rw-r--r--library/stdarch/crates/intrinsic-test/src/main.rs3
-rw-r--r--library/stdarch/crates/simd-test-macro/src/lib.rs4
-rw-r--r--library/stdarch/crates/std_detect/LICENSE-APACHE201
-rw-r--r--library/stdarch/crates/std_detect/LICENSE-MIT25
-rw-r--r--library/stdarch/crates/stdarch-gen-arm/Cargo.toml1
-rw-r--r--library/stdarch/crates/stdarch-gen-arm/spec/neon/aarch64.spec.yml194
-rw-r--r--library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml204
-rw-r--r--library/stdarch/crates/stdarch-gen-arm/src/expression.rs8
-rw-r--r--library/stdarch/crates/stdarch-gen-arm/src/load_store_tests.rs20
-rw-r--r--library/stdarch/crates/stdarch-gen-arm/src/typekinds.rs13
-rw-r--r--library/stdarch/crates/stdarch-gen-arm/src/wildcards.rs9
-rw-r--r--library/stdarch/crates/stdarch-gen-loongarch/README.md2
-rw-r--r--library/stdarch/crates/stdarch-gen-loongarch/src/main.rs46
-rw-r--r--library/stdarch/crates/stdarch-test/Cargo.toml3
-rw-r--r--library/stdarch/crates/stdarch-test/src/lib.rs39
-rw-r--r--library/stdarch/examples/Cargo.toml1
-rw-r--r--library/stdarch/examples/connect5.rs49
-rw-r--r--library/stdarch/examples/hex.rs8
-rw-r--r--library/stdarch/triagebot.toml2
-rw-r--r--package-lock.json3232
-rw-r--r--package.json9
-rw-r--r--rust-bors.toml17
-rw-r--r--rustfmt.toml4
-rw-r--r--src/bootstrap/src/core/build_steps/check.rs195
-rw-r--r--src/bootstrap/src/core/build_steps/dist.rs2
-rw-r--r--src/bootstrap/src/core/build_steps/test.rs62
-rw-r--r--src/bootstrap/src/core/builder/mod.rs8
-rw-r--r--src/bootstrap/src/core/builder/tests.rs46
-rw-r--r--src/bootstrap/src/core/config/config.rs3
-rw-r--r--src/bootstrap/src/core/config/flags.rs2
-rw-r--r--src/bootstrap/src/core/config/toml/rust.rs30
-rw-r--r--src/bootstrap/src/core/download.rs1
-rw-r--r--src/build_helper/src/npm.rs43
-rw-r--r--src/ci/citool/src/jobs.rs116
-rw-r--r--src/ci/citool/src/jobs/tests.rs220
-rw-r--r--src/ci/citool/tests/jobs.rs2
-rw-r--r--src/ci/docker/host-x86_64/pr-check-1/Dockerfile9
-rw-r--r--src/ci/docker/host-x86_64/test-various/Dockerfile6
-rw-r--r--src/ci/docker/host-x86_64/tidy/Dockerfile2
-rw-r--r--src/ci/github-actions/jobs.yml25
-rw-r--r--src/doc/rustc-dev-guide/src/asm.md6
-rw-r--r--src/doc/rustc-dev-guide/src/autodiff/installation.md2
-rw-r--r--src/doc/rustc-dev-guide/src/llvm-coverage-instrumentation.md4
-rw-r--r--src/doc/rustc-dev-guide/src/offload/installation.md2
-rw-r--r--src/doc/rustc-dev-guide/src/profile-guided-optimization.md2
-rw-r--r--src/doc/rustc-dev-guide/src/sanitizers.md4
-rw-r--r--src/doc/rustc-dev-guide/src/tests/compiletest.md10
-rw-r--r--src/doc/unstable-book/src/compiler-flags/offload.md8
-rw-r--r--src/etc/completions/x.fish2
-rw-r--r--src/etc/completions/x.ps12
-rw-r--r--src/etc/completions/x.py.fish2
-rw-r--r--src/etc/completions/x.py.ps12
-rw-r--r--src/etc/completions/x.py.zsh2
-rw-r--r--src/etc/completions/x.zsh2
-rw-r--r--src/tools/clippy/clippy_lints/src/macro_use.rs8
-rw-r--r--src/tools/clippy/clippy_lints/src/unused_trait_names.rs2
-rw-r--r--src/tools/clippy/clippy_test_deps/Cargo.lock1
-rw-r--r--src/tools/clippy/clippy_test_deps/Cargo.toml1
-rw-r--r--src/tools/clippy/tests/compile-test.rs29
-rw-r--r--src/tools/clippy/tests/ui/auxiliary/proc_macro_derive.rs2
-rw-r--r--src/tools/clippy/tests/ui/cast_alignment.rs3
-rw-r--r--src/tools/clippy/tests/ui/cast_alignment.stderr8
-rw-r--r--src/tools/clippy/tests/ui/iter_over_hash_type.rs11
-rw-r--r--src/tools/clippy/tests/ui/iter_over_hash_type.stderr26
-rw-r--r--src/tools/clippy/tests/ui/strlen_on_c_strings.fixed2
-rw-r--r--src/tools/clippy/tests/ui/strlen_on_c_strings.rs2
-rw-r--r--src/tools/clippy/tests/ui/strlen_on_c_strings.stderr14
-rw-r--r--src/tools/clippy/tests/ui/useless_attribute.fixed2
-rw-r--r--src/tools/clippy/tests/ui/useless_attribute.rs2
-rw-r--r--src/tools/compiletest/src/common.rs4
-rw-r--r--src/tools/compiletest/src/lib.rs19
m---------src/tools/enzyme0
-rw-r--r--src/tools/miri/CONTRIBUTING.md15
-rw-r--r--src/tools/miri/Cargo.lock485
-rw-r--r--src/tools/miri/Cargo.toml20
-rw-r--r--src/tools/miri/README.md13
-rw-r--r--src/tools/miri/cargo-miri/Cargo.lock675
-rw-r--r--src/tools/miri/cargo-miri/Cargo.toml2
-rw-r--r--src/tools/miri/cargo-miri/src/util.rs7
-rw-r--r--src/tools/miri/etc/rust_analyzer_helix.toml1
-rw-r--r--src/tools/miri/etc/rust_analyzer_vscode.json1
-rwxr-xr-xsrc/tools/miri/miri3
-rw-r--r--src/tools/miri/miri-script/Cargo.lock269
-rw-r--r--src/tools/miri/miri-script/Cargo.toml1
-rw-r--r--src/tools/miri/miri-script/src/commands.rs7
-rw-r--r--src/tools/miri/miri-script/src/main.rs2
-rw-r--r--src/tools/miri/miri-script/src/util.rs15
-rw-r--r--src/tools/miri/rust-version2
-rw-r--r--src/tools/miri/src/alloc/alloc_bytes.rs9
-rw-r--r--src/tools/miri/src/alloc/isolated_alloc.rs54
-rw-r--r--src/tools/miri/src/alloc/mod.rs28
-rw-r--r--src/tools/miri/src/alloc_addresses/mod.rs58
-rw-r--r--src/tools/miri/src/bin/miri.rs9
-rw-r--r--src/tools/miri/src/borrow_tracker/stacked_borrows/mod.rs4
-rw-r--r--src/tools/miri/src/borrow_tracker/tree_borrows/mod.rs2
-rw-r--r--src/tools/miri/src/eval.rs3
-rw-r--r--src/tools/miri/src/lib.rs3
-rw-r--r--src/tools/miri/src/machine.rs24
-rw-r--r--src/tools/miri/src/math.rs2
-rw-r--r--src/tools/miri/src/shims/foreign_items.rs2
-rw-r--r--src/tools/miri/src/shims/mod.rs4
-rw-r--r--src/tools/miri/src/shims/native_lib/mod.rs13
-rw-r--r--src/tools/miri/src/shims/native_lib/trace/child.rs101
-rw-r--r--src/tools/miri/src/shims/native_lib/trace/messages.rs3
-rw-r--r--src/tools/miri/tests/deps/Cargo.lock (renamed from src/tools/miri/test_dependencies/Cargo.lock)232
-rw-r--r--src/tools/miri/tests/deps/Cargo.toml (renamed from src/tools/miri/test_dependencies/Cargo.toml)2
-rw-r--r--src/tools/miri/tests/deps/src/main.rs (renamed from src/tools/miri/test_dependencies/src/main.rs)0
-rw-r--r--src/tools/miri/tests/pass/fn_align.rs10
-rw-r--r--src/tools/miri/tests/pass/intrinsics/portable-simd.rs22
-rw-r--r--src/tools/miri/tests/ui.rs12
-rw-r--r--src/tools/miri/triagebot.toml14
-rw-r--r--src/tools/opt-dist/src/environment.rs18
-rw-r--r--src/tools/opt-dist/src/exec.rs4
-rw-r--r--src/tools/opt-dist/src/main.rs22
-rw-r--r--src/tools/opt-dist/src/tests.rs6
-rw-r--r--src/tools/run-make-support/src/external_deps/rustc.rs9
-rw-r--r--src/tools/rust-analyzer/Cargo.lock41
-rw-r--r--src/tools/rust-analyzer/Cargo.toml8
-rw-r--r--src/tools/rust-analyzer/crates/cfg/src/cfg_expr.rs14
-rw-r--r--src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs48
-rw-r--r--src/tools/rust-analyzer/crates/hir-expand/src/builtin/fn_macro.rs66
-rw-r--r--src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_deref.rs26
-rw-r--r--src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_mut_trait_impl.rs37
-rw-r--r--src/tools/rust-analyzer/crates/ide-assists/src/utils.rs1
-rw-r--r--src/tools/rust-analyzer/crates/ide-db/src/search.rs9
-rwxr-xr-xsrc/tools/rust-analyzer/crates/ide/src/folding_ranges.rs4
-rw-r--r--src/tools/rust-analyzer/crates/ide/src/references.rs38
-rw-r--r--src/tools/rust-analyzer/crates/intern/src/symbol/symbols.rs1
-rw-r--r--src/tools/rust-analyzer/crates/tt/src/iter.rs11
-rw-r--r--src/tools/rust-analyzer/rust-version2
-rw-r--r--src/tools/rustdoc-gui-test/src/main.rs6
-rw-r--r--src/tools/tidy/src/ext_tool_checks.rs38
-rw-r--r--src/tools/tidy/src/ext_tool_checks/rustdoc_js.rs114
-rw-r--r--src/tools/tidy/src/issues.txt1224
-rw-r--r--src/tools/tidy/src/lib.rs1
-rw-r--r--src/tools/tidy/src/main.rs3
-rw-r--r--src/tools/tidy/src/pal.rs1
-rw-r--r--src/tools/tidy/src/rustdoc_js.rs101
-rw-r--r--src/tools/tidy/src/target_policy.rs6
-rw-r--r--src/tools/tidy/src/ui_tests.rs55
-rw-r--r--src/tools/tidy/src/unit_tests.rs3
-rw-r--r--tests/assembly-llvm/aarch64-pointer-auth.rs (renamed from tests/assembly/aarch64-pointer-auth.rs)0
-rw-r--r--tests/assembly-llvm/aarch64-xray.rs (renamed from tests/assembly/aarch64-xray.rs)0
-rw-r--r--tests/assembly-llvm/align_offset.rs (renamed from tests/assembly/align_offset.rs)0
-rw-r--r--tests/assembly-llvm/asm/aarch64-el2vmsa.rs (renamed from tests/assembly/asm/aarch64-el2vmsa.rs)0
-rw-r--r--tests/assembly-llvm/asm/aarch64-modifiers.rs (renamed from tests/assembly/asm/aarch64-modifiers.rs)0
-rw-r--r--tests/assembly-llvm/asm/aarch64-outline-atomics.rs (renamed from tests/assembly/asm/aarch64-outline-atomics.rs)0
-rw-r--r--tests/assembly-llvm/asm/aarch64-types.rs (renamed from tests/assembly/asm/aarch64-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/arm-modifiers.rs (renamed from tests/assembly/asm/arm-modifiers.rs)0
-rw-r--r--tests/assembly-llvm/asm/arm-types.rs (renamed from tests/assembly/asm/arm-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/avr-modifiers.rs (renamed from tests/assembly/asm/avr-modifiers.rs)0
-rw-r--r--tests/assembly-llvm/asm/avr-types.rs (renamed from tests/assembly/asm/avr-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/bpf-types.rs (renamed from tests/assembly/asm/bpf-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/comments.rs (renamed from tests/assembly/asm/comments.rs)0
-rw-r--r--tests/assembly-llvm/asm/global_asm.rs (renamed from tests/assembly/asm/global_asm.rs)0
-rw-r--r--tests/assembly-llvm/asm/hexagon-types.rs (renamed from tests/assembly/asm/hexagon-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/inline-asm-avx.rs (renamed from tests/assembly/asm/inline-asm-avx.rs)0
-rw-r--r--tests/assembly-llvm/asm/loongarch-type.rs (renamed from tests/assembly/asm/loongarch-type.rs)0
-rw-r--r--tests/assembly-llvm/asm/m68k-types.rs (renamed from tests/assembly/asm/m68k-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/mips-types.rs (renamed from tests/assembly/asm/mips-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/msp430-types.rs (renamed from tests/assembly/asm/msp430-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/nvptx-types.rs (renamed from tests/assembly/asm/nvptx-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/powerpc-types.rs (renamed from tests/assembly/asm/powerpc-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/riscv-types.rs (renamed from tests/assembly/asm/riscv-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/s390x-types.rs (renamed from tests/assembly/asm/s390x-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/sparc-types.rs (renamed from tests/assembly/asm/sparc-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/wasm-types.rs (renamed from tests/assembly/asm/wasm-types.rs)0
-rw-r--r--tests/assembly-llvm/asm/x86-modifiers.rs (renamed from tests/assembly/asm/x86-modifiers.rs)0
-rw-r--r--tests/assembly-llvm/asm/x86-types.rs (renamed from tests/assembly/asm/x86-types.rs)0
-rw-r--r--tests/assembly-llvm/auxiliary/breakpoint-panic-handler.rs (renamed from tests/assembly/auxiliary/breakpoint-panic-handler.rs)0
-rw-r--r--tests/assembly-llvm/auxiliary/dwarf-mixed-versions-lto-aux.rs (renamed from tests/assembly/auxiliary/dwarf-mixed-versions-lto-aux.rs)0
-rw-r--r--tests/assembly-llvm/auxiliary/non-inline-dependency.rs (renamed from tests/assembly/auxiliary/non-inline-dependency.rs)0
-rw-r--r--tests/assembly-llvm/breakpoint.rs (renamed from tests/assembly/breakpoint.rs)0
-rw-r--r--tests/assembly-llvm/closure-inherit-target-feature.rs (renamed from tests/assembly/closure-inherit-target-feature.rs)0
-rw-r--r--tests/assembly-llvm/cmse.rs (renamed from tests/assembly/cmse.rs)0
-rw-r--r--tests/assembly-llvm/compiletest-self-test/use-minicore-no-run.rs (renamed from tests/assembly/compiletest-self-test/use-minicore-no-run.rs)0
-rw-r--r--tests/assembly-llvm/cstring-merging.rs (renamed from tests/assembly/cstring-merging.rs)0
-rw-r--r--tests/assembly-llvm/dwarf-mixed-versions-lto.rs (renamed from tests/assembly/dwarf-mixed-versions-lto.rs)0
-rw-r--r--tests/assembly-llvm/dwarf4.rs (renamed from tests/assembly/dwarf4.rs)0
-rw-r--r--tests/assembly-llvm/dwarf5.rs (renamed from tests/assembly/dwarf5.rs)0
-rw-r--r--tests/assembly-llvm/emit-intel-att-syntax.rs (renamed from tests/assembly/emit-intel-att-syntax.rs)0
-rw-r--r--tests/assembly-llvm/is_aligned.rs (renamed from tests/assembly/is_aligned.rs)0
-rw-r--r--tests/assembly-llvm/issue-83585-small-pod-struct-equality.rs (renamed from tests/assembly/issue-83585-small-pod-struct-equality.rs)0
-rw-r--r--tests/assembly-llvm/libs/issue-115339-zip-arrays.rs (renamed from tests/assembly/libs/issue-115339-zip-arrays.rs)0
-rw-r--r--tests/assembly-llvm/libs/issue-140207-slice-min-simd.rs (renamed from tests/assembly/libs/issue-140207-slice-min-simd.rs)0
-rw-r--r--tests/assembly-llvm/manual-eq-efficient.rs (renamed from tests/assembly/manual-eq-efficient.rs)0
-rw-r--r--tests/assembly-llvm/naked-functions/aarch64-naked-fn-no-bti-prolog.rs (renamed from tests/assembly/naked-functions/aarch64-naked-fn-no-bti-prolog.rs)0
-rw-r--r--tests/assembly-llvm/naked-functions/aix.rs (renamed from tests/assembly/naked-functions/aix.rs)0
-rw-r--r--tests/assembly-llvm/naked-functions/wasm32.rs (renamed from tests/assembly/naked-functions/wasm32.rs)0
-rw-r--r--tests/assembly-llvm/naked-functions/x86_64-naked-fn-no-cet-prolog.rs (renamed from tests/assembly/naked-functions/x86_64-naked-fn-no-cet-prolog.rs)0
-rw-r--r--tests/assembly-llvm/niche-prefer-zero.rs (renamed from tests/assembly/niche-prefer-zero.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-arch-default.rs (renamed from tests/assembly/nvptx-arch-default.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-arch-emit-asm.rs (renamed from tests/assembly/nvptx-arch-emit-asm.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-arch-link-arg.rs (renamed from tests/assembly/nvptx-arch-link-arg.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-arch-target-cpu.rs (renamed from tests/assembly/nvptx-arch-target-cpu.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-atomics.rs (renamed from tests/assembly/nvptx-atomics.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-c-abi-arg-v7.rs (renamed from tests/assembly/nvptx-c-abi-arg-v7.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-c-abi-ret-v7.rs (renamed from tests/assembly/nvptx-c-abi-ret-v7.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-internalizing.rs (renamed from tests/assembly/nvptx-internalizing.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs (renamed from tests/assembly/nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-linking-binary.rs (renamed from tests/assembly/nvptx-linking-binary.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-linking-cdylib.rs (renamed from tests/assembly/nvptx-linking-cdylib.rs)0
-rw-r--r--tests/assembly-llvm/nvptx-safe-naming.rs (renamed from tests/assembly/nvptx-safe-naming.rs)0
-rw-r--r--tests/assembly-llvm/panic-no-unwind-no-uwtable.rs (renamed from tests/assembly/panic-no-unwind-no-uwtable.rs)0
-rw-r--r--tests/assembly-llvm/panic-unwind-no-uwtable.rs (renamed from tests/assembly/panic-unwind-no-uwtable.rs)0
-rw-r--r--tests/assembly-llvm/pic-relocation-model.rs (renamed from tests/assembly/pic-relocation-model.rs)0
-rw-r--r--tests/assembly-llvm/pie-relocation-model.rs (renamed from tests/assembly/pie-relocation-model.rs)0
-rw-r--r--tests/assembly-llvm/powerpc64-struct-abi.rs (renamed from tests/assembly/powerpc64-struct-abi.rs)0
-rw-r--r--tests/assembly-llvm/riscv-float-struct-abi.rs (renamed from tests/assembly/riscv-float-struct-abi.rs)0
-rw-r--r--tests/assembly-llvm/riscv-soft-abi-with-float-features.rs (renamed from tests/assembly/riscv-soft-abi-with-float-features.rs)0
-rw-r--r--tests/assembly-llvm/rust-abi-arg-attr.rs (renamed from tests/assembly/rust-abi-arg-attr.rs)0
-rw-r--r--tests/assembly-llvm/s390x-backchain-toggle.rs (renamed from tests/assembly/s390x-backchain-toggle.rs)0
-rw-r--r--tests/assembly-llvm/s390x-vector-abi.rs (renamed from tests/assembly/s390x-vector-abi.rs)0
-rw-r--r--tests/assembly-llvm/sanitizer/kcfi/emit-arity-indicator.rs (renamed from tests/assembly/sanitizer/kcfi/emit-arity-indicator.rs)0
-rw-r--r--tests/assembly-llvm/simd-bitmask.rs (renamed from tests/assembly/simd-bitmask.rs)0
-rw-r--r--tests/assembly-llvm/simd-intrinsic-gather.rs (renamed from tests/assembly/simd-intrinsic-gather.rs)0
-rw-r--r--tests/assembly-llvm/simd-intrinsic-mask-load.rs (renamed from tests/assembly/simd-intrinsic-mask-load.rs)0
-rw-r--r--tests/assembly-llvm/simd-intrinsic-mask-reduce.rs (renamed from tests/assembly/simd-intrinsic-mask-reduce.rs)0
-rw-r--r--tests/assembly-llvm/simd-intrinsic-mask-store.rs (renamed from tests/assembly/simd-intrinsic-mask-store.rs)0
-rw-r--r--tests/assembly-llvm/simd-intrinsic-scatter.rs (renamed from tests/assembly/simd-intrinsic-scatter.rs)0
-rw-r--r--tests/assembly-llvm/simd-intrinsic-select.rs (renamed from tests/assembly/simd-intrinsic-select.rs)0
-rw-r--r--tests/assembly-llvm/simd/reduce-fadd-unordered.rs (renamed from tests/assembly/simd/reduce-fadd-unordered.rs)0
-rw-r--r--tests/assembly-llvm/slice-is_ascii.rs (renamed from tests/assembly/slice-is_ascii.rs)0
-rw-r--r--tests/assembly-llvm/small_data_threshold.rs (renamed from tests/assembly/small_data_threshold.rs)0
-rw-r--r--tests/assembly-llvm/sparc-struct-abi.rs (renamed from tests/assembly/sparc-struct-abi.rs)0
-rw-r--r--tests/assembly-llvm/stack-probes.rs (renamed from tests/assembly/stack-probes.rs)0
-rw-r--r--tests/assembly-llvm/stack-protector/stack-protector-heuristics-effect-windows-32bit.rs (renamed from tests/assembly/stack-protector/stack-protector-heuristics-effect-windows-32bit.rs)0
-rw-r--r--tests/assembly-llvm/stack-protector/stack-protector-heuristics-effect-windows-64bit.rs (renamed from tests/assembly/stack-protector/stack-protector-heuristics-effect-windows-64bit.rs)0
-rw-r--r--tests/assembly-llvm/stack-protector/stack-protector-heuristics-effect.rs (renamed from tests/assembly/stack-protector/stack-protector-heuristics-effect.rs)0
-rw-r--r--tests/assembly-llvm/stack-protector/stack-protector-target-support.rs (renamed from tests/assembly/stack-protector/stack-protector-target-support.rs)0
-rw-r--r--tests/assembly-llvm/static-relocation-model.rs (renamed from tests/assembly/static-relocation-model.rs)0
-rw-r--r--tests/assembly-llvm/strict_provenance.rs (renamed from tests/assembly/strict_provenance.rs)0
-rw-r--r--tests/assembly-llvm/target-feature-multiple.rs (renamed from tests/assembly/target-feature-multiple.rs)2
-rw-r--r--tests/assembly-llvm/targets/targets-amdgpu.rs (renamed from tests/assembly/targets/targets-amdgpu.rs)0
-rw-r--r--tests/assembly-llvm/targets/targets-elf.rs (renamed from tests/assembly/targets/targets-elf.rs)0
-rw-r--r--tests/assembly-llvm/targets/targets-macho.rs (renamed from tests/assembly/targets/targets-macho.rs)0
-rw-r--r--tests/assembly-llvm/targets/targets-nvptx.rs (renamed from tests/assembly/targets/targets-nvptx.rs)0
-rw-r--r--tests/assembly-llvm/targets/targets-pe.rs (renamed from tests/assembly/targets/targets-pe.rs)0
-rw-r--r--tests/assembly-llvm/wasm_exceptions.rs (renamed from tests/assembly/wasm_exceptions.rs)0
-rw-r--r--tests/assembly-llvm/x86-return-float.rs (renamed from tests/assembly/x86-return-float.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-array-pair-load-store-merge.rs (renamed from tests/assembly/x86_64-array-pair-load-store-merge.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-bigint-helpers.rs (renamed from tests/assembly/x86_64-bigint-helpers.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-cmp.rs (renamed from tests/assembly/x86_64-cmp.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-floating-point-clamp.rs (renamed from tests/assembly/x86_64-floating-point-clamp.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-fortanix-unknown-sgx-lvi-generic-load.rs (renamed from tests/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-load.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs (renamed from tests/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs (renamed from tests/assembly/x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-function-return.rs (renamed from tests/assembly/x86_64-function-return.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-no-jump-tables.rs (renamed from tests/assembly/x86_64-no-jump-tables.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-sse_crc.rs (renamed from tests/assembly/x86_64-sse_crc.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-typed-swap.rs (renamed from tests/assembly/x86_64-typed-swap.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-windows-float-abi.rs (renamed from tests/assembly/x86_64-windows-float-abi.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-windows-i128-abi.rs (renamed from tests/assembly/x86_64-windows-i128-abi.rs)0
-rw-r--r--tests/assembly-llvm/x86_64-xray.rs (renamed from tests/assembly/x86_64-xray.rs)0
-rw-r--r--tests/auxiliary/minisimd.rs160
-rw-r--r--tests/codegen-llvm/README.md (renamed from tests/codegen/README.md)0
-rw-r--r--tests/codegen-llvm/aarch64-softfloat.rs (renamed from tests/codegen/aarch64-softfloat.rs)0
-rw-r--r--tests/codegen-llvm/aarch64-struct-align-128.rs (renamed from tests/codegen/aarch64-struct-align-128.rs)0
-rw-r--r--tests/codegen-llvm/abi-efiapi.rs (renamed from tests/codegen/abi-efiapi.rs)0
-rw-r--r--tests/codegen-llvm/abi-main-signature-16bit-c-int.rs (renamed from tests/codegen/abi-main-signature-16bit-c-int.rs)0
-rw-r--r--tests/codegen-llvm/abi-main-signature-32bit-c-int.rs (renamed from tests/codegen/abi-main-signature-32bit-c-int.rs)0
-rw-r--r--tests/codegen-llvm/abi-repr-ext.rs (renamed from tests/codegen/abi-repr-ext.rs)0
-rw-r--r--tests/codegen-llvm/abi-sysv64.rs (renamed from tests/codegen/abi-sysv64.rs)0
-rw-r--r--tests/codegen-llvm/abi-win64-zst.rs (renamed from tests/codegen/abi-win64-zst.rs)0
-rw-r--r--tests/codegen-llvm/abi-x86-interrupt.rs (renamed from tests/codegen/abi-x86-interrupt.rs)0
-rw-r--r--tests/codegen-llvm/abi-x86-sse.rs (renamed from tests/codegen/abi-x86-sse.rs)0
-rw-r--r--tests/codegen-llvm/abi-x86_64_sysv.rs (renamed from tests/codegen/abi-x86_64_sysv.rs)0
-rw-r--r--tests/codegen-llvm/addr-of-mutate.rs (renamed from tests/codegen/addr-of-mutate.rs)0
-rw-r--r--tests/codegen-llvm/adjustments.rs (renamed from tests/codegen/adjustments.rs)0
-rw-r--r--tests/codegen-llvm/align-byval-alignment-mismatch.rs (renamed from tests/codegen/align-byval-alignment-mismatch.rs)0
-rw-r--r--tests/codegen-llvm/align-byval-vector.rs (renamed from tests/codegen/align-byval-vector.rs)0
-rw-r--r--tests/codegen-llvm/align-byval.rs (renamed from tests/codegen/align-byval.rs)0
-rw-r--r--tests/codegen-llvm/align-enum.rs (renamed from tests/codegen/align-enum.rs)0
-rw-r--r--tests/codegen-llvm/align-fn.rs (renamed from tests/codegen/align-fn.rs)54
-rw-r--r--tests/codegen-llvm/align-offset.rs (renamed from tests/codegen/align-offset.rs)0
-rw-r--r--tests/codegen-llvm/align-struct.rs (renamed from tests/codegen/align-struct.rs)0
-rw-r--r--tests/codegen-llvm/alloc-optimisation.rs (renamed from tests/codegen/alloc-optimisation.rs)0
-rw-r--r--tests/codegen-llvm/amdgpu-addrspacecast.rs (renamed from tests/codegen/amdgpu-addrspacecast.rs)0
-rw-r--r--tests/codegen-llvm/array-clone.rs (renamed from tests/codegen/array-clone.rs)0
-rw-r--r--tests/codegen-llvm/array-cmp.rs (renamed from tests/codegen/array-cmp.rs)0
-rw-r--r--tests/codegen-llvm/array-codegen.rs (renamed from tests/codegen/array-codegen.rs)0
-rw-r--r--tests/codegen-llvm/array-equality.rs (renamed from tests/codegen/array-equality.rs)0
-rw-r--r--tests/codegen-llvm/array-from_fn.rs (renamed from tests/codegen/array-from_fn.rs)0
-rw-r--r--tests/codegen-llvm/array-map.rs (renamed from tests/codegen/array-map.rs)0
-rw-r--r--tests/codegen-llvm/array-optimized.rs (renamed from tests/codegen/array-optimized.rs)0
-rw-r--r--tests/codegen-llvm/array-repeat.rs (renamed from tests/codegen/array-repeat.rs)0
-rw-r--r--tests/codegen-llvm/ascii-char.rs (renamed from tests/codegen/ascii-char.rs)0
-rw-r--r--tests/codegen-llvm/asm/aarch64-clobbers.rs (renamed from tests/codegen/asm/aarch64-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/asm/avr-clobbers.rs (renamed from tests/codegen/asm/avr-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/asm/bpf-clobbers.rs (renamed from tests/codegen/asm/bpf-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/asm/critical.rs (renamed from tests/codegen/asm/critical.rs)0
-rw-r--r--tests/codegen-llvm/asm/csky-clobbers.rs (renamed from tests/codegen/asm/csky-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/asm/foo.s (renamed from tests/codegen/asm/foo.s)0
-rw-r--r--tests/codegen-llvm/asm/global_asm.rs (renamed from tests/codegen/asm/global_asm.rs)0
-rw-r--r--tests/codegen-llvm/asm/global_asm_include.rs (renamed from tests/codegen/asm/global_asm_include.rs)0
-rw-r--r--tests/codegen-llvm/asm/global_asm_x2.rs (renamed from tests/codegen/asm/global_asm_x2.rs)0
-rw-r--r--tests/codegen-llvm/asm/goto.rs (renamed from tests/codegen/asm/goto.rs)0
-rw-r--r--tests/codegen-llvm/asm/hexagon-clobbers.rs (renamed from tests/codegen/asm/hexagon-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/asm/may_unwind.rs (renamed from tests/codegen/asm/may_unwind.rs)0
-rw-r--r--tests/codegen-llvm/asm/maybe-uninit.rs (renamed from tests/codegen/asm/maybe-uninit.rs)0
-rw-r--r--tests/codegen-llvm/asm/msp430-clobbers.rs (renamed from tests/codegen/asm/msp430-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/asm/multiple-options.rs (renamed from tests/codegen/asm/multiple-options.rs)0
-rw-r--r--tests/codegen-llvm/asm/options.rs (renamed from tests/codegen/asm/options.rs)0
-rw-r--r--tests/codegen-llvm/asm/powerpc-clobbers.rs (renamed from tests/codegen/asm/powerpc-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/asm/riscv-clobbers.rs (renamed from tests/codegen/asm/riscv-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/asm/s390x-clobbers.rs (renamed from tests/codegen/asm/s390x-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/asm/sanitize-llvm.rs (renamed from tests/codegen/asm/sanitize-llvm.rs)0
-rw-r--r--tests/codegen-llvm/asm/sparc-clobbers.rs (renamed from tests/codegen/asm/sparc-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/asm/x86-clobber_abi.rs (renamed from tests/codegen/asm/x86-clobber_abi.rs)0
-rw-r--r--tests/codegen-llvm/asm/x86-clobbers.rs (renamed from tests/codegen/asm/x86-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/asm/x86-target-clobbers.rs (renamed from tests/codegen/asm/x86-target-clobbers.rs)0
-rw-r--r--tests/codegen-llvm/assign-desugar-debuginfo.rs (renamed from tests/codegen/assign-desugar-debuginfo.rs)0
-rw-r--r--tests/codegen-llvm/async-closure-debug.rs (renamed from tests/codegen/async-closure-debug.rs)0
-rw-r--r--tests/codegen-llvm/async-fn-debug-awaitee-field.rs (renamed from tests/codegen/async-fn-debug-awaitee-field.rs)0
-rw-r--r--tests/codegen-llvm/async-fn-debug-msvc.rs (renamed from tests/codegen/async-fn-debug-msvc.rs)0
-rw-r--r--tests/codegen-llvm/async-fn-debug.rs (renamed from tests/codegen/async-fn-debug.rs)0
-rw-r--r--tests/codegen-llvm/atomic-operations.rs (renamed from tests/codegen/atomic-operations.rs)0
-rw-r--r--tests/codegen-llvm/atomicptr.rs (renamed from tests/codegen/atomicptr.rs)0
-rw-r--r--tests/codegen-llvm/autodiff/batched.rs (renamed from tests/codegen/autodiff/batched.rs)0
-rw-r--r--tests/codegen-llvm/autodiff/generic.rs (renamed from tests/codegen/autodiff/generic.rs)0
-rw-r--r--tests/codegen-llvm/autodiff/identical_fnc.rs (renamed from tests/codegen/autodiff/identical_fnc.rs)0
-rw-r--r--tests/codegen-llvm/autodiff/inline.rs (renamed from tests/codegen/autodiff/inline.rs)0
-rw-r--r--tests/codegen-llvm/autodiff/scalar.rs (renamed from tests/codegen/autodiff/scalar.rs)0
-rw-r--r--tests/codegen-llvm/autodiff/sret.rs (renamed from tests/codegen/autodiff/sret.rs)0
-rw-r--r--tests/codegen-llvm/autodiffv2.rs (renamed from tests/codegen/autodiffv2.rs)0
-rw-r--r--tests/codegen-llvm/autovec/dont-shuffle-bswaps-opt2.rs (renamed from tests/codegen/autovec/dont-shuffle-bswaps-opt2.rs)0
-rw-r--r--tests/codegen-llvm/autovec/dont-shuffle-bswaps-opt3.rs (renamed from tests/codegen/autovec/dont-shuffle-bswaps-opt3.rs)0
-rw-r--r--tests/codegen-llvm/autovectorize-f32x4.rs (renamed from tests/codegen/autovectorize-f32x4.rs)0
-rw-r--r--tests/codegen-llvm/auxiliary/extern_decl.rs (renamed from tests/codegen/auxiliary/extern_decl.rs)0
-rw-r--r--tests/codegen-llvm/auxiliary/nounwind.rs (renamed from tests/codegen/auxiliary/nounwind.rs)0
-rw-r--r--tests/codegen-llvm/auxiliary/thread_local_aux.rs (renamed from tests/codegen/auxiliary/thread_local_aux.rs)0
-rw-r--r--tests/codegen-llvm/avr/avr-func-addrspace.rs (renamed from tests/codegen/avr/avr-func-addrspace.rs)0
-rw-r--r--tests/codegen-llvm/bigint-helpers.rs (renamed from tests/codegen/bigint-helpers.rs)0
-rw-r--r--tests/codegen-llvm/binary-heap-peek-mut-pop-no-panic.rs (renamed from tests/codegen/binary-heap-peek-mut-pop-no-panic.rs)0
-rw-r--r--tests/codegen-llvm/binary-search-index-no-bound-check.rs (renamed from tests/codegen/binary-search-index-no-bound-check.rs)0
-rw-r--r--tests/codegen-llvm/bool-cmp.rs (renamed from tests/codegen/bool-cmp.rs)0
-rw-r--r--tests/codegen-llvm/bounds-checking/gep-issue-133979.rs (renamed from tests/codegen/bounds-checking/gep-issue-133979.rs)0
-rw-r--r--tests/codegen-llvm/box-default-debug-copies.rs (renamed from tests/codegen/box-default-debug-copies.rs)0
-rw-r--r--tests/codegen-llvm/box-uninit-bytes.rs (renamed from tests/codegen/box-uninit-bytes.rs)0
-rw-r--r--tests/codegen-llvm/bpf-alu32.rs (renamed from tests/codegen/bpf-alu32.rs)0
-rw-r--r--tests/codegen-llvm/branch-protection.rs (renamed from tests/codegen/branch-protection.rs)0
-rw-r--r--tests/codegen-llvm/call-llvm-intrinsics.rs (renamed from tests/codegen/call-llvm-intrinsics.rs)0
-rw-r--r--tests/codegen-llvm/call-tmps-lifetime.rs (renamed from tests/codegen/call-tmps-lifetime.rs)0
-rw-r--r--tests/codegen-llvm/cast-optimized.rs (renamed from tests/codegen/cast-optimized.rs)0
-rw-r--r--tests/codegen-llvm/cast-target-abi.rs (renamed from tests/codegen/cast-target-abi.rs)0
-rw-r--r--tests/codegen-llvm/catch-unwind.rs (renamed from tests/codegen/catch-unwind.rs)0
-rw-r--r--tests/codegen-llvm/cdylib-external-inline-fns.rs (renamed from tests/codegen/cdylib-external-inline-fns.rs)0
-rw-r--r--tests/codegen-llvm/cf-protection.rs (renamed from tests/codegen/cf-protection.rs)0
-rw-r--r--tests/codegen-llvm/cffi/c-variadic-copy.rs (renamed from tests/codegen/cffi/c-variadic-copy.rs)0
-rw-r--r--tests/codegen-llvm/cffi/c-variadic-naked.rs (renamed from tests/codegen/cffi/c-variadic-naked.rs)0
-rw-r--r--tests/codegen-llvm/cffi/c-variadic-opt.rs (renamed from tests/codegen/cffi/c-variadic-opt.rs)0
-rw-r--r--tests/codegen-llvm/cffi/c-variadic.rs (renamed from tests/codegen/cffi/c-variadic.rs)0
-rw-r--r--tests/codegen-llvm/cffi/ffi-const.rs (renamed from tests/codegen/cffi/ffi-const.rs)0
-rw-r--r--tests/codegen-llvm/cffi/ffi-out-of-bounds-loads.rs (renamed from tests/codegen/cffi/ffi-out-of-bounds-loads.rs)0
-rw-r--r--tests/codegen-llvm/cffi/ffi-pure.rs (renamed from tests/codegen/cffi/ffi-pure.rs)0
-rw-r--r--tests/codegen-llvm/cfguard-checks.rs (renamed from tests/codegen/cfguard-checks.rs)0
-rw-r--r--tests/codegen-llvm/cfguard-disabled.rs (renamed from tests/codegen/cfguard-disabled.rs)0
-rw-r--r--tests/codegen-llvm/cfguard-nochecks.rs (renamed from tests/codegen/cfguard-nochecks.rs)0
-rw-r--r--tests/codegen-llvm/cfguard-non-msvc.rs (renamed from tests/codegen/cfguard-non-msvc.rs)0
-rw-r--r--tests/codegen-llvm/char-ascii-branchless.rs (renamed from tests/codegen/char-ascii-branchless.rs)0
-rw-r--r--tests/codegen-llvm/char-escape-debug-no-bounds-check.rs (renamed from tests/codegen/char-escape-debug-no-bounds-check.rs)0
-rw-r--r--tests/codegen-llvm/checked_ilog.rs (renamed from tests/codegen/checked_ilog.rs)0
-rw-r--r--tests/codegen-llvm/checked_math.rs (renamed from tests/codegen/checked_math.rs)0
-rw-r--r--tests/codegen-llvm/clone-shims.rs (renamed from tests/codegen/clone-shims.rs)0
-rw-r--r--tests/codegen-llvm/clone_as_copy.rs (renamed from tests/codegen/clone_as_copy.rs)0
-rw-r--r--tests/codegen-llvm/codemodels.rs (renamed from tests/codegen/codemodels.rs)0
-rw-r--r--tests/codegen-llvm/coercions.rs (renamed from tests/codegen/coercions.rs)0
-rw-r--r--tests/codegen-llvm/cold-call-declare-and-call.rs (renamed from tests/codegen/cold-call-declare-and-call.rs)0
-rw-r--r--tests/codegen-llvm/common_prim_int_ptr.rs (renamed from tests/codegen/common_prim_int_ptr.rs)0
-rw-r--r--tests/codegen-llvm/comparison-operators-2-struct.rs (renamed from tests/codegen/comparison-operators-2-struct.rs)0
-rw-r--r--tests/codegen-llvm/comparison-operators-2-tuple.rs (renamed from tests/codegen/comparison-operators-2-tuple.rs)0
-rw-r--r--tests/codegen-llvm/comparison-operators-newtype.rs (renamed from tests/codegen/comparison-operators-newtype.rs)0
-rw-r--r--tests/codegen-llvm/compiletest-self-test/minicore-smoke-test.rs (renamed from tests/codegen/compiletest-self-test/minicore-smoke-test.rs)0
-rw-r--r--tests/codegen-llvm/const-array.rs (renamed from tests/codegen/const-array.rs)0
-rw-r--r--tests/codegen-llvm/const-vector.rs (renamed from tests/codegen/const-vector.rs)38
-rw-r--r--tests/codegen-llvm/const_scalar_pair.rs (renamed from tests/codegen/const_scalar_pair.rs)0
-rw-r--r--tests/codegen-llvm/constant-branch.rs (renamed from tests/codegen/constant-branch.rs)0
-rw-r--r--tests/codegen-llvm/consts.rs (renamed from tests/codegen/consts.rs)0
-rw-r--r--tests/codegen-llvm/coroutine-debug-msvc.rs (renamed from tests/codegen/coroutine-debug-msvc.rs)0
-rw-r--r--tests/codegen-llvm/coroutine-debug.rs (renamed from tests/codegen/coroutine-debug.rs)0
-rw-r--r--tests/codegen-llvm/cross-crate-inlining/always-inline.rs (renamed from tests/codegen/cross-crate-inlining/always-inline.rs)0
-rw-r--r--tests/codegen-llvm/cross-crate-inlining/auxiliary/always.rs (renamed from tests/codegen/cross-crate-inlining/auxiliary/always.rs)0
-rw-r--r--tests/codegen-llvm/cross-crate-inlining/auxiliary/leaf.rs (renamed from tests/codegen/cross-crate-inlining/auxiliary/leaf.rs)0
-rw-r--r--tests/codegen-llvm/cross-crate-inlining/auxiliary/never.rs (renamed from tests/codegen/cross-crate-inlining/auxiliary/never.rs)0
-rw-r--r--tests/codegen-llvm/cross-crate-inlining/leaf-inlining.rs (renamed from tests/codegen/cross-crate-inlining/leaf-inlining.rs)0
-rw-r--r--tests/codegen-llvm/cross-crate-inlining/never-inline.rs (renamed from tests/codegen/cross-crate-inlining/never-inline.rs)0
-rw-r--r--tests/codegen-llvm/dealloc-no-unwind.rs (renamed from tests/codegen/dealloc-no-unwind.rs)0
-rw-r--r--tests/codegen-llvm/debug-accessibility/crate-enum.rs (renamed from tests/codegen/debug-accessibility/crate-enum.rs)0
-rw-r--r--tests/codegen-llvm/debug-accessibility/crate-struct.rs (renamed from tests/codegen/debug-accessibility/crate-struct.rs)0
-rw-r--r--tests/codegen-llvm/debug-accessibility/private-enum.rs (renamed from tests/codegen/debug-accessibility/private-enum.rs)0
-rw-r--r--tests/codegen-llvm/debug-accessibility/private-struct.rs (renamed from tests/codegen/debug-accessibility/private-struct.rs)0
-rw-r--r--tests/codegen-llvm/debug-accessibility/public-enum.rs (renamed from tests/codegen/debug-accessibility/public-enum.rs)0
-rw-r--r--tests/codegen-llvm/debug-accessibility/public-struct.rs (renamed from tests/codegen/debug-accessibility/public-struct.rs)0
-rw-r--r--tests/codegen-llvm/debug-accessibility/struct-fields.rs (renamed from tests/codegen/debug-accessibility/struct-fields.rs)0
-rw-r--r--tests/codegen-llvm/debug-accessibility/super-enum.rs (renamed from tests/codegen/debug-accessibility/super-enum.rs)0
-rw-r--r--tests/codegen-llvm/debug-accessibility/super-struct.rs (renamed from tests/codegen/debug-accessibility/super-struct.rs)0
-rw-r--r--tests/codegen-llvm/debug-accessibility/tuple-fields.rs (renamed from tests/codegen/debug-accessibility/tuple-fields.rs)0
-rw-r--r--tests/codegen-llvm/debug-alignment.rs (renamed from tests/codegen/debug-alignment.rs)0
-rw-r--r--tests/codegen-llvm/debug-column-msvc.rs (renamed from tests/codegen/debug-column-msvc.rs)0
-rw-r--r--tests/codegen-llvm/debug-column.rs (renamed from tests/codegen/debug-column.rs)0
-rw-r--r--tests/codegen-llvm/debug-compile-unit-path.rs (renamed from tests/codegen/debug-compile-unit-path.rs)0
-rw-r--r--tests/codegen-llvm/debug-fndef-size.rs (renamed from tests/codegen/debug-fndef-size.rs)0
-rw-r--r--tests/codegen-llvm/debug-limited.rs (renamed from tests/codegen/debug-limited.rs)0
-rw-r--r--tests/codegen-llvm/debug-line-directives-only.rs (renamed from tests/codegen/debug-line-directives-only.rs)0
-rw-r--r--tests/codegen-llvm/debug-line-tables-only.rs (renamed from tests/codegen/debug-line-tables-only.rs)0
-rw-r--r--tests/codegen-llvm/debug-linkage-name.rs (renamed from tests/codegen/debug-linkage-name.rs)0
-rw-r--r--tests/codegen-llvm/debug-vtable.rs (renamed from tests/codegen/debug-vtable.rs)0
-rw-r--r--tests/codegen-llvm/debuginfo-constant-locals.rs (renamed from tests/codegen/debuginfo-constant-locals.rs)0
-rw-r--r--tests/codegen-llvm/debuginfo-generic-closure-env-names.rs (renamed from tests/codegen/debuginfo-generic-closure-env-names.rs)0
-rw-r--r--tests/codegen-llvm/debuginfo-inline-callsite-location.rs (renamed from tests/codegen/debuginfo-inline-callsite-location.rs)0
-rw-r--r--tests/codegen-llvm/debuginfo-proc-macro/auxiliary/macro_def.rs (renamed from tests/codegen/debuginfo-proc-macro/auxiliary/macro_def.rs)0
-rw-r--r--tests/codegen-llvm/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs (renamed from tests/codegen/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs)0
-rw-r--r--tests/codegen-llvm/deduced-param-attrs.rs (renamed from tests/codegen/deduced-param-attrs.rs)0
-rw-r--r--tests/codegen-llvm/default-requires-uwtable.rs (renamed from tests/codegen/default-requires-uwtable.rs)0
-rw-r--r--tests/codegen-llvm/default-visibility.rs (renamed from tests/codegen/default-visibility.rs)0
-rw-r--r--tests/codegen-llvm/direct-access-external-data.rs (renamed from tests/codegen/direct-access-external-data.rs)0
-rw-r--r--tests/codegen-llvm/dllimports/auxiliary/dummy.rs (renamed from tests/codegen/dllimports/auxiliary/dummy.rs)0
-rw-r--r--tests/codegen-llvm/dllimports/auxiliary/wrapper.rs (renamed from tests/codegen/dllimports/auxiliary/wrapper.rs)0
-rw-r--r--tests/codegen-llvm/dllimports/main.rs (renamed from tests/codegen/dllimports/main.rs)0
-rw-r--r--tests/codegen-llvm/dont_codegen_private_const_fn_only_used_in_const_eval.rs (renamed from tests/codegen/dont_codegen_private_const_fn_only_used_in_const_eval.rs)0
-rw-r--r--tests/codegen-llvm/drop-in-place-noalias.rs (renamed from tests/codegen/drop-in-place-noalias.rs)0
-rw-r--r--tests/codegen-llvm/drop.rs (renamed from tests/codegen/drop.rs)0
-rw-r--r--tests/codegen-llvm/dst-offset.rs (renamed from tests/codegen/dst-offset.rs)0
-rw-r--r--tests/codegen-llvm/dst-vtable-align-nonzero.rs (renamed from tests/codegen/dst-vtable-align-nonzero.rs)0
-rw-r--r--tests/codegen-llvm/dst-vtable-size-range.rs (renamed from tests/codegen/dst-vtable-size-range.rs)0
-rw-r--r--tests/codegen-llvm/ehcontguard_disabled.rs (renamed from tests/codegen/ehcontguard_disabled.rs)0
-rw-r--r--tests/codegen-llvm/ehcontguard_enabled.rs (renamed from tests/codegen/ehcontguard_enabled.rs)0
-rw-r--r--tests/codegen-llvm/emscripten-catch-unwind-js-eh.rs (renamed from tests/codegen/emscripten-catch-unwind-js-eh.rs)0
-rw-r--r--tests/codegen-llvm/emscripten-catch-unwind-wasm-eh.rs (renamed from tests/codegen/emscripten-catch-unwind-wasm-eh.rs)0
-rw-r--r--tests/codegen-llvm/enable-lto-unit-splitting.rs (renamed from tests/codegen/enable-lto-unit-splitting.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-aggregate.rs (renamed from tests/codegen/enum/enum-aggregate.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-bounds-check-derived-idx.rs (renamed from tests/codegen/enum/enum-bounds-check-derived-idx.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-bounds-check-issue-13926.rs (renamed from tests/codegen/enum/enum-bounds-check-issue-13926.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-bounds-check-issue-82871.rs (renamed from tests/codegen/enum/enum-bounds-check-issue-82871.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-bounds-check.rs (renamed from tests/codegen/enum/enum-bounds-check.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-debug-clike.rs (renamed from tests/codegen/enum/enum-debug-clike.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-debug-niche-2.rs (renamed from tests/codegen/enum/enum-debug-niche-2.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-debug-niche.rs (renamed from tests/codegen/enum/enum-debug-niche.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-debug-tagged.rs (renamed from tests/codegen/enum/enum-debug-tagged.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-discriminant-eq.rs (renamed from tests/codegen/enum/enum-discriminant-eq.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-discriminant-value.rs (renamed from tests/codegen/enum/enum-discriminant-value.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-early-otherwise-branch.rs (renamed from tests/codegen/enum/enum-early-otherwise-branch.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-match.rs (renamed from tests/codegen/enum/enum-match.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-two-variants-match.rs (renamed from tests/codegen/enum/enum-two-variants-match.rs)0
-rw-r--r--tests/codegen-llvm/enum/enum-u128.rs (renamed from tests/codegen/enum/enum-u128.rs)0
-rw-r--r--tests/codegen-llvm/enum/unreachable_enum_default_branch.rs (renamed from tests/codegen/enum/unreachable_enum_default_branch.rs)0
-rw-r--r--tests/codegen-llvm/ergonomic-clones/closure.rs (renamed from tests/codegen/ergonomic-clones/closure.rs)0
-rw-r--r--tests/codegen-llvm/error-provide.rs (renamed from tests/codegen/error-provide.rs)0
-rw-r--r--tests/codegen-llvm/export-no-mangle.rs (renamed from tests/codegen/export-no-mangle.rs)0
-rw-r--r--tests/codegen-llvm/external-no-mangle-fns.rs (renamed from tests/codegen/external-no-mangle-fns.rs)0
-rw-r--r--tests/codegen-llvm/external-no-mangle-statics.rs (renamed from tests/codegen/external-no-mangle-statics.rs)0
-rw-r--r--tests/codegen-llvm/f128-wasm32-callconv.rs (renamed from tests/codegen/f128-wasm32-callconv.rs)0
-rw-r--r--tests/codegen-llvm/fastcall-inreg.rs (renamed from tests/codegen/fastcall-inreg.rs)0
-rw-r--r--tests/codegen-llvm/fatptr.rs (renamed from tests/codegen/fatptr.rs)0
-rw-r--r--tests/codegen-llvm/fewer-names.rs (renamed from tests/codegen/fewer-names.rs)0
-rw-r--r--tests/codegen-llvm/fixed-x18.rs (renamed from tests/codegen/fixed-x18.rs)0
-rw-r--r--tests/codegen-llvm/float/algebraic.rs (renamed from tests/codegen/float/algebraic.rs)0
-rw-r--r--tests/codegen-llvm/float/f128.rs (renamed from tests/codegen/float/f128.rs)0
-rw-r--r--tests/codegen-llvm/float/f16-f128-inline.rs (renamed from tests/codegen/float/f16-f128-inline.rs)0
-rw-r--r--tests/codegen-llvm/float/f16.rs (renamed from tests/codegen/float/f16.rs)0
-rw-r--r--tests/codegen-llvm/float_math.rs (renamed from tests/codegen/float_math.rs)0
-rw-r--r--tests/codegen-llvm/fn-impl-trait-self.rs (renamed from tests/codegen/fn-impl-trait-self.rs)0
-rw-r--r--tests/codegen-llvm/fn-parameters-on-different-lines-debuginfo.rs (renamed from tests/codegen/fn-parameters-on-different-lines-debuginfo.rs)0
-rw-r--r--tests/codegen-llvm/force-frame-pointers.rs (renamed from tests/codegen/force-frame-pointers.rs)0
-rw-r--r--tests/codegen-llvm/force-no-unwind-tables.rs (renamed from tests/codegen/force-no-unwind-tables.rs)0
-rw-r--r--tests/codegen-llvm/force-unwind-tables.rs (renamed from tests/codegen/force-unwind-tables.rs)0
-rw-r--r--tests/codegen-llvm/frame-pointer-cli-control.rs (renamed from tests/codegen/frame-pointer-cli-control.rs)0
-rw-r--r--tests/codegen-llvm/frame-pointer.rs (renamed from tests/codegen/frame-pointer.rs)0
-rw-r--r--tests/codegen-llvm/function-arguments-noopt.rs (renamed from tests/codegen/function-arguments-noopt.rs)0
-rw-r--r--tests/codegen-llvm/function-arguments.rs (renamed from tests/codegen/function-arguments.rs)0
-rw-r--r--tests/codegen-llvm/function-return.rs (renamed from tests/codegen/function-return.rs)0
-rw-r--r--tests/codegen-llvm/gdb_debug_script_load.rs (renamed from tests/codegen/gdb_debug_script_load.rs)0
-rw-r--r--tests/codegen-llvm/generic-debug.rs (renamed from tests/codegen/generic-debug.rs)0
-rw-r--r--tests/codegen-llvm/gep-index.rs (renamed from tests/codegen/gep-index.rs)0
-rw-r--r--tests/codegen-llvm/gpu-kernel-abi.rs (renamed from tests/codegen/gpu-kernel-abi.rs)0
-rw-r--r--tests/codegen-llvm/gpu_offload/gpu_host.rs80
-rw-r--r--tests/codegen-llvm/hint/cold_path.rs (renamed from tests/codegen/hint/cold_path.rs)0
-rw-r--r--tests/codegen-llvm/hint/likely.rs (renamed from tests/codegen/hint/likely.rs)0
-rw-r--r--tests/codegen-llvm/hint/unlikely.rs (renamed from tests/codegen/hint/unlikely.rs)0
-rw-r--r--tests/codegen-llvm/i128-wasm32-callconv.rs (renamed from tests/codegen/i128-wasm32-callconv.rs)0
-rw-r--r--tests/codegen-llvm/i128-x86-align.rs (renamed from tests/codegen/i128-x86-align.rs)0
-rw-r--r--tests/codegen-llvm/i128-x86-callconv.rs (renamed from tests/codegen/i128-x86-callconv.rs)0
-rw-r--r--tests/codegen-llvm/infallible-unwrap-in-opt-z.rs (renamed from tests/codegen/infallible-unwrap-in-opt-z.rs)0
-rw-r--r--tests/codegen-llvm/inherit_overflow.rs (renamed from tests/codegen/inherit_overflow.rs)0
-rw-r--r--tests/codegen-llvm/inline-always-works-always.rs (renamed from tests/codegen/inline-always-works-always.rs)0
-rw-r--r--tests/codegen-llvm/inline-debuginfo.rs (renamed from tests/codegen/inline-debuginfo.rs)0
-rw-r--r--tests/codegen-llvm/inline-function-args-debug-info.rs (renamed from tests/codegen/inline-function-args-debug-info.rs)0
-rw-r--r--tests/codegen-llvm/inline-hint.rs (renamed from tests/codegen/inline-hint.rs)0
-rw-r--r--tests/codegen-llvm/instrument-coverage/instrument-coverage-off.rs (renamed from tests/codegen/instrument-coverage/instrument-coverage-off.rs)0
-rw-r--r--tests/codegen-llvm/instrument-coverage/instrument-coverage.rs (renamed from tests/codegen/instrument-coverage/instrument-coverage.rs)0
-rw-r--r--tests/codegen-llvm/instrument-coverage/testprog.rs (renamed from tests/codegen/instrument-coverage/testprog.rs)0
-rw-r--r--tests/codegen-llvm/instrument-mcount.rs (renamed from tests/codegen/instrument-mcount.rs)0
-rw-r--r--tests/codegen-llvm/instrument-xray/basic.rs (renamed from tests/codegen/instrument-xray/basic.rs)0
-rw-r--r--tests/codegen-llvm/instrument-xray/options-combine.rs (renamed from tests/codegen/instrument-xray/options-combine.rs)0
-rw-r--r--tests/codegen-llvm/instrument-xray/options-override.rs (renamed from tests/codegen/instrument-xray/options-override.rs)0
-rw-r--r--tests/codegen-llvm/integer-cmp.rs (renamed from tests/codegen/integer-cmp.rs)0
-rw-r--r--tests/codegen-llvm/integer-overflow.rs (renamed from tests/codegen/integer-overflow.rs)0
-rw-r--r--tests/codegen-llvm/internalize-closures.rs (renamed from tests/codegen/internalize-closures.rs)0
-rw-r--r--tests/codegen-llvm/intrinsic-no-unnamed-attr.rs (renamed from tests/codegen/intrinsic-no-unnamed-attr.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/aggregate-thin-pointer.rs (renamed from tests/codegen/intrinsics/aggregate-thin-pointer.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/carrying_mul_add.rs (renamed from tests/codegen/intrinsics/carrying_mul_add.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/cold_path.rs (renamed from tests/codegen/intrinsics/cold_path.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/cold_path2.rs (renamed from tests/codegen/intrinsics/cold_path2.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/cold_path3.rs (renamed from tests/codegen/intrinsics/cold_path3.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/compare_bytes.rs (renamed from tests/codegen/intrinsics/compare_bytes.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/const_eval_select.rs (renamed from tests/codegen/intrinsics/const_eval_select.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/ctlz.rs (renamed from tests/codegen/intrinsics/ctlz.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/ctpop.rs (renamed from tests/codegen/intrinsics/ctpop.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/disjoint_bitor.rs (renamed from tests/codegen/intrinsics/disjoint_bitor.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/exact_div.rs (renamed from tests/codegen/intrinsics/exact_div.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/likely.rs (renamed from tests/codegen/intrinsics/likely.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/likely_assert.rs (renamed from tests/codegen/intrinsics/likely_assert.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/mask.rs (renamed from tests/codegen/intrinsics/mask.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/nontemporal.rs (renamed from tests/codegen/intrinsics/nontemporal.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/offset.rs (renamed from tests/codegen/intrinsics/offset.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/offset_from.rs (renamed from tests/codegen/intrinsics/offset_from.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/prefetch.rs (renamed from tests/codegen/intrinsics/prefetch.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/ptr_metadata.rs (renamed from tests/codegen/intrinsics/ptr_metadata.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/rotate_left.rs (renamed from tests/codegen/intrinsics/rotate_left.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/rustc_intrinsic_must_be_overridden.rs (renamed from tests/codegen/intrinsics/rustc_intrinsic_must_be_overridden.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/select_unpredictable.rs (renamed from tests/codegen/intrinsics/select_unpredictable.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/three_way_compare.rs (renamed from tests/codegen/intrinsics/three_way_compare.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/transmute-niched.rs (renamed from tests/codegen/intrinsics/transmute-niched.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/transmute-x64.rs (renamed from tests/codegen/intrinsics/transmute-x64.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/transmute.rs (renamed from tests/codegen/intrinsics/transmute.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/typed_swap.rs (renamed from tests/codegen/intrinsics/typed_swap.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/unchecked_math.rs (renamed from tests/codegen/intrinsics/unchecked_math.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/unlikely.rs (renamed from tests/codegen/intrinsics/unlikely.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/volatile.rs (renamed from tests/codegen/intrinsics/volatile.rs)0
-rw-r--r--tests/codegen-llvm/intrinsics/volatile_order.rs (renamed from tests/codegen/intrinsics/volatile_order.rs)0
-rw-r--r--tests/codegen-llvm/is_val_statically_known.rs (renamed from tests/codegen/is_val_statically_known.rs)0
-rw-r--r--tests/codegen-llvm/issue-97217.rs (renamed from tests/codegen/issue-97217.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-101048.rs (renamed from tests/codegen/issues/issue-101048.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-101082.rs (renamed from tests/codegen/issues/issue-101082.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-101814.rs (renamed from tests/codegen/issues/issue-101814.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-103132.rs (renamed from tests/codegen/issues/issue-103132.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-103285-ptr-addr-overflow-check.rs (renamed from tests/codegen/issues/issue-103285-ptr-addr-overflow-check.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-103327.rs (renamed from tests/codegen/issues/issue-103327.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-103840.rs (renamed from tests/codegen/issues/issue-103840.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-105386-ub-in-debuginfo.rs (renamed from tests/codegen/issues/issue-105386-ub-in-debuginfo.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-106369.rs (renamed from tests/codegen/issues/issue-106369.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-107681-unwrap_unchecked.rs (renamed from tests/codegen/issues/issue-107681-unwrap_unchecked.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-108395-branchy-bool-match.rs (renamed from tests/codegen/issues/issue-108395-branchy-bool-match.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-109328-split_first.rs (renamed from tests/codegen/issues/issue-109328-split_first.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-110797-enum-jump-same.rs (renamed from tests/codegen/issues/issue-110797-enum-jump-same.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-111603.rs (renamed from tests/codegen/issues/issue-111603.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-112509-slice-get-andthen-get.rs (renamed from tests/codegen/issues/issue-112509-slice-get-andthen-get.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-113757-bounds-check-after-cmp-max.rs (renamed from tests/codegen/issues/issue-113757-bounds-check-after-cmp-max.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-114312.rs (renamed from tests/codegen/issues/issue-114312.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-115385-llvm-jump-threading.rs (renamed from tests/codegen/issues/issue-115385-llvm-jump-threading.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-116878.rs (renamed from tests/codegen/issues/issue-116878.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-118306.rs (renamed from tests/codegen/issues/issue-118306.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-118392.rs (renamed from tests/codegen/issues/issue-118392.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-119422.rs (renamed from tests/codegen/issues/issue-119422.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-121719-common-field-offset.rs (renamed from tests/codegen/issues/issue-121719-common-field-offset.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-122600-ptr-discriminant-update.rs (renamed from tests/codegen/issues/issue-122600-ptr-discriminant-update.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-123712-str-to-lower-autovectorization.rs (renamed from tests/codegen/issues/issue-123712-str-to-lower-autovectorization.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-126585.rs (renamed from tests/codegen/issues/issue-126585.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-129795.rs (renamed from tests/codegen/issues/issue-129795.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-13018.rs (renamed from tests/codegen/issues/issue-13018.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-136329-optnone-noinline.rs (renamed from tests/codegen/issues/issue-136329-optnone-noinline.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-15953.rs (renamed from tests/codegen/issues/issue-15953.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-27130.rs (renamed from tests/codegen/issues/issue-27130.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-32031.rs (renamed from tests/codegen/issues/issue-32031.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-32364.rs (renamed from tests/codegen/issues/issue-32364.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-34634.rs (renamed from tests/codegen/issues/issue-34634.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-34947-pow-i32.rs (renamed from tests/codegen/issues/issue-34947-pow-i32.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-36010-some-box-is_some.rs (renamed from tests/codegen/issues/issue-36010-some-box-is_some.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-37945.rs (renamed from tests/codegen/issues/issue-37945.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-45222.rs (renamed from tests/codegen/issues/issue-45222.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-45466.rs (renamed from tests/codegen/issues/issue-45466.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-45964-bounds-check-slice-pos.rs (renamed from tests/codegen/issues/issue-45964-bounds-check-slice-pos.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-47278.rs (renamed from tests/codegen/issues/issue-47278.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-47442.rs (renamed from tests/codegen/issues/issue-47442.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-56267-2.rs (renamed from tests/codegen/issues/issue-56267-2.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-56267.rs (renamed from tests/codegen/issues/issue-56267.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-56927.rs (renamed from tests/codegen/issues/issue-56927.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-58881.rs (renamed from tests/codegen/issues/issue-58881.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-59352.rs (renamed from tests/codegen/issues/issue-59352.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-64219-fn-ptr-call-returning-never-is-noreturn.rs (renamed from tests/codegen/issues/issue-64219-fn-ptr-call-returning-never-is-noreturn.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-68667-unwrap-combinators.rs (renamed from tests/codegen/issues/issue-68667-unwrap-combinators.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-69101-bounds-check.rs (renamed from tests/codegen/issues/issue-69101-bounds-check.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-73031.rs (renamed from tests/codegen/issues/issue-73031.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-73258.rs (renamed from tests/codegen/issues/issue-73258.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-73338-effecient-cmp.rs (renamed from tests/codegen/issues/issue-73338-effecient-cmp.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-73396-bounds-check-after-position.rs (renamed from tests/codegen/issues/issue-73396-bounds-check-after-position.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-73827-bounds-check-index-in-subexpr.rs (renamed from tests/codegen/issues/issue-73827-bounds-check-index-in-subexpr.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-74938-array-split-at.rs (renamed from tests/codegen/issues/issue-74938-array-split-at.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-75525-bounds-checks.rs (renamed from tests/codegen/issues/issue-75525-bounds-checks.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-75546.rs (renamed from tests/codegen/issues/issue-75546.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-75659.rs (renamed from tests/codegen/issues/issue-75659.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-75978.rs (renamed from tests/codegen/issues/issue-75978.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-77812.rs (renamed from tests/codegen/issues/issue-77812.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-84268.rs (renamed from tests/codegen/issues/issue-84268.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-85872-multiple-reverse.rs (renamed from tests/codegen/issues/issue-85872-multiple-reverse.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-86106.rs (renamed from tests/codegen/issues/issue-86106.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-86109-eliminate-div-by-zero-check.rs (renamed from tests/codegen/issues/issue-86109-eliminate-div-by-zero-check.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-93036-assert-index.rs (renamed from tests/codegen/issues/issue-93036-assert-index.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-96274.rs (renamed from tests/codegen/issues/issue-96274.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-96497-slice-size-nowrap.rs (renamed from tests/codegen/issues/issue-96497-slice-size-nowrap.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-98294-get-mut-copy-from-slice-opt.rs (renamed from tests/codegen/issues/issue-98294-get-mut-copy-from-slice-opt.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-98678-async.rs (renamed from tests/codegen/issues/issue-98678-async.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-98678-closure-coroutine.rs (renamed from tests/codegen/issues/issue-98678-closure-coroutine.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-98678-enum.rs (renamed from tests/codegen/issues/issue-98678-enum.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-98678-struct-union.rs (renamed from tests/codegen/issues/issue-98678-struct-union.rs)0
-rw-r--r--tests/codegen-llvm/issues/issue-99960.rs (renamed from tests/codegen/issues/issue-99960.rs)0
-rw-r--r--tests/codegen-llvm/issues/looping-over-ne-bytes-133528.rs (renamed from tests/codegen/issues/looping-over-ne-bytes-133528.rs)0
-rw-r--r--tests/codegen-llvm/issues/str-to-string-128690.rs (renamed from tests/codegen/issues/str-to-string-128690.rs)0
-rw-r--r--tests/codegen-llvm/iter-repeat-n-trivial-drop.rs (renamed from tests/codegen/iter-repeat-n-trivial-drop.rs)0
-rw-r--r--tests/codegen-llvm/layout-size-checks.rs (renamed from tests/codegen/layout-size-checks.rs)0
-rw-r--r--tests/codegen-llvm/lib-optimizations/iter-sum.rs (renamed from tests/codegen/lib-optimizations/iter-sum.rs)0
-rw-r--r--tests/codegen-llvm/lib-optimizations/slice_rotate.rs (renamed from tests/codegen/lib-optimizations/slice_rotate.rs)0
-rw-r--r--tests/codegen-llvm/lifetime_start_end.rs (renamed from tests/codegen/lifetime_start_end.rs)0
-rw-r--r--tests/codegen-llvm/link-dead-code.rs (renamed from tests/codegen/link-dead-code.rs)0
-rw-r--r--tests/codegen-llvm/link_section.rs (renamed from tests/codegen/link_section.rs)0
-rw-r--r--tests/codegen-llvm/llvm-ident.rs (renamed from tests/codegen/llvm-ident.rs)0
-rw-r--r--tests/codegen-llvm/llvm_module_flags.rs (renamed from tests/codegen/llvm_module_flags.rs)0
-rw-r--r--tests/codegen-llvm/loads.rs (renamed from tests/codegen/loads.rs)0
-rw-r--r--tests/codegen-llvm/local-generics-in-exe-internalized.rs (renamed from tests/codegen/local-generics-in-exe-internalized.rs)0
-rw-r--r--tests/codegen-llvm/loongarch-abi/call-llvm-intrinsics.rs (renamed from tests/codegen/loongarch-abi/call-llvm-intrinsics.rs)0
-rw-r--r--tests/codegen-llvm/loongarch-abi/loongarch64-lp64d-abi.rs (renamed from tests/codegen/loongarch-abi/loongarch64-lp64d-abi.rs)0
-rw-r--r--tests/codegen-llvm/lto-removes-invokes.rs (renamed from tests/codegen/lto-removes-invokes.rs)0
-rw-r--r--tests/codegen-llvm/macos/i686-macosx-deployment-target.rs (renamed from tests/codegen/macos/i686-macosx-deployment-target.rs)0
-rw-r--r--tests/codegen-llvm/macos/i686-no-macosx-deployment-target.rs (renamed from tests/codegen/macos/i686-no-macosx-deployment-target.rs)0
-rw-r--r--tests/codegen-llvm/macos/x86_64-macosx-deployment-target.rs (renamed from tests/codegen/macos/x86_64-macosx-deployment-target.rs)0
-rw-r--r--tests/codegen-llvm/macos/x86_64-no-macosx-deployment-target.rs (renamed from tests/codegen/macos/x86_64-no-macosx-deployment-target.rs)0
-rw-r--r--tests/codegen-llvm/mainsubprogram.rs (renamed from tests/codegen/mainsubprogram.rs)0
-rw-r--r--tests/codegen-llvm/match-optimized.rs (renamed from tests/codegen/match-optimized.rs)0
-rw-r--r--tests/codegen-llvm/match-optimizes-away.rs (renamed from tests/codegen/match-optimizes-away.rs)0
-rw-r--r--tests/codegen-llvm/match-unoptimized.rs (renamed from tests/codegen/match-unoptimized.rs)0
-rw-r--r--tests/codegen-llvm/maybeuninit-rvo.rs (renamed from tests/codegen/maybeuninit-rvo.rs)0
-rw-r--r--tests/codegen-llvm/mem-replace-big-type.rs (renamed from tests/codegen/mem-replace-big-type.rs)0
-rw-r--r--tests/codegen-llvm/mem-replace-simple-type.rs (renamed from tests/codegen/mem-replace-simple-type.rs)0
-rw-r--r--tests/codegen-llvm/merge-functions.rs (renamed from tests/codegen/merge-functions.rs)0
-rw-r--r--tests/codegen-llvm/meta-filecheck/check-prefix.rs (renamed from tests/codegen/meta-filecheck/check-prefix.rs)0
-rw-r--r--tests/codegen-llvm/meta-filecheck/filecheck-flags.rs (renamed from tests/codegen/meta-filecheck/filecheck-flags.rs)0
-rw-r--r--tests/codegen-llvm/meta-filecheck/msvc-prefix-bad.rs (renamed from tests/codegen/meta-filecheck/msvc-prefix-bad.rs)0
-rw-r--r--tests/codegen-llvm/meta-filecheck/no-directives.rs (renamed from tests/codegen/meta-filecheck/no-directives.rs)0
-rw-r--r--tests/codegen-llvm/meta-filecheck/revision-prefix.rs (renamed from tests/codegen/meta-filecheck/revision-prefix.rs)0
-rw-r--r--tests/codegen-llvm/method-declaration.rs (renamed from tests/codegen/method-declaration.rs)0
-rw-r--r--tests/codegen-llvm/min-function-alignment.rs (renamed from tests/codegen/min-function-alignment.rs)6
-rw-r--r--tests/codegen-llvm/mir-aggregate-no-alloca.rs (renamed from tests/codegen/mir-aggregate-no-alloca.rs)0
-rw-r--r--tests/codegen-llvm/mir-inlined-line-numbers.rs (renamed from tests/codegen/mir-inlined-line-numbers.rs)0
-rw-r--r--tests/codegen-llvm/mir_zst_stores.rs (renamed from tests/codegen/mir_zst_stores.rs)0
-rw-r--r--tests/codegen-llvm/move-before-nocapture-ref-arg.rs (renamed from tests/codegen/move-before-nocapture-ref-arg.rs)0
-rw-r--r--tests/codegen-llvm/move-operands.rs (renamed from tests/codegen/move-operands.rs)0
-rw-r--r--tests/codegen-llvm/naked-asan.rs (renamed from tests/codegen/naked-asan.rs)0
-rw-r--r--tests/codegen-llvm/naked-fn/aligned.rs (renamed from tests/codegen/naked-fn/aligned.rs)5
-rw-r--r--tests/codegen-llvm/naked-fn/generics.rs (renamed from tests/codegen/naked-fn/generics.rs)0
-rw-r--r--tests/codegen-llvm/naked-fn/instruction-set.rs (renamed from tests/codegen/naked-fn/instruction-set.rs)0
-rw-r--r--tests/codegen-llvm/naked-fn/min-function-alignment.rs (renamed from tests/codegen/naked-fn/min-function-alignment.rs)6
-rw-r--r--tests/codegen-llvm/naked-fn/naked-functions.rs (renamed from tests/codegen/naked-fn/naked-functions.rs)0
-rw-r--r--tests/codegen-llvm/no-alloca-inside-if-false.rs (renamed from tests/codegen/no-alloca-inside-if-false.rs)0
-rw-r--r--tests/codegen-llvm/no-assumes-on-casts.rs (renamed from tests/codegen/no-assumes-on-casts.rs)0
-rw-r--r--tests/codegen-llvm/no-dllimport-w-cross-lang-lto.rs (renamed from tests/codegen/no-dllimport-w-cross-lang-lto.rs)0
-rw-r--r--tests/codegen-llvm/no-jump-tables.rs (renamed from tests/codegen/no-jump-tables.rs)0
-rw-r--r--tests/codegen-llvm/no-plt.rs (renamed from tests/codegen/no-plt.rs)0
-rw-r--r--tests/codegen-llvm/no-redundant-item-monomorphization.rs (renamed from tests/codegen/no-redundant-item-monomorphization.rs)0
-rw-r--r--tests/codegen-llvm/no_builtins-at-crate.rs (renamed from tests/codegen/no_builtins-at-crate.rs)0
-rw-r--r--tests/codegen-llvm/noalias-box-off.rs (renamed from tests/codegen/noalias-box-off.rs)0
-rw-r--r--tests/codegen-llvm/noalias-box.rs (renamed from tests/codegen/noalias-box.rs)0
-rw-r--r--tests/codegen-llvm/noalias-flag.rs (renamed from tests/codegen/noalias-flag.rs)0
-rw-r--r--tests/codegen-llvm/noalias-freeze.rs (renamed from tests/codegen/noalias-freeze.rs)0
-rw-r--r--tests/codegen-llvm/noalias-refcell.rs (renamed from tests/codegen/noalias-refcell.rs)0
-rw-r--r--tests/codegen-llvm/noalias-rwlockreadguard.rs (renamed from tests/codegen/noalias-rwlockreadguard.rs)0
-rw-r--r--tests/codegen-llvm/noalias-unpin.rs (renamed from tests/codegen/noalias-unpin.rs)0
-rw-r--r--tests/codegen-llvm/non-terminate/infinite-loop-1.rs (renamed from tests/codegen/non-terminate/infinite-loop-1.rs)0
-rw-r--r--tests/codegen-llvm/non-terminate/infinite-loop-2.rs (renamed from tests/codegen/non-terminate/infinite-loop-2.rs)0
-rw-r--r--tests/codegen-llvm/non-terminate/infinite-recursion.rs (renamed from tests/codegen/non-terminate/infinite-recursion.rs)0
-rw-r--r--tests/codegen-llvm/non-terminate/nonempty-infinite-loop.rs (renamed from tests/codegen/non-terminate/nonempty-infinite-loop.rs)0
-rw-r--r--tests/codegen-llvm/noreturn-uninhabited.rs (renamed from tests/codegen/noreturn-uninhabited.rs)0
-rw-r--r--tests/codegen-llvm/noreturnflag.rs (renamed from tests/codegen/noreturnflag.rs)0
-rw-r--r--tests/codegen-llvm/nounwind.rs (renamed from tests/codegen/nounwind.rs)0
-rw-r--r--tests/codegen-llvm/nrvo.rs (renamed from tests/codegen/nrvo.rs)0
-rw-r--r--tests/codegen-llvm/optimize-attr-1.rs (renamed from tests/codegen/optimize-attr-1.rs)0
-rw-r--r--tests/codegen-llvm/option-as-slice.rs (renamed from tests/codegen/option-as-slice.rs)0
-rw-r--r--tests/codegen-llvm/option-niche-eq.rs (renamed from tests/codegen/option-niche-eq.rs)0
-rw-r--r--tests/codegen-llvm/option-niche-unfixed/option-nonzero-eq.rs (renamed from tests/codegen/option-niche-unfixed/option-nonzero-eq.rs)0
-rw-r--r--tests/codegen-llvm/overaligned-constant.rs (renamed from tests/codegen/overaligned-constant.rs)0
-rw-r--r--tests/codegen-llvm/packed.rs (renamed from tests/codegen/packed.rs)0
-rw-r--r--tests/codegen-llvm/panic-abort-windows.rs (renamed from tests/codegen/panic-abort-windows.rs)0
-rw-r--r--tests/codegen-llvm/panic-in-drop-abort.rs (renamed from tests/codegen/panic-in-drop-abort.rs)0
-rw-r--r--tests/codegen-llvm/panic-unwind-default-uwtable.rs (renamed from tests/codegen/panic-unwind-default-uwtable.rs)0
-rw-r--r--tests/codegen-llvm/patchable-function-entry/patchable-function-entry-both-flags.rs (renamed from tests/codegen/patchable-function-entry/patchable-function-entry-both-flags.rs)0
-rw-r--r--tests/codegen-llvm/patchable-function-entry/patchable-function-entry-no-flag.rs (renamed from tests/codegen/patchable-function-entry/patchable-function-entry-no-flag.rs)0
-rw-r--r--tests/codegen-llvm/patchable-function-entry/patchable-function-entry-one-flag.rs (renamed from tests/codegen/patchable-function-entry/patchable-function-entry-one-flag.rs)0
-rw-r--r--tests/codegen-llvm/pattern_type_symbols.rs (renamed from tests/codegen/pattern_type_symbols.rs)0
-rw-r--r--tests/codegen-llvm/personality_lifetimes.rs (renamed from tests/codegen/personality_lifetimes.rs)0
-rw-r--r--tests/codegen-llvm/pgo-counter-bias.rs (renamed from tests/codegen/pgo-counter-bias.rs)0
-rw-r--r--tests/codegen-llvm/pgo-instrumentation.rs (renamed from tests/codegen/pgo-instrumentation.rs)0
-rw-r--r--tests/codegen-llvm/pic-relocation-model.rs (renamed from tests/codegen/pic-relocation-model.rs)0
-rw-r--r--tests/codegen-llvm/pie-relocation-model.rs (renamed from tests/codegen/pie-relocation-model.rs)0
-rw-r--r--tests/codegen-llvm/placement-new.rs (renamed from tests/codegen/placement-new.rs)0
-rw-r--r--tests/codegen-llvm/powerpc64le-struct-align-128.rs (renamed from tests/codegen/powerpc64le-struct-align-128.rs)0
-rw-r--r--tests/codegen-llvm/precondition-checks.rs (renamed from tests/codegen/precondition-checks.rs)0
-rw-r--r--tests/codegen-llvm/ptr-arithmetic.rs (renamed from tests/codegen/ptr-arithmetic.rs)0
-rw-r--r--tests/codegen-llvm/ptr-read-metadata.rs (renamed from tests/codegen/ptr-read-metadata.rs)0
-rw-r--r--tests/codegen-llvm/range-attribute.rs (renamed from tests/codegen/range-attribute.rs)0
-rw-r--r--tests/codegen-llvm/range-loop.rs (renamed from tests/codegen/range-loop.rs)0
-rw-r--r--tests/codegen-llvm/range_to_inclusive.rs (renamed from tests/codegen/range_to_inclusive.rs)0
-rw-r--r--tests/codegen-llvm/refs.rs (renamed from tests/codegen/refs.rs)0
-rw-r--r--tests/codegen-llvm/reg-struct-return.rs (renamed from tests/codegen/reg-struct-return.rs)0
-rw-r--r--tests/codegen-llvm/regparm-inreg.rs (renamed from tests/codegen/regparm-inreg.rs)0
-rw-r--r--tests/codegen-llvm/remap_path_prefix/aux_mod.rs (renamed from tests/codegen/remap_path_prefix/aux_mod.rs)0
-rw-r--r--tests/codegen-llvm/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs (renamed from tests/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs)0
-rw-r--r--tests/codegen-llvm/remap_path_prefix/auxiliary/xcrate-generic.rs (renamed from tests/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs)0
-rw-r--r--tests/codegen-llvm/remap_path_prefix/issue-73167-remap-std.rs (renamed from tests/codegen/remap_path_prefix/issue-73167-remap-std.rs)0
-rw-r--r--tests/codegen-llvm/remap_path_prefix/main.rs (renamed from tests/codegen/remap_path_prefix/main.rs)0
-rw-r--r--tests/codegen-llvm/remap_path_prefix/xcrate-generic.rs (renamed from tests/codegen/remap_path_prefix/xcrate-generic.rs)0
-rw-r--r--tests/codegen-llvm/repeat-operand-zero-len.rs (renamed from tests/codegen/repeat-operand-zero-len.rs)0
-rw-r--r--tests/codegen-llvm/repeat-operand-zst-elem.rs (renamed from tests/codegen/repeat-operand-zst-elem.rs)0
-rw-r--r--tests/codegen-llvm/repeat-trusted-len.rs (renamed from tests/codegen/repeat-trusted-len.rs)0
-rw-r--r--tests/codegen-llvm/repr/transparent-byval-struct-ptr.rs (renamed from tests/codegen/repr/transparent-byval-struct-ptr.rs)0
-rw-r--r--tests/codegen-llvm/repr/transparent-imm-array.rs (renamed from tests/codegen/repr/transparent-imm-array.rs)0
-rw-r--r--tests/codegen-llvm/repr/transparent-mips64.rs (renamed from tests/codegen/repr/transparent-mips64.rs)0
-rw-r--r--tests/codegen-llvm/repr/transparent-opaque-ptr.rs (renamed from tests/codegen/repr/transparent-opaque-ptr.rs)0
-rw-r--r--tests/codegen-llvm/repr/transparent-sparc64.rs (renamed from tests/codegen/repr/transparent-sparc64.rs)0
-rw-r--r--tests/codegen-llvm/repr/transparent-sysv64.rs (renamed from tests/codegen/repr/transparent-sysv64.rs)0
-rw-r--r--tests/codegen-llvm/repr/transparent.rs (renamed from tests/codegen/repr/transparent.rs)0
-rw-r--r--tests/codegen-llvm/retpoline.rs (renamed from tests/codegen/retpoline.rs)0
-rw-r--r--tests/codegen-llvm/riscv-abi/call-llvm-intrinsics.rs (renamed from tests/codegen/riscv-abi/call-llvm-intrinsics.rs)0
-rw-r--r--tests/codegen-llvm/riscv-abi/cast-local-large-enough.rs (renamed from tests/codegen/riscv-abi/cast-local-large-enough.rs)0
-rw-r--r--tests/codegen-llvm/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs (renamed from tests/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs)0
-rw-r--r--tests/codegen-llvm/riscv-abi/riscv64-lp64d-abi.rs (renamed from tests/codegen/riscv-abi/riscv64-lp64d-abi.rs)0
-rw-r--r--tests/codegen-llvm/riscv-abi/riscv64-lp64f-lp64d-abi.rs (renamed from tests/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs)0
-rw-r--r--tests/codegen-llvm/riscv-target-abi.rs (renamed from tests/codegen/riscv-target-abi.rs)0
-rw-r--r--tests/codegen-llvm/rust-abi-arch-specific-adjustment.rs (renamed from tests/codegen/rust-abi-arch-specific-adjustment.rs)0
-rw-r--r--tests/codegen-llvm/s390x-simd.rs (renamed from tests/codegen/s390x-simd.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/aarch64-shadow-call-stack-with-fixed-x18.rs (renamed from tests/codegen/sanitizer/aarch64-shadow-call-stack-with-fixed-x18.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/address-sanitizer-globals-tracking.rs (renamed from tests/codegen/sanitizer/address-sanitizer-globals-tracking.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/add-canonical-jump-tables-flag.rs (renamed from tests/codegen/sanitizer/cfi/add-canonical-jump-tables-flag.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/add-cfi-normalize-integers-flag.rs (renamed from tests/codegen/sanitizer/cfi/add-cfi-normalize-integers-flag.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/add-enable-split-lto-unit-flag.rs (renamed from tests/codegen/sanitizer/cfi/add-enable-split-lto-unit-flag.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/dbg-location-on-cfi-blocks.rs (renamed from tests/codegen/sanitizer/cfi/dbg-location-on-cfi-blocks.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-checks-attr-no-sanitize.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-checks-attr-no-sanitize.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-checks.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-checks.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-attr-cfi-encoding.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-attr-cfi-encoding.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-const-generics.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-const-generics.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-drop-in-place.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-drop-in-place.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-function-types.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-function-types.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-lifetimes.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-lifetimes.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-method-secondary-typeid.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-method-secondary-typeid.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-paths.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-paths.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-pointer-types.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-pointer-types.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-primitive-types.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-primitive-types.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-repr-transparent-types.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-repr-transparent-types.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-sequence-types.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-sequence-types.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-trait-types.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-trait-types.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-user-defined-types.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-user-defined-types.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-generalized.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-generalized.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized-generalized.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized-generalized.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-trait-objects.rs (renamed from tests/codegen/sanitizer/cfi/emit-type-metadata-trait-objects.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/external_weak_symbols.rs (renamed from tests/codegen/sanitizer/cfi/external_weak_symbols.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/generalize-pointers.rs (renamed from tests/codegen/sanitizer/cfi/generalize-pointers.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/cfi/normalize-integers.rs (renamed from tests/codegen/sanitizer/cfi/normalize-integers.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/dataflow-instrument-functions.rs (renamed from tests/codegen/sanitizer/dataflow-instrument-functions.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kasan-emits-instrumentation.rs (renamed from tests/codegen/sanitizer/kasan-emits-instrumentation.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/add-cfi-normalize-integers-flag.rs (renamed from tests/codegen/sanitizer/kcfi/add-cfi-normalize-integers-flag.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/add-kcfi-arity-flag.rs (renamed from tests/codegen/sanitizer/kcfi/add-kcfi-arity-flag.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/add-kcfi-flag.rs (renamed from tests/codegen/sanitizer/kcfi/add-kcfi-flag.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/add-kcfi-offset-flag.rs (renamed from tests/codegen/sanitizer/kcfi/add-kcfi-offset-flag.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-attr-no-sanitize.rs (renamed from tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-attr-no-sanitize.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-generalized.rs (renamed from tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-generalized.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized-generalized.rs (renamed from tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized-generalized.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized.rs (renamed from tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi.rs (renamed from tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle.rs (renamed from tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/emit-type-metadata-trait-objects.rs (renamed from tests/codegen/sanitizer/kcfi/emit-type-metadata-trait-objects.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/kcfi/naked-function.rs (renamed from tests/codegen/sanitizer/kcfi/naked-function.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/memory-track-origins.rs (renamed from tests/codegen/sanitizer/memory-track-origins.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/memtag-attr-check.rs (renamed from tests/codegen/sanitizer/memtag-attr-check.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/no-sanitize-inlining.rs (renamed from tests/codegen/sanitizer/no-sanitize-inlining.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/no-sanitize.rs (renamed from tests/codegen/sanitizer/no-sanitize.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/riscv64-shadow-call-stack.rs (renamed from tests/codegen/sanitizer/riscv64-shadow-call-stack.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/safestack-attr-check.rs (renamed from tests/codegen/sanitizer/safestack-attr-check.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/sanitizer-recover.rs (renamed from tests/codegen/sanitizer/sanitizer-recover.rs)0
-rw-r--r--tests/codegen-llvm/sanitizer/scs-attr-check.rs (renamed from tests/codegen/sanitizer/scs-attr-check.rs)0
-rw-r--r--tests/codegen-llvm/scalar-pair-bool.rs (renamed from tests/codegen/scalar-pair-bool.rs)0
-rw-r--r--tests/codegen-llvm/set-discriminant-invalid.rs (renamed from tests/codegen/set-discriminant-invalid.rs)0
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-abs.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-ceil.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-cos.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-exp.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-exp2.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-floor.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-fma.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-fsqrt.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-log.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-log.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-log10.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-log2.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-minmax.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-minmax.rs)8
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-sin.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs)32
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs)63
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-bitmask.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs)16
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-gather.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs)13
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-masked-load.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-generic-masked-load.rs)13
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-masked-store.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-generic-masked-store.rs)13
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-scatter.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs)13
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-select.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-generic-select.rs)24
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-mask-reduce.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-mask-reduce.rs)13
-rw-r--r--tests/codegen-llvm/simd-intrinsic/simd-intrinsic-transmute-array.rs (renamed from tests/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs)15
-rw-r--r--tests/codegen-llvm/simd/aggregate-simd.rs (renamed from tests/codegen/simd/aggregate-simd.rs)10
-rw-r--r--tests/codegen-llvm/simd/extract-insert-dyn.rs (renamed from tests/codegen/simd/extract-insert-dyn.rs)0
-rw-r--r--tests/codegen-llvm/simd/packed-simd-alignment.rs (renamed from tests/codegen/simd/packed-simd-alignment.rs)0
-rw-r--r--tests/codegen-llvm/simd/packed-simd.rs (renamed from tests/codegen/simd/packed-simd.rs)12
-rw-r--r--tests/codegen-llvm/simd/simd-wide-sum.rs (renamed from tests/codegen/simd/simd-wide-sum.rs)0
-rw-r--r--tests/codegen-llvm/simd/simd_arith_offset.rs (renamed from tests/codegen/simd/simd_arith_offset.rs)12
-rw-r--r--tests/codegen-llvm/simd/swap-simd-types.rs (renamed from tests/codegen/simd/swap-simd-types.rs)0
-rw-r--r--tests/codegen-llvm/simd/unpadded-simd.rs (renamed from tests/codegen/simd/unpadded-simd.rs)0
-rw-r--r--tests/codegen-llvm/skip-mono-inside-if-false.rs (renamed from tests/codegen/skip-mono-inside-if-false.rs)0
-rw-r--r--tests/codegen-llvm/slice-as_chunks.rs (renamed from tests/codegen/slice-as_chunks.rs)0
-rw-r--r--tests/codegen-llvm/slice-indexing.rs (renamed from tests/codegen/slice-indexing.rs)0
-rw-r--r--tests/codegen-llvm/slice-init.rs (renamed from tests/codegen/slice-init.rs)0
-rw-r--r--tests/codegen-llvm/slice-is-ascii.rs (renamed from tests/codegen/slice-is-ascii.rs)0
-rw-r--r--tests/codegen-llvm/slice-iter-fold.rs (renamed from tests/codegen/slice-iter-fold.rs)0
-rw-r--r--tests/codegen-llvm/slice-iter-len-eq-zero.rs (renamed from tests/codegen/slice-iter-len-eq-zero.rs)0
-rw-r--r--tests/codegen-llvm/slice-iter-nonnull.rs (renamed from tests/codegen/slice-iter-nonnull.rs)0
-rw-r--r--tests/codegen-llvm/slice-last-elements-optimization.rs (renamed from tests/codegen/slice-last-elements-optimization.rs)0
-rw-r--r--tests/codegen-llvm/slice-pointer-nonnull-unwrap.rs (renamed from tests/codegen/slice-pointer-nonnull-unwrap.rs)0
-rw-r--r--tests/codegen-llvm/slice-position-bounds-check.rs (renamed from tests/codegen/slice-position-bounds-check.rs)0
-rw-r--r--tests/codegen-llvm/slice-ref-equality.rs (renamed from tests/codegen/slice-ref-equality.rs)0
-rw-r--r--tests/codegen-llvm/slice-reverse.rs (renamed from tests/codegen/slice-reverse.rs)0
-rw-r--r--tests/codegen-llvm/slice-split-at.rs (renamed from tests/codegen/slice-split-at.rs)0
-rw-r--r--tests/codegen-llvm/slice-windows-no-bounds-check.rs (renamed from tests/codegen/slice-windows-no-bounds-check.rs)0
-rw-r--r--tests/codegen-llvm/slice_as_from_ptr_range.rs (renamed from tests/codegen/slice_as_from_ptr_range.rs)0
-rw-r--r--tests/codegen-llvm/some-abis-do-extend-params-to-32-bits.rs (renamed from tests/codegen/some-abis-do-extend-params-to-32-bits.rs)0
-rw-r--r--tests/codegen-llvm/some-global-nonnull.rs (renamed from tests/codegen/some-global-nonnull.rs)0
-rw-r--r--tests/codegen-llvm/sparc-struct-abi.rs (renamed from tests/codegen/sparc-struct-abi.rs)0
-rw-r--r--tests/codegen-llvm/split-lto-unit.rs (renamed from tests/codegen/split-lto-unit.rs)0
-rw-r--r--tests/codegen-llvm/src-hash-algorithm/src-hash-algorithm-md5.rs (renamed from tests/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs)0
-rw-r--r--tests/codegen-llvm/src-hash-algorithm/src-hash-algorithm-sha1.rs (renamed from tests/codegen/src-hash-algorithm/src-hash-algorithm-sha1.rs)0
-rw-r--r--tests/codegen-llvm/src-hash-algorithm/src-hash-algorithm-sha256.rs (renamed from tests/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs)0
-rw-r--r--tests/codegen-llvm/sroa-fragment-debuginfo.rs (renamed from tests/codegen/sroa-fragment-debuginfo.rs)0
-rw-r--r--tests/codegen-llvm/sse42-implies-crc32.rs (renamed from tests/codegen/sse42-implies-crc32.rs)0
-rw-r--r--tests/codegen-llvm/stack-probes-inline.rs (renamed from tests/codegen/stack-probes-inline.rs)0
-rw-r--r--tests/codegen-llvm/stack-protector.rs (renamed from tests/codegen/stack-protector.rs)0
-rw-r--r--tests/codegen-llvm/static-relocation-model-msvc.rs (renamed from tests/codegen/static-relocation-model-msvc.rs)0
-rw-r--r--tests/codegen-llvm/staticlib-external-inline-fns.rs (renamed from tests/codegen/staticlib-external-inline-fns.rs)0
-rw-r--r--tests/codegen-llvm/step_by-overflow-checks.rs (renamed from tests/codegen/step_by-overflow-checks.rs)0
-rw-r--r--tests/codegen-llvm/stores.rs (renamed from tests/codegen/stores.rs)0
-rw-r--r--tests/codegen-llvm/string-push.rs (renamed from tests/codegen/string-push.rs)0
-rw-r--r--tests/codegen-llvm/swap-large-types.rs (renamed from tests/codegen/swap-large-types.rs)0
-rw-r--r--tests/codegen-llvm/swap-small-types.rs (renamed from tests/codegen/swap-small-types.rs)0
-rw-r--r--tests/codegen-llvm/target-cpu-on-functions.rs (renamed from tests/codegen/target-cpu-on-functions.rs)0
-rw-r--r--tests/codegen-llvm/target-feature-inline-closure.rs (renamed from tests/codegen/target-feature-inline-closure.rs)0
-rw-r--r--tests/codegen-llvm/target-feature-negative-implication.rs (renamed from tests/codegen/target-feature-negative-implication.rs)0
-rw-r--r--tests/codegen-llvm/target-feature-overrides.rs (renamed from tests/codegen/target-feature-overrides.rs)2
-rw-r--r--tests/codegen-llvm/terminating-catchpad.rs (renamed from tests/codegen/terminating-catchpad.rs)0
-rw-r--r--tests/codegen-llvm/thread-local.rs (renamed from tests/codegen/thread-local.rs)0
-rw-r--r--tests/codegen-llvm/tied-features-strength.rs (renamed from tests/codegen/tied-features-strength.rs)0
-rw-r--r--tests/codegen-llvm/to_vec.rs (renamed from tests/codegen/to_vec.rs)0
-rw-r--r--tests/codegen-llvm/trailing_zeros.rs (renamed from tests/codegen/trailing_zeros.rs)0
-rw-r--r--tests/codegen-llvm/transmute-optimized.rs (renamed from tests/codegen/transmute-optimized.rs)0
-rw-r--r--tests/codegen-llvm/transmute-scalar.rs (renamed from tests/codegen/transmute-scalar.rs)0
-rw-r--r--tests/codegen-llvm/try_question_mark_nop.rs (renamed from tests/codegen/try_question_mark_nop.rs)0
-rw-r--r--tests/codegen-llvm/tune-cpu-on-functions.rs (renamed from tests/codegen/tune-cpu-on-functions.rs)0
-rw-r--r--tests/codegen-llvm/tuple-layout-opt.rs (renamed from tests/codegen/tuple-layout-opt.rs)0
-rw-r--r--tests/codegen-llvm/ub-checks.rs (renamed from tests/codegen/ub-checks.rs)0
-rw-r--r--tests/codegen-llvm/unchecked-float-casts.rs (renamed from tests/codegen/unchecked-float-casts.rs)0
-rw-r--r--tests/codegen-llvm/unchecked_shifts.rs (renamed from tests/codegen/unchecked_shifts.rs)0
-rw-r--r--tests/codegen-llvm/uninhabited-transparent-return-abi.rs (renamed from tests/codegen/uninhabited-transparent-return-abi.rs)0
-rw-r--r--tests/codegen-llvm/uninit-consts.rs (renamed from tests/codegen/uninit-consts.rs)0
-rw-r--r--tests/codegen-llvm/uninit-repeat-in-aggregate.rs (renamed from tests/codegen/uninit-repeat-in-aggregate.rs)0
-rw-r--r--tests/codegen-llvm/union-abi.rs (renamed from tests/codegen/union-abi.rs)0
-rw-r--r--tests/codegen-llvm/union-aggregate.rs (renamed from tests/codegen/union-aggregate.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/aapcs-unwind-abi.rs (renamed from tests/codegen/unwind-abis/aapcs-unwind-abi.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/c-unwind-abi-panic-abort.rs (renamed from tests/codegen/unwind-abis/c-unwind-abi-panic-abort.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/c-unwind-abi.rs (renamed from tests/codegen/unwind-abis/c-unwind-abi.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/cdecl-unwind-abi.rs (renamed from tests/codegen/unwind-abis/cdecl-unwind-abi.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/fastcall-unwind-abi.rs (renamed from tests/codegen/unwind-abis/fastcall-unwind-abi.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/nounwind-on-stable-panic-abort.rs (renamed from tests/codegen/unwind-abis/nounwind-on-stable-panic-abort.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/nounwind.rs (renamed from tests/codegen/unwind-abis/nounwind.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/stdcall-unwind-abi.rs (renamed from tests/codegen/unwind-abis/stdcall-unwind-abi.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/system-unwind-abi.rs (renamed from tests/codegen/unwind-abis/system-unwind-abi.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/sysv64-unwind-abi.rs (renamed from tests/codegen/unwind-abis/sysv64-unwind-abi.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/thiscall-unwind-abi.rs (renamed from tests/codegen/unwind-abis/thiscall-unwind-abi.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/vectorcall-unwind-abi.rs (renamed from tests/codegen/unwind-abis/vectorcall-unwind-abi.rs)0
-rw-r--r--tests/codegen-llvm/unwind-abis/win64-unwind-abi.rs (renamed from tests/codegen/unwind-abis/win64-unwind-abi.rs)0
-rw-r--r--tests/codegen-llvm/unwind-and-panic-abort.rs (renamed from tests/codegen/unwind-and-panic-abort.rs)0
-rw-r--r--tests/codegen-llvm/unwind-extern-exports.rs (renamed from tests/codegen/unwind-extern-exports.rs)0
-rw-r--r--tests/codegen-llvm/unwind-extern-imports.rs (renamed from tests/codegen/unwind-extern-imports.rs)0
-rw-r--r--tests/codegen-llvm/unwind-landingpad-cold.rs (renamed from tests/codegen/unwind-landingpad-cold.rs)0
-rw-r--r--tests/codegen-llvm/unwind-landingpad-inline.rs (renamed from tests/codegen/unwind-landingpad-inline.rs)0
-rw-r--r--tests/codegen-llvm/used_with_arg.rs (renamed from tests/codegen/used_with_arg.rs)0
-rw-r--r--tests/codegen-llvm/var-names.rs (renamed from tests/codegen/var-names.rs)0
-rw-r--r--tests/codegen-llvm/vec-as-ptr.rs (renamed from tests/codegen/vec-as-ptr.rs)0
-rw-r--r--tests/codegen-llvm/vec-calloc.rs (renamed from tests/codegen/vec-calloc.rs)0
-rw-r--r--tests/codegen-llvm/vec-in-place.rs (renamed from tests/codegen/vec-in-place.rs)0
-rw-r--r--tests/codegen-llvm/vec-iter-collect-len.rs (renamed from tests/codegen/vec-iter-collect-len.rs)0
-rw-r--r--tests/codegen-llvm/vec-iter.rs (renamed from tests/codegen/vec-iter.rs)0
-rw-r--r--tests/codegen-llvm/vec-len-invariant.rs (renamed from tests/codegen/vec-len-invariant.rs)0
-rw-r--r--tests/codegen-llvm/vec-optimizes-away.rs (renamed from tests/codegen/vec-optimizes-away.rs)0
-rw-r--r--tests/codegen-llvm/vec-reserve-extend.rs (renamed from tests/codegen/vec-reserve-extend.rs)0
-rw-r--r--tests/codegen-llvm/vec-shrink-panik.rs (renamed from tests/codegen/vec-shrink-panik.rs)0
-rw-r--r--tests/codegen-llvm/vec-with-capacity.rs (renamed from tests/codegen/vec-with-capacity.rs)0
-rw-r--r--tests/codegen-llvm/vec_pop_push_noop.rs (renamed from tests/codegen/vec_pop_push_noop.rs)0
-rw-r--r--tests/codegen-llvm/vecdeque-drain.rs (renamed from tests/codegen/vecdeque-drain.rs)0
-rw-r--r--tests/codegen-llvm/vecdeque-nonempty-get-no-panic.rs (renamed from tests/codegen/vecdeque-nonempty-get-no-panic.rs)0
-rw-r--r--tests/codegen-llvm/vecdeque_no_panic.rs (renamed from tests/codegen/vecdeque_no_panic.rs)0
-rw-r--r--tests/codegen-llvm/vecdeque_pop_push.rs (renamed from tests/codegen/vecdeque_pop_push.rs)0
-rw-r--r--tests/codegen-llvm/virtual-call-attrs-issue-137646.rs (renamed from tests/codegen/virtual-call-attrs-issue-137646.rs)0
-rw-r--r--tests/codegen-llvm/virtual-function-elimination-32bit.rs (renamed from tests/codegen/virtual-function-elimination-32bit.rs)0
-rw-r--r--tests/codegen-llvm/virtual-function-elimination.rs (renamed from tests/codegen/virtual-function-elimination.rs)0
-rw-r--r--tests/codegen-llvm/vtable-loads.rs (renamed from tests/codegen/vtable-loads.rs)0
-rw-r--r--tests/codegen-llvm/vtable-upcast.rs (renamed from tests/codegen/vtable-upcast.rs)0
-rw-r--r--tests/codegen-llvm/wasm_casts_trapping.rs (renamed from tests/codegen/wasm_casts_trapping.rs)0
-rw-r--r--tests/codegen-llvm/wasm_exceptions.rs (renamed from tests/codegen/wasm_exceptions.rs)0
-rw-r--r--tests/codegen-llvm/zip.rs (renamed from tests/codegen/zip.rs)0
-rw-r--r--tests/codegen-llvm/zst-offset.rs (renamed from tests/codegen/zst-offset.rs)0
-rw-r--r--tests/codegen/simd/project-to-simd-array-field.rs31
-rw-r--r--tests/coverage/async_closure.cov-map21
-rw-r--r--tests/crashes/140100.rs7
-rw-r--r--tests/crashes/140365.rs8
-rw-r--r--tests/mir-opt/coverage/branch_match_arms.main.InstrumentCoverage.diff2
-rw-r--r--tests/mir-opt/coverage/instrument_coverage.bar.InstrumentCoverage.diff2
-rw-r--r--tests/mir-opt/coverage/instrument_coverage.main.InstrumentCoverage.diff4
-rw-r--r--tests/mir-opt/coverage/instrument_coverage_cleanup.main.CleanupPostBorrowck.diff4
-rw-r--r--tests/mir-opt/coverage/instrument_coverage_cleanup.main.InstrumentCoverage.diff4
-rw-r--r--tests/pretty/hir-delegation.pp2
-rw-r--r--tests/pretty/hir-fn-params.pp2
-rw-r--r--tests/pretty/hir-fn-variadic.pp2
-rw-r--r--tests/pretty/hir-if-else.pp2
-rw-r--r--tests/pretty/hir-lifetimes.pp2
-rw-r--r--tests/pretty/hir-pretty-attr.pp2
-rw-r--r--tests/pretty/hir-pretty-loop.pp2
-rw-r--r--tests/pretty/hir-struct-expr.pp2
-rw-r--r--tests/pretty/issue-4264.pp2
-rw-r--r--tests/pretty/issue-85089.pp2
-rw-r--r--tests/pretty/pin-ergonomics-hir.pp2
-rw-r--r--tests/run-make/avr-rjmp-offset/rmake.rs2
-rw-r--r--tests/run-make/llvm-ident/rmake.rs2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_abi.rs (renamed from tests/ui-fulldeps/stable-mir/check_abi.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_allocation.rs (renamed from tests/ui-fulldeps/stable-mir/check_allocation.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_assoc_items.rs (renamed from tests/ui-fulldeps/stable-mir/check_assoc_items.rs)0
-rw-r--r--tests/ui-fulldeps/rustc_public/check_attribute.rs (renamed from tests/ui-fulldeps/stable-mir/check_attribute.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_binop.rs (renamed from tests/ui-fulldeps/stable-mir/check_binop.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_coroutine_body.rs (renamed from tests/ui-fulldeps/stable-mir/check_coroutine_body.rs)0
-rw-r--r--tests/ui-fulldeps/rustc_public/check_crate_defs.rs (renamed from tests/ui-fulldeps/stable-mir/check_crate_defs.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_def_ty.rs (renamed from tests/ui-fulldeps/stable-mir/check_def_ty.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_defs.rs (renamed from tests/ui-fulldeps/stable-mir/check_defs.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_foreign.rs (renamed from tests/ui-fulldeps/stable-mir/check_foreign.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_instance.rs (renamed from tests/ui-fulldeps/stable-mir/check_instance.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_intrinsics.rs (renamed from tests/ui-fulldeps/stable-mir/check_intrinsics.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_item_kind.rs (renamed from tests/ui-fulldeps/stable-mir/check_item_kind.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_normalization.rs (renamed from tests/ui-fulldeps/stable-mir/check_normalization.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_trait_queries.rs (renamed from tests/ui-fulldeps/stable-mir/check_trait_queries.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_transform.rs (renamed from tests/ui-fulldeps/stable-mir/check_transform.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_ty_fold.rs (renamed from tests/ui-fulldeps/stable-mir/check_ty_fold.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/check_variant.rs (renamed from tests/ui-fulldeps/stable-mir/check_variant.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/closure-generic-body.rs (renamed from tests/ui-fulldeps/stable-mir/closure-generic-body.rs)0
-rw-r--r--tests/ui-fulldeps/rustc_public/closure_body.rs (renamed from tests/ui-fulldeps/stable-mir/closure_body.rs)0
-rw-r--r--tests/ui-fulldeps/rustc_public/compilation-result.rs (renamed from tests/ui-fulldeps/stable-mir/compilation-result.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/crate-info.rs (renamed from tests/ui-fulldeps/stable-mir/crate-info.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/projections.rs (renamed from tests/ui-fulldeps/stable-mir/projections.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/smir_internal.rs (renamed from tests/ui-fulldeps/stable-mir/smir_internal.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/smir_serde.rs (renamed from tests/ui-fulldeps/stable-mir/smir_serde.rs)2
-rw-r--r--tests/ui-fulldeps/rustc_public/smir_visitor.rs (renamed from tests/ui-fulldeps/stable-mir/smir_visitor.rs)2
-rw-r--r--tests/ui/SUMMARY.md4
-rw-r--r--tests/ui/abi/fixed_x18.rs2
-rw-r--r--tests/ui/asm/naked-with-invalid-repr-attr.rs6
-rw-r--r--tests/ui/asm/naked-with-invalid-repr-attr.stderr12
-rw-r--r--tests/ui/attributes/fn-align-dyn.rs7
-rw-r--r--tests/ui/attributes/fn-align-nameres-ambiguity-143834.rs19
-rw-r--r--tests/ui/attributes/invalid-macro-use.rs53
-rw-r--r--tests/ui/attributes/invalid-macro-use.stderr131
-rw-r--r--tests/ui/attributes/malformed-attrs.rs5
-rw-r--r--tests/ui/attributes/malformed-attrs.stderr189
-rw-r--r--tests/ui/attributes/malformed-fn-align.rs35
-rw-r--r--tests/ui/attributes/malformed-fn-align.stderr116
-rw-r--r--tests/ui/borrowck/copy-overflow.rs16
-rw-r--r--tests/ui/borrowck/copy-overflow.stderr15
-rw-r--r--tests/ui/const-generics/generic_const_exprs/type-alias-bounds.neg.stderr25
-rw-r--r--tests/ui/const-generics/generic_const_exprs/type-alias-bounds.rs1
-rw-r--r--tests/ui/consts/const-try-feature-gate.rs2
-rw-r--r--tests/ui/consts/const-try-feature-gate.stderr36
-rw-r--r--tests/ui/consts/const-try.rs8
-rw-r--r--tests/ui/consts/const-try.stderr37
-rw-r--r--tests/ui/consts/const_transmute_type_id6.rs16
-rw-r--r--tests/ui/consts/const_transmute_type_id6.stderr15
-rw-r--r--tests/ui/consts/control-flow/try.rs9
-rw-r--r--tests/ui/consts/control-flow/try.stderr19
-rw-r--r--tests/ui/consts/try-operator.rs3
-rw-r--r--tests/ui/consts/try-operator.stderr42
-rw-r--r--tests/ui/feature-gates/feature-gate-fn_align.rs14
-rw-r--r--tests/ui/feature-gates/feature-gate-fn_align.stderr26
-rw-r--r--tests/ui/feature-gates/issue-43106-gating-of-macro_use.rs2
-rw-r--r--tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr11
-rw-r--r--tests/ui/layout/uncomputable-due-to-trivial-bounds-ice-135138.rs3
-rw-r--r--tests/ui/layout/uncomputable-due-to-trivial-bounds-ice-135138.stderr6
-rw-r--r--tests/ui/layout/unknown-when-no-type-parameter.rs5
-rw-r--r--tests/ui/layout/unknown-when-no-type-parameter.stderr7
-rw-r--r--tests/ui/layout/unknown-when-ptr-metadata-is-DST.rs3
-rw-r--r--tests/ui/layout/unknown-when-ptr-metadata-is-DST.stderr6
-rw-r--r--tests/ui/lifetimes/elided-lifetime-in-const-param-type.rs12
-rw-r--r--tests/ui/lifetimes/elided-lifetime-in-const-param-type.stderr20
-rw-r--r--tests/ui/lint/unused/unused-attr-duplicate.stderr24
-rw-r--r--tests/ui/lint/unused/unused-attr-macro-rules.stderr16
-rw-r--r--tests/ui/macros/genercs-in-path-with-prettry-hir.stdout2
-rw-r--r--tests/ui/macros/macro-use-all-and-none.stderr5
-rw-r--r--tests/ui/macros/macro-use-bad-args-1.rs2
-rw-r--r--tests/ui/macros/macro-use-bad-args-1.stderr19
-rw-r--r--tests/ui/macros/macro-use-bad-args-2.rs2
-rw-r--r--tests/ui/macros/macro-use-bad-args-2.stderr19
-rw-r--r--tests/ui/match/issue-82392.stdout2
-rw-r--r--tests/ui/mir/meaningless-bound.rs20
-rw-r--r--tests/ui/mir/meaningless-bound.stderr19
-rw-r--r--tests/ui/mir/validate/project-into-simd.rs18
-rw-r--r--tests/ui/print-request/supported-crate-types.rs5
-rw-r--r--tests/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs6
-rw-r--r--tests/ui/privacy/pub-priv-dep/pub-priv1.rs71
-rw-r--r--tests/ui/privacy/pub-priv-dep/pub-priv1.stderr166
-rw-r--r--tests/ui/resolve/underscore-bindings-disambiguators.rs27
-rw-r--r--tests/ui/resolve/underscore-bindings-disambiguators.stderr70
-rw-r--r--tests/ui/rust-2018/removing-extern-crate-malformed-cfg.fixed2
-rw-r--r--tests/ui/rust-2018/removing-extern-crate-malformed-cfg.rs6
-rw-r--r--tests/ui/rust-2018/removing-extern-crate-malformed-cfg.stderr12
-rw-r--r--tests/ui/rustc_public-ir-print/async-closure.rs (renamed from tests/ui/stable-mir-print/async-closure.rs)0
-rw-r--r--tests/ui/rustc_public-ir-print/async-closure.stdout (renamed from tests/ui/stable-mir-print/async-closure.stdout)2
-rw-r--r--tests/ui/rustc_public-ir-print/basic_function.rs (renamed from tests/ui/stable-mir-print/basic_function.rs)0
-rw-r--r--tests/ui/rustc_public-ir-print/basic_function.stdout (renamed from tests/ui/stable-mir-print/basic_function.stdout)2
-rw-r--r--tests/ui/rustc_public-ir-print/operands.rs (renamed from tests/ui/stable-mir-print/operands.rs)0
-rw-r--r--tests/ui/rustc_public-ir-print/operands.stdout (renamed from tests/ui/stable-mir-print/operands.stdout)2
-rw-r--r--tests/ui/simd/generics.rs60
-rw-r--r--tests/ui/simd/intrinsic/float-math-pass.rs22
-rw-r--r--tests/ui/simd/intrinsic/float-minmax-pass.rs16
-rw-r--r--tests/ui/simd/intrinsic/generic-arithmetic-pass.rs214
-rw-r--r--tests/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs82
-rw-r--r--tests/ui/simd/intrinsic/generic-as.rs38
-rw-r--r--tests/ui/simd/intrinsic/generic-bswap-byte.rs16
-rw-r--r--tests/ui/simd/intrinsic/generic-cast-pass.rs38
-rw-r--r--tests/ui/simd/intrinsic/generic-cast-pointer-width.rs16
-rw-r--r--tests/ui/simd/intrinsic/generic-comparison-pass.rs43
-rw-r--r--tests/ui/simd/intrinsic/generic-elements-pass.rs120
-rw-r--r--tests/ui/simd/intrinsic/generic-gather-scatter-pass.rs34
-rw-r--r--tests/ui/simd/intrinsic/generic-select-pass.rs94
-rw-r--r--tests/ui/simd/intrinsic/inlining-issue67557.rs20
-rw-r--r--tests/ui/simd/intrinsic/ptr-cast.rs16
-rw-r--r--tests/ui/simd/issue-105439.rs4
-rw-r--r--tests/ui/simd/issue-39720.rs14
-rw-r--r--tests/ui/simd/issue-85915-simd-ptrs.rs32
-rw-r--r--tests/ui/simd/issue-89193.rs22
-rw-r--r--tests/ui/simd/masked-load-store.rs10
-rw-r--r--tests/ui/simd/monomorphize-shuffle-index.rs12
-rw-r--r--tests/ui/simd/repr_packed.rs28
-rw-r--r--tests/ui/simd/shuffle.rs10
-rw-r--r--tests/ui/simd/simd-bitmask-notpow2.rs21
-rw-r--r--tests/ui/simd/simd-bitmask.rs16
-rw-r--r--tests/ui/simd/target-feature-mixup.rs41
-rw-r--r--tests/ui/traits/const-traits/hir-const-check.rs4
-rw-r--r--tests/ui/traits/const-traits/hir-const-check.stderr19
-rw-r--r--tests/ui/traits/const-traits/ice-119717-constant-lifetime.rs5
-rw-r--r--tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr13
-rw-r--r--tests/ui/traits/const-traits/ice-126148-failed-to-normalize.rs8
-rw-r--r--tests/ui/traits/const-traits/ice-126148-failed-to-normalize.stderr41
-rw-r--r--tests/ui/traits/const-traits/trait-default-body-stability.rs2
-rw-r--r--tests/ui/traits/const-traits/trait-default-body-stability.stderr37
-rw-r--r--tests/ui/trivial-bounds/everybody-copies.rs (renamed from tests/crashes/131507.rs)7
-rw-r--r--tests/ui/trivial-bounds/two-sized-strs.rs (renamed from tests/crashes/121363.rs)4
-rw-r--r--tests/ui/type-alias-impl-trait/issue-60662.stdout2
-rw-r--r--tests/ui/uninhabited/auxiliary/staged-api.rs6
-rw-r--r--tests/ui/uninhabited/uninhabited-unstable-field.current.stderr22
-rw-r--r--tests/ui/uninhabited/uninhabited-unstable-field.exhaustive.stderr22
-rw-r--r--tests/ui/uninhabited/uninhabited-unstable-field.rs30
-rw-r--r--tests/ui/uninhabited/uninhabited-unstable-field.stderr40
-rw-r--r--tests/ui/unpretty/bad-literal.stdout2
-rw-r--r--tests/ui/unpretty/debug-fmt-hir.stdout2
-rw-r--r--tests/ui/unpretty/deprecated-attr.stdout2
-rw-r--r--tests/ui/unpretty/diagnostic-attr.stdout2
-rw-r--r--tests/ui/unpretty/exhaustive-asm.hir.stdout2
-rw-r--r--tests/ui/unpretty/exhaustive.hir.stdout2
-rw-r--r--tests/ui/unpretty/flattened-format-args.stdout2
-rw-r--r--tests/ui/unpretty/let-else-hir.stdout2
-rw-r--r--tests/ui/unpretty/self-hir.stdout2
-rw-r--r--tests/ui/unpretty/unpretty-expr-fn-arg.stdout2
-rw-r--r--tests/ui/wasm/simd-to-array-80108.rs4
-rw-r--r--triagebot.toml26
1327 files changed, 15983 insertions, 12994 deletions
diff --git a/.github/workflows/spellcheck.yml b/.github/workflows/spellcheck.yml
deleted file mode 100644
index 7e21bb1b7ff..00000000000
--- a/.github/workflows/spellcheck.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-# This workflow runs spellcheck job
-
-name: Spellcheck
-on:
-  pull_request:
-    branches:
-      - "**"
-
-jobs:
-  spellcheck:
-    name: run spellchecker
-    runs-on: ubuntu-latest
-    steps:
-      - name: Checkout the source code
-        uses: actions/checkout@v4
-
-      - name: check typos
-        # sync version with src/tools/tidy/src/ext_tool_checks.rs in spellcheck_runner
-        uses: crate-ci/typos@v1.34.0
-        with:
-          # sync target files with src/tools/tidy/src/ext_tool_checks.rs in check_impl
-          files: ./compiler ./library ./src/bootstrap ./src/librustdoc
-          config: ./typos.toml
diff --git a/.gitignore b/.gitignore
index a549b6e6e56..5988a64916a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -85,8 +85,6 @@ __pycache__/
 
 ## Node
 node_modules
-package-lock.json
-package.json
 /src/doc/rustc-dev-guide/mermaid.min.js
 
 ## Rustdoc GUI tests
diff --git a/Cargo.lock b/Cargo.lock
index 1f7470e96c5..b7fc2de20b5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -384,7 +384,7 @@ dependencies = [
 name = "cargo-miri"
 version = "0.1.0"
 dependencies = [
- "cargo_metadata 0.19.2",
+ "cargo_metadata 0.21.0",
  "directories",
  "rustc-build-sysroot",
  "rustc_tools_util 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -403,13 +403,38 @@ dependencies = [
 ]
 
 [[package]]
+name = "cargo-platform"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84982c6c0ae343635a3a4ee6dedef965513735c8b183caa7289fa6e27399ebd4"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo-util-schemas"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dc1a6f7b5651af85774ae5a34b4e8be397d9cf4bc063b7e6dbd99a841837830"
+dependencies = [
+ "semver",
+ "serde",
+ "serde-untagged",
+ "serde-value",
+ "thiserror 2.0.12",
+ "toml 0.8.23",
+ "unicode-xid",
+ "url",
+]
+
+[[package]]
 name = "cargo_metadata"
 version = "0.18.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037"
 dependencies = [
  "camino",
- "cargo-platform",
+ "cargo-platform 0.1.9",
  "semver",
  "serde",
  "serde_json",
@@ -423,7 +448,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"
 dependencies = [
  "camino",
- "cargo-platform",
+ "cargo-platform 0.1.9",
+ "semver",
+ "serde",
+ "serde_json",
+ "thiserror 2.0.12",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cfca2aaa699835ba88faf58a06342a314a950d2b9686165e038286c30316868"
+dependencies = [
+ "camino",
+ "cargo-platform 0.2.0",
+ "cargo-util-schemas",
  "semver",
  "serde",
  "serde_json",
@@ -561,7 +601,7 @@ dependencies = [
  "tempfile",
  "termize",
  "toml 0.7.8",
- "ui_test 0.30.2",
+ "ui_test",
  "walkdir",
 ]
 
@@ -704,6 +744,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "colored"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
 name = "comma"
 version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -716,7 +765,7 @@ dependencies = [
  "anstyle-svg",
  "build_helper",
  "camino",
- "colored",
+ "colored 2.2.0",
  "diff",
  "getopts",
  "glob",
@@ -1144,6 +1193,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
 
 [[package]]
+name = "erased-serde"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7"
+dependencies = [
+ "serde",
+ "typeid",
+]
+
+[[package]]
 name = "errno"
 version = "0.3.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1831,17 +1890,16 @@ dependencies = [
 
 [[package]]
 name = "ipc-channel"
-version = "0.19.0"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb8251fb7bcd9ccd3725ed8deae9fe7db8e586495c9eb5b0c52e6233e5e75ea"
+checksum = "5b1c98b70019c830a1fc39cecfe1f60ff99c4122f0a189697c810c90ec545c14"
 dependencies = [
  "bincode",
  "crossbeam-channel",
  "fnv",
- "lazy_static",
  "libc",
  "mio",
- "rand 0.8.5",
+ "rand 0.9.1",
  "serde",
  "tempfile",
  "uuid",
@@ -2240,7 +2298,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
 dependencies = [
  "libc",
- "log",
  "wasi 0.11.1+wasi-snapshot-preview1",
  "windows-sys 0.59.0",
 ]
@@ -2263,7 +2320,7 @@ dependencies = [
  "capstone",
  "chrono",
  "chrono-tz",
- "colored",
+ "colored 3.0.0",
  "directories",
  "getrandom 0.3.3",
  "ipc-channel",
@@ -2280,7 +2337,7 @@ dependencies = [
  "smallvec",
  "tempfile",
  "tikv-jemalloc-sys",
- "ui_test 0.29.2",
+ "ui_test",
 ]
 
 [[package]]
@@ -2561,6 +2618,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
 
 [[package]]
+name = "ordered-float"
+version = "2.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
 name = "overload"
 version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4846,6 +4912,27 @@ dependencies = [
 ]
 
 [[package]]
+name = "serde-untagged"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e"
+dependencies = [
+ "erased-serde",
+ "serde",
+ "typeid",
+]
+
+[[package]]
+name = "serde-value"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
+dependencies = [
+ "ordered-float",
+ "serde",
+]
+
+[[package]]
 name = "serde_derive"
 version = "1.0.219"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4944,16 +5031,6 @@ dependencies = [
 
 [[package]]
 name = "spanned"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86af297923fbcfd107c20a189a6e9c872160df71a7190ae4a7a6c5dce4b2feb6"
-dependencies = [
- "bstr",
- "color-eyre",
-]
-
-[[package]]
-name = "spanned"
 version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c92d4b0c055fde758f086eb4a6e73410247df8a3837fd606d2caeeaf72aa566d"
@@ -5530,6 +5607,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "typeid"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
+
+[[package]]
 name = "typenum"
 version = "1.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5552,32 +5635,6 @@ checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
 
 [[package]]
 name = "ui_test"
-version = "0.29.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1211b1111c752c73b33073d2958072be08825fd97c9ab4d83444da361a06634b"
-dependencies = [
- "annotate-snippets 0.11.5",
- "anyhow",
- "bstr",
- "cargo-platform",
- "cargo_metadata 0.18.1",
- "color-eyre",
- "colored",
- "comma",
- "crossbeam-channel",
- "indicatif",
- "levenshtein",
- "prettydiff",
- "regex",
- "rustc_version",
- "rustfix",
- "serde",
- "serde_json",
- "spanned 0.3.0",
-]
-
-[[package]]
-name = "ui_test"
 version = "0.30.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b56a6897cc4bb6f8daf1939b0b39cd9645856997f46f4d0b3e3cb7122dfe9251"
@@ -5585,10 +5642,10 @@ dependencies = [
  "annotate-snippets 0.11.5",
  "anyhow",
  "bstr",
- "cargo-platform",
+ "cargo-platform 0.1.9",
  "cargo_metadata 0.18.1",
  "color-eyre",
- "colored",
+ "colored 2.2.0",
  "comma",
  "crossbeam-channel",
  "indicatif",
@@ -5599,7 +5656,7 @@ dependencies = [
  "rustfix",
  "serde",
  "serde_json",
- "spanned 0.4.1",
+ "spanned",
 ]
 
 [[package]]
diff --git a/REUSE.toml b/REUSE.toml
index 027b4ccbe25..13aa3e0a411 100644
--- a/REUSE.toml
+++ b/REUSE.toml
@@ -37,6 +37,8 @@ path = [
     "rust-bors.toml",
     "triagebot.toml",
     "typos.toml",
+    "package.json",
+    "package-lock.json",
     "x",
     "x.ps1",
     "x.py",
diff --git a/compiler/rustc_ast/src/ast.rs b/compiler/rustc_ast/src/ast.rs
index 8c2b521c560..97e07095875 100644
--- a/compiler/rustc_ast/src/ast.rs
+++ b/compiler/rustc_ast/src/ast.rs
@@ -28,7 +28,7 @@ use rustc_data_structures::packed::Pu128;
 use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
 use rustc_data_structures::stack::ensure_sufficient_stack;
 use rustc_data_structures::tagged_ptr::Tag;
-use rustc_macros::{Decodable, Encodable, HashStable_Generic};
+use rustc_macros::{Decodable, Encodable, HashStable_Generic, Walkable};
 pub use rustc_span::AttrId;
 use rustc_span::source_map::{Spanned, respan};
 use rustc_span::{ByteSymbol, DUMMY_SP, ErrorGuaranteed, Ident, Span, Symbol, kw, sym};
@@ -39,6 +39,7 @@ use crate::ptr::P;
 use crate::token::{self, CommentKind, Delimiter};
 use crate::tokenstream::{DelimSpan, LazyAttrTokenStream, TokenStream};
 use crate::util::parser::{ExprPrecedence, Fixity};
+use crate::visit::{AssocCtxt, BoundKind, LifetimeCtxt};
 
 /// A "Label" is an identifier of some point in sources,
 /// e.g. in the following code:
@@ -50,7 +51,7 @@ use crate::util::parser::{ExprPrecedence, Fixity};
 /// ```
 ///
 /// `'outer` is a label.
-#[derive(Clone, Encodable, Decodable, Copy, HashStable_Generic, Eq, PartialEq)]
+#[derive(Clone, Encodable, Decodable, Copy, HashStable_Generic, Eq, PartialEq, Walkable)]
 pub struct Label {
     pub ident: Ident,
 }
@@ -63,7 +64,7 @@ impl fmt::Debug for Label {
 
 /// A "Lifetime" is an annotation of the scope in which variable
 /// can be used, e.g. `'a` in `&'a i32`.
-#[derive(Clone, Encodable, Decodable, Copy, PartialEq, Eq, Hash)]
+#[derive(Clone, Encodable, Decodable, Copy, PartialEq, Eq, Hash, Walkable)]
 pub struct Lifetime {
     pub id: NodeId,
     pub ident: Ident,
@@ -87,7 +88,7 @@ impl fmt::Display for Lifetime {
 /// along with a bunch of supporting information.
 ///
 /// E.g., `std::cmp::PartialEq`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Path {
     pub span: Span,
     /// The segments in the path: the things separated by `::`.
@@ -211,7 +212,7 @@ pub fn join_path_idents(path: impl IntoIterator<Item = impl Borrow<Ident>>) -> S
 /// A segment of a path: an identifier, an optional lifetime, and a set of types.
 ///
 /// E.g., `std`, `String` or `Box<T>`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct PathSegment {
     /// The identifier portion of this path segment.
     pub ident: Ident,
@@ -255,7 +256,7 @@ impl PathSegment {
 /// The generic arguments and associated item constraints of a path segment.
 ///
 /// E.g., `<A, B>` as in `Foo<A, B>` or `(A, B)` as in `Foo(A, B)`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum GenericArgs {
     /// The `<'a, A, B, C>` in `foo::bar::baz::<'a, A, B, C>`.
     AngleBracketed(AngleBracketedArgs),
@@ -280,10 +281,10 @@ impl GenericArgs {
 }
 
 /// Concrete argument in the sequence of generic args.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum GenericArg {
     /// `'a` in `Foo<'a>`.
-    Lifetime(Lifetime),
+    Lifetime(#[visitable(extra = LifetimeCtxt::GenericArg)] Lifetime),
     /// `Bar` in `Foo<Bar>`.
     Type(P<Ty>),
     /// `1` in `Foo<1>`.
@@ -301,7 +302,7 @@ impl GenericArg {
 }
 
 /// A path like `Foo<'a, T>`.
-#[derive(Clone, Encodable, Decodable, Debug, Default)]
+#[derive(Clone, Encodable, Decodable, Debug, Default, Walkable)]
 pub struct AngleBracketedArgs {
     /// The overall span.
     pub span: Span,
@@ -310,7 +311,7 @@ pub struct AngleBracketedArgs {
 }
 
 /// Either an argument for a generic parameter or a constraint on an associated item.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum AngleBracketedArg {
     /// A generic argument for a generic parameter.
     Arg(GenericArg),
@@ -340,7 +341,7 @@ impl From<ParenthesizedArgs> for P<GenericArgs> {
 }
 
 /// A path like `Foo(A, B) -> C`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct ParenthesizedArgs {
     /// ```text
     /// Foo(A, B) -> C
@@ -376,7 +377,7 @@ impl ParenthesizedArgs {
 pub use crate::node_id::{CRATE_NODE_ID, DUMMY_NODE_ID, NodeId};
 
 /// Modifiers on a trait bound like `[const]`, `?` and `!`.
-#[derive(Copy, Clone, PartialEq, Eq, Encodable, Decodable, Debug)]
+#[derive(Copy, Clone, PartialEq, Eq, Encodable, Decodable, Debug, Walkable)]
 pub struct TraitBoundModifiers {
     pub constness: BoundConstness,
     pub asyncness: BoundAsyncness,
@@ -391,10 +392,10 @@ impl TraitBoundModifiers {
     };
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum GenericBound {
     Trait(PolyTraitRef),
-    Outlives(Lifetime),
+    Outlives(#[visitable(extra = LifetimeCtxt::Bound)] Lifetime),
     /// Precise capturing syntax: `impl Sized + use<'a>`
     Use(ThinVec<PreciseCapturingArg>, Span),
 }
@@ -429,7 +430,7 @@ impl fmt::Display for ParamKindOrd {
     }
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum GenericParamKind {
     /// A lifetime definition (e.g., `'a: 'b + 'c + 'd`).
     Lifetime,
@@ -445,11 +446,12 @@ pub enum GenericParamKind {
     },
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct GenericParam {
     pub id: NodeId,
     pub ident: Ident,
     pub attrs: AttrVec,
+    #[visitable(extra = BoundKind::Bound)]
     pub bounds: GenericBounds,
     pub is_placeholder: bool,
     pub kind: GenericParamKind,
@@ -470,7 +472,7 @@ impl GenericParam {
 
 /// Represents lifetime, type and const parameters attached to a declaration of
 /// a function, enum, trait, etc.
-#[derive(Clone, Encodable, Decodable, Debug, Default)]
+#[derive(Clone, Encodable, Decodable, Debug, Default, Walkable)]
 pub struct Generics {
     pub params: ThinVec<GenericParam>,
     pub where_clause: WhereClause,
@@ -478,7 +480,7 @@ pub struct Generics {
 }
 
 /// A where-clause in a definition.
-#[derive(Clone, Encodable, Decodable, Debug, Default)]
+#[derive(Clone, Encodable, Decodable, Debug, Default, Walkable)]
 pub struct WhereClause {
     /// `true` if we ate a `where` token.
     ///
@@ -496,7 +498,7 @@ impl WhereClause {
 }
 
 /// A single predicate in a where-clause.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct WherePredicate {
     pub attrs: AttrVec,
     pub kind: WherePredicateKind,
@@ -506,7 +508,7 @@ pub struct WherePredicate {
 }
 
 /// Predicate kind in where-clause.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum WherePredicateKind {
     /// A type bound (e.g., `for<'c> Foo: Send + Clone + 'c`).
     BoundPredicate(WhereBoundPredicate),
@@ -519,42 +521,45 @@ pub enum WherePredicateKind {
 /// A type bound.
 ///
 /// E.g., `for<'c> Foo: Send + Clone + 'c`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct WhereBoundPredicate {
     /// Any generics from a `for` binding.
     pub bound_generic_params: ThinVec<GenericParam>,
     /// The type being bounded.
     pub bounded_ty: P<Ty>,
     /// Trait and lifetime bounds (`Clone + Send + 'static`).
+    #[visitable(extra = BoundKind::Bound)]
     pub bounds: GenericBounds,
 }
 
 /// A lifetime predicate.
 ///
 /// E.g., `'a: 'b + 'c`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct WhereRegionPredicate {
+    #[visitable(extra = LifetimeCtxt::Bound)]
     pub lifetime: Lifetime,
+    #[visitable(extra = BoundKind::Bound)]
     pub bounds: GenericBounds,
 }
 
 /// An equality predicate (unsupported).
 ///
 /// E.g., `T = int`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct WhereEqPredicate {
     pub lhs_ty: P<Ty>,
     pub rhs_ty: P<Ty>,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Crate {
-    pub attrs: AttrVec,
-    pub items: ThinVec<P<Item>>,
-    pub spans: ModSpans,
     /// Must be equal to `CRATE_NODE_ID` after the crate root is expanded, but may hold
     /// expansion placeholders or an unassigned value (`DUMMY_NODE_ID`) before that.
     pub id: NodeId,
+    pub attrs: AttrVec,
+    pub items: ThinVec<P<Item>>,
+    pub spans: ModSpans,
     pub is_placeholder: bool,
 }
 
@@ -608,7 +613,7 @@ pub enum MetaItemInner {
 /// A block (`{ .. }`).
 ///
 /// E.g., `{ .. }` as in `fn foo() { .. }`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Block {
     /// The statements in the block.
     pub stmts: ThinVec<Stmt>,
@@ -622,7 +627,7 @@ pub struct Block {
 /// A match pattern.
 ///
 /// Patterns appear in match statements and some other contexts, such as `let` and `if let`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Pat {
     pub id: NodeId,
     pub kind: PatKind,
@@ -770,7 +775,7 @@ impl From<P<Pat>> for Pat {
 /// Patterns like the fields of `Foo { x, ref y, ref mut z }`
 /// are treated the same as `x: x, y: ref y, z: ref mut z`,
 /// except when `is_shorthand` is true.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct PatField {
     /// The identifier for the field.
     pub ident: Ident,
@@ -784,7 +789,7 @@ pub struct PatField {
 }
 
 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
-#[derive(Encodable, Decodable, HashStable_Generic)]
+#[derive(Encodable, Decodable, HashStable_Generic, Walkable)]
 pub enum ByRef {
     Yes(Mutability),
     No,
@@ -806,7 +811,7 @@ impl ByRef {
 /// `.0` is the by-reference mode (`ref`, `ref mut`, or by value),
 /// `.1` is the mutability of the binding.
 #[derive(Clone, Copy, Debug, Eq, PartialEq)]
-#[derive(Encodable, Decodable, HashStable_Generic)]
+#[derive(Encodable, Decodable, HashStable_Generic, Walkable)]
 pub struct BindingMode(pub ByRef, pub Mutability);
 
 impl BindingMode {
@@ -829,7 +834,7 @@ impl BindingMode {
     }
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum RangeEnd {
     /// `..=` or `...`
     Included(RangeSyntax),
@@ -837,7 +842,7 @@ pub enum RangeEnd {
     Excluded,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum RangeSyntax {
     /// `...`
     DotDotDot,
@@ -848,7 +853,7 @@ pub enum RangeSyntax {
 /// All the different flavors of pattern that Rust recognizes.
 //
 // Adding a new variant? Please update `test_pat` in `tests/ui/macros/stringify.rs`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum PatKind {
     /// A missing pattern, e.g. for an anonymous param in a bare fn like `fn f(u32)`.
     Missing,
@@ -930,7 +935,7 @@ pub enum PatKind {
 }
 
 /// Whether the `..` is present in a struct fields pattern.
-#[derive(Clone, Copy, Encodable, Decodable, Debug, PartialEq)]
+#[derive(Clone, Copy, Encodable, Decodable, Debug, PartialEq, Walkable)]
 pub enum PatFieldsRest {
     /// `module::StructName { field, ..}`
     Rest,
@@ -943,7 +948,7 @@ pub enum PatFieldsRest {
 /// The kind of borrow in an `AddrOf` expression,
 /// e.g., `&place` or `&raw const place`.
 #[derive(Clone, Copy, PartialEq, Eq, Debug)]
-#[derive(Encodable, Decodable, HashStable_Generic)]
+#[derive(Encodable, Decodable, HashStable_Generic, Walkable)]
 pub enum BorrowKind {
     /// A normal borrow, `&$expr` or `&mut $expr`.
     /// The resulting type is either `&'a T` or `&'a mut T`
@@ -959,7 +964,7 @@ pub enum BorrowKind {
     Pin,
 }
 
-#[derive(Clone, Copy, Debug, PartialEq, Encodable, Decodable, HashStable_Generic)]
+#[derive(Clone, Copy, Debug, PartialEq, Encodable, Decodable, HashStable_Generic, Walkable)]
 pub enum BinOpKind {
     /// The `+` operator (addition)
     Add,
@@ -1089,7 +1094,7 @@ impl From<AssignOpKind> for BinOpKind {
     }
 }
 
-#[derive(Clone, Copy, Debug, PartialEq, Encodable, Decodable, HashStable_Generic)]
+#[derive(Clone, Copy, Debug, PartialEq, Encodable, Decodable, HashStable_Generic, Walkable)]
 pub enum AssignOpKind {
     /// The `+=` operator (addition)
     AddAssign,
@@ -1141,7 +1146,7 @@ pub type AssignOp = Spanned<AssignOpKind>;
 /// Unary operator.
 ///
 /// Note that `&data` is not an operator, it's an `AddrOf` expression.
-#[derive(Clone, Copy, Debug, PartialEq, Encodable, Decodable, HashStable_Generic)]
+#[derive(Clone, Copy, Debug, PartialEq, Encodable, Decodable, HashStable_Generic, Walkable)]
 pub enum UnOp {
     /// The `*` operator for dereferencing
     Deref,
@@ -1215,7 +1220,7 @@ impl Stmt {
 }
 
 // Adding a new variant? Please update `test_stmt` in `tests/ui/macros/stringify.rs`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum StmtKind {
     /// A local (let) binding.
     Let(P<Local>),
@@ -1231,7 +1236,7 @@ pub enum StmtKind {
     MacCall(P<MacCallStmt>),
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct MacCallStmt {
     pub mac: P<MacCall>,
     pub style: MacStmtStyle,
@@ -1239,7 +1244,7 @@ pub struct MacCallStmt {
     pub tokens: Option<LazyAttrTokenStream>,
 }
 
-#[derive(Clone, Copy, PartialEq, Encodable, Decodable, Debug)]
+#[derive(Clone, Copy, PartialEq, Encodable, Decodable, Debug, Walkable)]
 pub enum MacStmtStyle {
     /// The macro statement had a trailing semicolon (e.g., `foo! { ... };`
     /// `foo!(...);`, `foo![...];`).
@@ -1253,7 +1258,7 @@ pub enum MacStmtStyle {
 }
 
 /// Local represents a `let` statement, e.g., `let <pat>:<ty> = <expr>;`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Local {
     pub id: NodeId,
     pub super_: Option<Span>,
@@ -1266,7 +1271,7 @@ pub struct Local {
     pub tokens: Option<LazyAttrTokenStream>,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum LocalKind {
     /// Local declaration.
     /// Example: `let x;`
@@ -1306,7 +1311,7 @@ impl LocalKind {
 ///     _ => { println!("no match!") },
 /// }
 /// ```
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Arm {
     pub attrs: AttrVec,
     /// Match arm pattern, e.g. `10` in `match foo { 10 => {}, _ => {} }`.
@@ -1321,7 +1326,7 @@ pub struct Arm {
 }
 
 /// A single field in a struct expression, e.g. `x: value` and `y` in `Foo { x: value, y }`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct ExprField {
     pub attrs: AttrVec,
     pub id: NodeId,
@@ -1332,13 +1337,13 @@ pub struct ExprField {
     pub is_placeholder: bool,
 }
 
-#[derive(Clone, PartialEq, Encodable, Decodable, Debug, Copy)]
+#[derive(Clone, PartialEq, Encodable, Decodable, Debug, Copy, Walkable)]
 pub enum BlockCheckMode {
     Default,
     Unsafe(UnsafeSource),
 }
 
-#[derive(Clone, PartialEq, Encodable, Decodable, Debug, Copy)]
+#[derive(Clone, PartialEq, Encodable, Decodable, Debug, Copy, Walkable)]
 pub enum UnsafeSource {
     CompilerGenerated,
     UserProvided,
@@ -1349,7 +1354,7 @@ pub enum UnsafeSource {
 /// These are usually found nested inside types (e.g., array lengths)
 /// or expressions (e.g., repeat counts), and also used to define
 /// explicit discriminant values for enum variants.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct AnonConst {
     pub id: NodeId,
     pub value: P<Expr>,
@@ -1633,7 +1638,7 @@ impl From<P<Expr>> for Expr {
     }
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Closure {
     pub binder: ClosureBinder,
     pub capture_clause: CaptureBy,
@@ -1649,7 +1654,7 @@ pub struct Closure {
 }
 
 /// Limit types of a range (inclusive or exclusive).
-#[derive(Copy, Clone, PartialEq, Encodable, Decodable, Debug)]
+#[derive(Copy, Clone, PartialEq, Encodable, Decodable, Debug, Walkable)]
 pub enum RangeLimits {
     /// Inclusive at the beginning, exclusive at the end.
     HalfOpen,
@@ -1680,7 +1685,7 @@ pub struct MethodCall {
     pub span: Span,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum StructRest {
     /// `..x`.
     Base(P<Expr>),
@@ -1690,7 +1695,7 @@ pub enum StructRest {
     None,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct StructExpr {
     pub qself: Option<P<QSelf>>,
     pub path: Path,
@@ -1880,14 +1885,14 @@ pub enum ExprKind {
 }
 
 /// Used to differentiate between `for` loops and `for await` loops.
-#[derive(Clone, Copy, Encodable, Decodable, Debug, PartialEq, Eq)]
+#[derive(Clone, Copy, Encodable, Decodable, Debug, PartialEq, Eq, Walkable)]
 pub enum ForLoopKind {
     For,
     ForAwait,
 }
 
 /// Used to differentiate between `async {}` blocks and `gen {}` blocks.
-#[derive(Clone, Encodable, Decodable, Debug, PartialEq, Eq)]
+#[derive(Clone, Encodable, Decodable, Debug, PartialEq, Eq, Walkable)]
 pub enum GenBlockKind {
     Async,
     Gen,
@@ -1912,7 +1917,7 @@ impl GenBlockKind {
 
 /// Whether we're unwrapping or wrapping an unsafe binder
 #[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
-#[derive(Encodable, Decodable, HashStable_Generic)]
+#[derive(Encodable, Decodable, HashStable_Generic, Walkable)]
 pub enum UnsafeBinderCastKind {
     // e.g. `&i32` -> `unsafe<'a> &'a i32`
     Wrap,
@@ -1934,7 +1939,7 @@ pub enum UnsafeBinderCastKind {
 ///  ^~~~~    ^
 ///  ty       position = 0
 /// ```
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct QSelf {
     pub ty: P<Ty>,
 
@@ -1946,7 +1951,7 @@ pub struct QSelf {
 }
 
 /// A capture clause used in closures and `async` blocks.
-#[derive(Clone, Copy, PartialEq, Encodable, Decodable, Debug, HashStable_Generic)]
+#[derive(Clone, Copy, PartialEq, Encodable, Decodable, Debug, HashStable_Generic, Walkable)]
 pub enum CaptureBy {
     /// `move |x| y + x`.
     Value {
@@ -1967,7 +1972,7 @@ pub enum CaptureBy {
 }
 
 /// Closure lifetime binder, `for<'a, 'b>` in `for<'a, 'b> |_: &'a (), _: &'b ()|`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum ClosureBinder {
     /// The binder is not present, all closure lifetimes are inferred.
     NotPresent,
@@ -1993,7 +1998,7 @@ pub enum ClosureBinder {
 
 /// Represents a macro invocation. The `path` indicates which macro
 /// is being invoked, and the `args` are arguments passed to it.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct MacCall {
     pub path: Path,
     pub args: P<DelimArgs>,
@@ -2006,7 +2011,7 @@ impl MacCall {
 }
 
 /// Arguments passed to an attribute macro.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum AttrArgs {
     /// No arguments: `#[attr]`.
     Empty,
@@ -2041,7 +2046,7 @@ impl AttrArgs {
 }
 
 /// Delimited arguments, as used in `#[attr()/[]/{}]` or `mac!()/[]/{}`.
-#[derive(Clone, Encodable, Decodable, Debug, HashStable_Generic)]
+#[derive(Clone, Encodable, Decodable, Debug, HashStable_Generic, Walkable)]
 pub struct DelimArgs {
     pub dspan: DelimSpan,
     pub delim: Delimiter, // Note: `Delimiter::Invisible` never occurs
@@ -2057,7 +2062,7 @@ impl DelimArgs {
 }
 
 /// Represents a macro definition.
-#[derive(Clone, Encodable, Decodable, Debug, HashStable_Generic)]
+#[derive(Clone, Encodable, Decodable, Debug, HashStable_Generic, Walkable)]
 pub struct MacroDef {
     pub body: P<DelimArgs>,
     /// `true` if macro was defined with `macro_rules`.
@@ -2065,7 +2070,7 @@ pub struct MacroDef {
 }
 
 #[derive(Clone, Encodable, Decodable, Debug, Copy, Hash, Eq, PartialEq)]
-#[derive(HashStable_Generic)]
+#[derive(HashStable_Generic, Walkable)]
 pub enum StrStyle {
     /// A regular string, like `"foo"`.
     Cooked,
@@ -2076,7 +2081,7 @@ pub enum StrStyle {
 }
 
 /// The kind of match expression
-#[derive(Clone, Copy, Encodable, Decodable, Debug, PartialEq)]
+#[derive(Clone, Copy, Encodable, Decodable, Debug, PartialEq, Walkable)]
 pub enum MatchKind {
     /// match expr { ... }
     Prefix,
@@ -2085,7 +2090,7 @@ pub enum MatchKind {
 }
 
 /// The kind of yield expression
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum YieldKind {
     /// yield expr { ... }
     Prefix(Option<P<Expr>>),
@@ -2136,7 +2141,7 @@ pub struct MetaItemLit {
 }
 
 /// Similar to `MetaItemLit`, but restricted to string literals.
-#[derive(Clone, Copy, Encodable, Decodable, Debug)]
+#[derive(Clone, Copy, Encodable, Decodable, Debug, Walkable)]
 pub struct StrLit {
     /// The original literal as written in source code.
     pub symbol: Symbol,
@@ -2265,7 +2270,7 @@ impl LitKind {
 
 // N.B., If you change this, you'll probably want to change the corresponding
 // type structure in `middle/ty.rs` as well.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct MutTy {
     pub ty: P<Ty>,
     pub mutbl: Mutability,
@@ -2389,7 +2394,7 @@ impl UintTy {
 /// * the `RetTy` in `Trait(ArgTy, ArgTy) -> RetTy`
 /// * the `C = { Ct }` in `Trait<C = { Ct }>` (feature `associated_const_equality`)
 /// * the `f(..): Bound` in `Trait<f(..): Bound>` (feature `return_type_notation`)
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct AssocItemConstraint {
     pub id: NodeId,
     pub ident: Ident,
@@ -2398,7 +2403,7 @@ pub struct AssocItemConstraint {
     pub span: Span,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum Term {
     Ty(P<Ty>),
     Const(AnonConst),
@@ -2417,7 +2422,7 @@ impl From<AnonConst> for Term {
 }
 
 /// The kind of [associated item constraint][AssocItemConstraint].
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum AssocItemConstraintKind {
     /// An equality constraint for an associated item (e.g., `AssocTy = Ty` in `Trait<AssocTy = Ty>`).
     ///
@@ -2427,10 +2432,13 @@ pub enum AssocItemConstraintKind {
     /// bindings*. Similarly with associated const equality constraints and *associated const bindings*.
     Equality { term: Term },
     /// A bound on an associated type (e.g., `AssocTy: Bound` in `Trait<AssocTy: Bound>`).
-    Bound { bounds: GenericBounds },
+    Bound {
+        #[visitable(extra = BoundKind::Bound)]
+        bounds: GenericBounds,
+    },
 }
 
-#[derive(Encodable, Decodable, Debug)]
+#[derive(Encodable, Decodable, Debug, Walkable)]
 pub struct Ty {
     pub id: NodeId,
     pub kind: TyKind,
@@ -2474,7 +2482,7 @@ impl Ty {
     }
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct FnPtrTy {
     pub safety: Safety,
     pub ext: Extern,
@@ -2485,7 +2493,7 @@ pub struct FnPtrTy {
     pub decl_span: Span,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct UnsafeBinderTy {
     pub generic_params: ThinVec<GenericParam>,
     pub inner_ty: P<Ty>,
@@ -2494,7 +2502,7 @@ pub struct UnsafeBinderTy {
 /// The various kinds of type recognized by the compiler.
 //
 // Adding a new variant? Please update `test_ty` in `tests/ui/macros/stringify.rs`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum TyKind {
     /// A variable-length slice (`[T]`).
     Slice(P<Ty>),
@@ -2503,11 +2511,11 @@ pub enum TyKind {
     /// A raw pointer (`*const T` or `*mut T`).
     Ptr(MutTy),
     /// A reference (`&'a T` or `&'a mut T`).
-    Ref(Option<Lifetime>, MutTy),
+    Ref(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
     /// A pinned reference (`&'a pin const T` or `&'a pin mut T`).
     ///
     /// Desugars into `Pin<&'a T>` or `Pin<&'a mut T>`.
-    PinnedRef(Option<Lifetime>, MutTy),
+    PinnedRef(#[visitable(extra = LifetimeCtxt::Ref)] Option<Lifetime>, MutTy),
     /// A function pointer type (e.g., `fn(usize) -> bool`).
     FnPtr(P<FnPtrTy>),
     /// An unsafe existential lifetime binder (e.g., `unsafe<'a> &'a ()`).
@@ -2523,14 +2531,14 @@ pub enum TyKind {
     Path(Option<P<QSelf>>, Path),
     /// A trait object type `Bound1 + Bound2 + Bound3`
     /// where `Bound` is a trait or a lifetime.
-    TraitObject(GenericBounds, TraitObjectSyntax),
+    TraitObject(#[visitable(extra = BoundKind::TraitObject)] GenericBounds, TraitObjectSyntax),
     /// An `impl Bound1 + Bound2 + Bound3` type
     /// where `Bound` is a trait or a lifetime.
     ///
     /// The `NodeId` exists to prevent lowering from having to
     /// generate `NodeId`s on the fly, which would complicate
     /// the generation of opaque `type Foo = impl Trait` items significantly.
-    ImplTrait(NodeId, GenericBounds),
+    ImplTrait(NodeId, #[visitable(extra = BoundKind::Impl)] GenericBounds),
     /// No-op; kept solely so that we can pretty-print faithfully.
     Paren(P<Ty>),
     /// Unused for now.
@@ -2608,7 +2616,7 @@ impl TyKind {
 }
 
 /// A pattern type pattern.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct TyPat {
     pub id: NodeId,
     pub kind: TyPatKind,
@@ -2619,7 +2627,7 @@ pub struct TyPat {
 /// All the different flavors of pattern that Rust recognizes.
 //
 // Adding a new variant? Please update `test_pat` in `tests/ui/macros/stringify.rs`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum TyPatKind {
     /// A range pattern (e.g., `1...2`, `1..2`, `1..`, `..2`, `1..=2`, `..=2`).
     Range(Option<P<AnonConst>>, Option<P<AnonConst>>, Spanned<RangeEnd>),
@@ -2631,7 +2639,7 @@ pub enum TyPatKind {
 }
 
 /// Syntax used to declare a trait object.
-#[derive(Clone, Copy, PartialEq, Encodable, Decodable, Debug, HashStable_Generic)]
+#[derive(Clone, Copy, PartialEq, Encodable, Decodable, Debug, HashStable_Generic, Walkable)]
 #[repr(u8)]
 pub enum TraitObjectSyntax {
     // SAFETY: When adding new variants make sure to update the `Tag` impl.
@@ -2658,10 +2666,10 @@ unsafe impl Tag for TraitObjectSyntax {
     }
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum PreciseCapturingArg {
     /// Lifetime parameter.
-    Lifetime(Lifetime),
+    Lifetime(#[visitable(extra = LifetimeCtxt::GenericArg)] Lifetime),
     /// Type or const parameter.
     Arg(Path, NodeId),
 }
@@ -2669,7 +2677,7 @@ pub enum PreciseCapturingArg {
 /// Inline assembly operand explicit register or register class.
 ///
 /// E.g., `"eax"` as in `asm!("mov eax, 2", out("eax") result)`.
-#[derive(Clone, Copy, Encodable, Decodable, Debug)]
+#[derive(Clone, Copy, Encodable, Decodable, Debug, Walkable)]
 pub enum InlineAsmRegOrRegClass {
     Reg(Symbol),
     RegClass(Symbol),
@@ -2738,7 +2746,7 @@ impl std::fmt::Debug for InlineAsmOptions {
     }
 }
 
-#[derive(Clone, PartialEq, Encodable, Decodable, Debug, Hash, HashStable_Generic)]
+#[derive(Clone, PartialEq, Encodable, Decodable, Debug, Hash, HashStable_Generic, Walkable)]
 pub enum InlineAsmTemplatePiece {
     String(Cow<'static, str>),
     Placeholder { operand_idx: usize, modifier: Option<char>, span: Span },
@@ -2786,7 +2794,7 @@ impl InlineAsmTemplatePiece {
 /// `DefCollector`. Instead this is deferred until AST lowering where we
 /// lower it to an `AnonConst` (for functions) or a `Path` (for statics)
 /// depending on what the path resolves to.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct InlineAsmSym {
     pub id: NodeId,
     pub qself: Option<P<QSelf>>,
@@ -2796,7 +2804,7 @@ pub struct InlineAsmSym {
 /// Inline assembly operand.
 ///
 /// E.g., `out("eax") result` as in `asm!("mov eax, 2", out("eax") result)`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum InlineAsmOperand {
     In {
         reg: InlineAsmRegOrRegClass,
@@ -2841,7 +2849,7 @@ impl InlineAsmOperand {
     }
 }
 
-#[derive(Clone, Copy, Encodable, Decodable, Debug, HashStable_Generic)]
+#[derive(Clone, Copy, Encodable, Decodable, Debug, HashStable_Generic, Walkable)]
 pub enum AsmMacro {
     /// The `asm!` macro
     Asm,
@@ -2880,13 +2888,14 @@ impl AsmMacro {
 /// Inline assembly.
 ///
 /// E.g., `asm!("NOP");`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct InlineAsm {
     pub asm_macro: AsmMacro,
     pub template: Vec<InlineAsmTemplatePiece>,
     pub template_strs: Box<[(Symbol, Option<Symbol>, Span)]>,
     pub operands: Vec<(InlineAsmOperand, Span)>,
     pub clobber_abis: Vec<(Symbol, Span)>,
+    #[visitable(ignore)]
     pub options: InlineAsmOptions,
     pub line_spans: Vec<Span>,
 }
@@ -2894,7 +2903,7 @@ pub struct InlineAsm {
 /// A parameter in a function header.
 ///
 /// E.g., `bar: usize` as in `fn foo(bar: usize)`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Param {
     pub attrs: AttrVec,
     pub ty: P<Ty>,
@@ -3022,7 +3031,7 @@ impl Param {
 ///
 /// Please note that it's different from `FnHeader` structure
 /// which contains metadata about function safety, asyncness, constness and ABI.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct FnDecl {
     pub inputs: ThinVec<Param>,
     pub output: FnRetTy,
@@ -3038,7 +3047,7 @@ impl FnDecl {
 }
 
 /// Is the trait definition an auto trait?
-#[derive(Copy, Clone, PartialEq, Encodable, Decodable, Debug, HashStable_Generic)]
+#[derive(Copy, Clone, PartialEq, Encodable, Decodable, Debug, HashStable_Generic, Walkable)]
 pub enum IsAuto {
     Yes,
     No,
@@ -3046,7 +3055,7 @@ pub enum IsAuto {
 
 /// Safety of items.
 #[derive(Copy, Clone, PartialEq, Eq, Hash, Encodable, Decodable, Debug)]
-#[derive(HashStable_Generic)]
+#[derive(HashStable_Generic, Walkable)]
 pub enum Safety {
     /// `unsafe` an item is explicitly marked as `unsafe`.
     Unsafe(Span),
@@ -3062,7 +3071,7 @@ pub enum Safety {
 /// Coroutine markers are things that cause the function to generate a coroutine, such as `async`,
 /// which makes the function return `impl Future`, or `gen`, which makes the function return `impl
 /// Iterator`.
-#[derive(Copy, Clone, Encodable, Decodable, Debug)]
+#[derive(Copy, Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum CoroutineKind {
     /// `async`, which returns an `impl Future`.
     Async { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId },
@@ -3111,7 +3120,7 @@ impl CoroutineKind {
 }
 
 #[derive(Copy, Clone, PartialEq, Eq, Hash, Encodable, Decodable, Debug)]
-#[derive(HashStable_Generic)]
+#[derive(HashStable_Generic, Walkable)]
 pub enum Const {
     Yes(Span),
     No,
@@ -3119,13 +3128,13 @@ pub enum Const {
 
 /// Item defaultness.
 /// For details see the [RFC #2532](https://github.com/rust-lang/rfcs/pull/2532).
-#[derive(Copy, Clone, PartialEq, Encodable, Decodable, Debug, HashStable_Generic)]
+#[derive(Copy, Clone, PartialEq, Encodable, Decodable, Debug, HashStable_Generic, Walkable)]
 pub enum Defaultness {
     Default(Span),
     Final,
 }
 
-#[derive(Copy, Clone, PartialEq, Encodable, Decodable, HashStable_Generic)]
+#[derive(Copy, Clone, PartialEq, Encodable, Decodable, HashStable_Generic, Walkable)]
 pub enum ImplPolarity {
     /// `impl Trait for Type`
     Positive,
@@ -3144,7 +3153,7 @@ impl fmt::Debug for ImplPolarity {
 
 /// The polarity of a trait bound.
 #[derive(Copy, Clone, PartialEq, Eq, Encodable, Decodable, Debug, Hash)]
-#[derive(HashStable_Generic)]
+#[derive(HashStable_Generic, Walkable)]
 pub enum BoundPolarity {
     /// `Type: Trait`
     Positive,
@@ -3166,7 +3175,7 @@ impl BoundPolarity {
 
 /// The constness of a trait bound.
 #[derive(Copy, Clone, PartialEq, Eq, Encodable, Decodable, Debug, Hash)]
-#[derive(HashStable_Generic)]
+#[derive(HashStable_Generic, Walkable)]
 pub enum BoundConstness {
     /// `Type: Trait`
     Never,
@@ -3188,7 +3197,7 @@ impl BoundConstness {
 
 /// The asyncness of a trait bound.
 #[derive(Copy, Clone, PartialEq, Eq, Encodable, Decodable, Debug)]
-#[derive(HashStable_Generic)]
+#[derive(HashStable_Generic, Walkable)]
 pub enum BoundAsyncness {
     /// `Type: Trait`
     Normal,
@@ -3205,7 +3214,7 @@ impl BoundAsyncness {
     }
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum FnRetTy {
     /// Returns type is not specified.
     ///
@@ -3225,14 +3234,14 @@ impl FnRetTy {
     }
 }
 
-#[derive(Clone, Copy, PartialEq, Encodable, Decodable, Debug)]
+#[derive(Clone, Copy, PartialEq, Encodable, Decodable, Debug, Walkable)]
 pub enum Inline {
     Yes,
     No,
 }
 
 /// Module item kind.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum ModKind {
     /// Module with inlined definition `mod foo { ... }`,
     /// or with definition outlined to a separate file `mod foo;` and already loaded from it.
@@ -3243,7 +3252,7 @@ pub enum ModKind {
     Unloaded,
 }
 
-#[derive(Copy, Clone, Encodable, Decodable, Debug, Default)]
+#[derive(Copy, Clone, Encodable, Decodable, Debug, Default, Walkable)]
 pub struct ModSpans {
     /// `inner_span` covers the body of the module; for a file module, its the whole file.
     /// For an inline module, its the span inside the `{ ... }`, not including the curly braces.
@@ -3254,7 +3263,7 @@ pub struct ModSpans {
 /// Foreign module declaration.
 ///
 /// E.g., `extern { .. }` or `extern "C" { .. }`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct ForeignMod {
     /// Span of the `extern` keyword.
     pub extern_span: Span,
@@ -3265,12 +3274,13 @@ pub struct ForeignMod {
     pub items: ThinVec<P<ForeignItem>>,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct EnumDef {
     pub variants: ThinVec<Variant>,
 }
+
 /// Enum variant.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Variant {
     /// Attributes of the variant.
     pub attrs: AttrVec,
@@ -3292,7 +3302,7 @@ pub struct Variant {
 }
 
 /// Part of `use` item to the right of its prefix.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum UseTreeKind {
     /// `use prefix` or `use prefix as rename`
     Simple(Option<Ident>),
@@ -3311,7 +3321,7 @@ pub enum UseTreeKind {
 
 /// A tree of paths sharing common prefixes.
 /// Used in `use` items both at top-level and inside of braces in import groups.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct UseTree {
     pub prefix: Path,
     pub kind: UseTreeKind,
@@ -3333,7 +3343,7 @@ impl UseTree {
 /// Distinguishes between `Attribute`s that decorate items and Attributes that
 /// are contained as statements within items. These two cases need to be
 /// distinguished for pretty-printing.
-#[derive(Clone, PartialEq, Encodable, Decodable, Debug, Copy, HashStable_Generic)]
+#[derive(Clone, PartialEq, Encodable, Decodable, Debug, Copy, HashStable_Generic, Walkable)]
 pub enum AttrStyle {
     Outer,
     Inner,
@@ -3343,7 +3353,7 @@ pub enum AttrStyle {
 pub type AttrVec = ThinVec<Attribute>;
 
 /// A syntax-level representation of an attribute.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Attribute {
     pub kind: AttrKind,
     pub id: AttrId,
@@ -3353,7 +3363,7 @@ pub struct Attribute {
     pub span: Span,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum AttrKind {
     /// A normal attribute.
     Normal(P<NormalAttr>),
@@ -3364,7 +3374,7 @@ pub enum AttrKind {
     DocComment(CommentKind, Symbol),
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct NormalAttr {
     pub item: AttrItem,
     // Tokens for the full attribute, e.g. `#[foo]`, `#![bar]`.
@@ -3385,7 +3395,7 @@ impl NormalAttr {
     }
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct AttrItem {
     pub unsafety: Safety,
     pub path: Path,
@@ -3411,20 +3421,20 @@ impl AttrItem {
 /// that the `ref_id` is for. The `impl_id` maps to the "self type" of this impl.
 /// If this impl is an `ItemKind::Impl`, the `impl_id` is redundant (it could be the
 /// same as the impl's `NodeId`).
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct TraitRef {
     pub path: Path,
     pub ref_id: NodeId,
 }
 
 /// Whether enclosing parentheses are present or not.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum Parens {
     Yes,
     No,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct PolyTraitRef {
     /// The `'a` in `for<'a> Foo<&'a T>`.
     pub bound_generic_params: ThinVec<GenericParam>,
@@ -3460,14 +3470,14 @@ impl PolyTraitRef {
     }
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Visibility {
     pub kind: VisibilityKind,
     pub span: Span,
     pub tokens: Option<LazyAttrTokenStream>,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum VisibilityKind {
     Public,
     Restricted { path: P<Path>, id: NodeId, shorthand: bool },
@@ -3483,7 +3493,7 @@ impl VisibilityKind {
 /// Field definition in a struct, variant or union.
 ///
 /// E.g., `bar: usize` as in `struct Foo { bar: usize }`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct FieldDef {
     pub attrs: AttrVec,
     pub id: NodeId,
@@ -3498,14 +3508,14 @@ pub struct FieldDef {
 }
 
 /// Was parsing recovery performed?
-#[derive(Copy, Clone, Debug, Encodable, Decodable, HashStable_Generic)]
+#[derive(Copy, Clone, Debug, Encodable, Decodable, HashStable_Generic, Walkable)]
 pub enum Recovered {
     No,
     Yes(ErrorGuaranteed),
 }
 
 /// Fields and constructor ids of enum variants and structs.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum VariantData {
     /// Struct variant.
     ///
@@ -3591,7 +3601,7 @@ impl Item {
 }
 
 /// `extern` qualifier on a function item or function type.
-#[derive(Clone, Copy, Encodable, Decodable, Debug)]
+#[derive(Clone, Copy, Encodable, Decodable, Debug, Walkable)]
 pub enum Extern {
     /// No explicit extern keyword was used.
     ///
@@ -3622,7 +3632,7 @@ impl Extern {
 ///
 /// All the information between the visibility and the name of the function is
 /// included in this struct (e.g., `async unsafe fn` or `const extern "C" fn`).
-#[derive(Clone, Copy, Encodable, Decodable, Debug)]
+#[derive(Clone, Copy, Encodable, Decodable, Debug, Walkable)]
 pub struct FnHeader {
     /// Whether this is `unsafe`, or has a default safety.
     pub safety: Safety,
@@ -3688,14 +3698,16 @@ impl Default for FnHeader {
     }
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Trait {
     pub constness: Const,
     pub safety: Safety,
     pub is_auto: IsAuto,
     pub ident: Ident,
     pub generics: Generics,
+    #[visitable(extra = BoundKind::SuperTraits)]
     pub bounds: GenericBounds,
+    #[visitable(extra = AssocCtxt::Trait)]
     pub items: ThinVec<P<AssocItem>>,
 }
 
@@ -3717,14 +3729,14 @@ pub struct Trait {
 /// ```
 ///
 /// If there is no where clause, then this is `false` with `DUMMY_SP`.
-#[derive(Copy, Clone, Encodable, Decodable, Debug, Default)]
+#[derive(Copy, Clone, Encodable, Decodable, Debug, Default, Walkable)]
 pub struct TyAliasWhereClause {
     pub has_where_token: bool,
     pub span: Span,
 }
 
 /// The span information for the two where clauses on a `TyAlias`.
-#[derive(Copy, Clone, Encodable, Decodable, Debug, Default)]
+#[derive(Copy, Clone, Encodable, Decodable, Debug, Default, Walkable)]
 pub struct TyAliasWhereClauses {
     /// Before the equals sign.
     pub before: TyAliasWhereClause,
@@ -3736,12 +3748,13 @@ pub struct TyAliasWhereClauses {
     pub split: usize,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct TyAlias {
     pub defaultness: Defaultness,
     pub ident: Ident,
     pub generics: Generics,
     pub where_clauses: TyAliasWhereClauses,
+    #[visitable(extra = BoundKind::Bound)]
     pub bounds: GenericBounds,
     pub ty: Option<P<Ty>>,
 }
@@ -3759,7 +3772,7 @@ pub struct Impl {
     pub items: ThinVec<P<AssocItem>>,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug, Default)]
+#[derive(Clone, Encodable, Decodable, Debug, Default, Walkable)]
 pub struct FnContract {
     pub requires: Option<P<Expr>>,
     pub ensures: Option<P<Expr>>,
@@ -3776,7 +3789,7 @@ pub struct Fn {
     pub body: Option<P<Block>>,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct Delegation {
     /// Path resolution id.
     pub id: NodeId,
@@ -3789,7 +3802,7 @@ pub struct Delegation {
     pub from_glob: bool,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct DelegationMac {
     pub qself: Option<P<QSelf>>,
     pub prefix: Path,
@@ -3798,7 +3811,7 @@ pub struct DelegationMac {
     pub body: Option<P<Block>>,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct StaticItem {
     pub ident: Ident,
     pub ty: P<Ty>,
@@ -3808,7 +3821,7 @@ pub struct StaticItem {
     pub define_opaque: Option<ThinVec<(NodeId, Path)>>,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct ConstItem {
     pub defaultness: Defaultness,
     pub ident: Ident,
diff --git a/compiler/rustc_ast/src/format.rs b/compiler/rustc_ast/src/format.rs
index 28d260419c5..c2a1de60a98 100644
--- a/compiler/rustc_ast/src/format.rs
+++ b/compiler/rustc_ast/src/format.rs
@@ -1,5 +1,5 @@
 use rustc_data_structures::fx::FxHashMap;
-use rustc_macros::{Decodable, Encodable};
+use rustc_macros::{Decodable, Encodable, Walkable};
 use rustc_span::{Ident, Span, Symbol};
 
 use crate::Expr;
@@ -41,7 +41,7 @@ use crate::token::LitKind;
 /// Basically the "AST" for a complete `format_args!()`.
 ///
 /// E.g., `format_args!("hello {name}");`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct FormatArgs {
     pub span: Span,
     pub template: Vec<FormatArgsPiece>,
@@ -63,7 +63,7 @@ pub struct FormatArgs {
 /// A piece of a format template string.
 ///
 /// E.g. "hello" or "{name}".
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum FormatArgsPiece {
     Literal(Symbol),
     Placeholder(FormatPlaceholder),
@@ -73,7 +73,7 @@ pub enum FormatArgsPiece {
 ///
 /// E.g. `1, 2, name="ferris", n=3`,
 /// but also implicit captured arguments like `x` in `format_args!("{x}")`.
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct FormatArguments {
     arguments: Vec<FormatArgument>,
     num_unnamed_args: usize,
@@ -144,13 +144,13 @@ impl FormatArguments {
     }
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub struct FormatArgument {
     pub kind: FormatArgumentKind,
     pub expr: P<Expr>,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug)]
+#[derive(Clone, Encodable, Decodable, Debug, Walkable)]
 pub enum FormatArgumentKind {
     /// `format_args(…, arg)`
     Normal,
@@ -170,24 +170,28 @@ impl FormatArgumentKind {
     }
 }
 
-#[derive(Clone, Encodable, Decodable, Debug, PartialEq, Eq)]
+#[derive(Clone, Encodable, Decodable, Debug, PartialEq, Eq, Walkable)]
 pub struct FormatPlaceholder {
     /// Index into [`FormatArgs::arguments`].
     pub argument: FormatArgPosition,
     /// The span inside the format string for the full `{…}` placeholder.
     pub span: Option<Span>,
     /// `{}`, `{:?}`, or `{:x}`, etc.
+    #[visitable(ignore)]
     pub format_trait: FormatTrait,
     /// `{}` or `{:.5}` or `{:-^20}`, etc.
+    #[visitable(ignore)]
     pub format_options: FormatOptions,
 }
 
-#[derive(Clone, Encodable, Decodable, Debug, PartialEq, Eq)]
+#[derive(Clone, Encodable, Decodable, Debug, PartialEq, Eq, Walkable)]
 pub struct FormatArgPosition {
     /// Which argument this position refers to (Ok),
     /// or would've referred to if it existed (Err).
+    #[visitable(ignore)]
     pub index: Result<usize, usize>,
     /// What kind of position this is. See [`FormatArgPositionKind`].
+    #[visitable(ignore)]
     pub kind: FormatArgPositionKind,
     /// The span of the name or number.
     pub span: Option<Span>,
diff --git a/compiler/rustc_ast/src/mut_visit.rs b/compiler/rustc_ast/src/mut_visit.rs
index 3eae19f4daa..06708e2e703 100644
--- a/compiler/rustc_ast/src/mut_visit.rs
+++ b/compiler/rustc_ast/src/mut_visit.rs
@@ -12,14 +12,14 @@ use std::panic;
 
 use rustc_data_structures::flat_map_in_place::FlatMapInPlace;
 use rustc_span::source_map::Spanned;
-use rustc_span::{Ident, Span};
+use rustc_span::{Ident, Span, Symbol};
 use smallvec::{SmallVec, smallvec};
 use thin_vec::ThinVec;
 
 use crate::ast::*;
 use crate::ptr::P;
 use crate::tokenstream::*;
-use crate::visit::{AssocCtxt, BoundKind, FnCtxt, VisitorResult, try_visit, visit_opt, walk_list};
+use crate::visit::{AssocCtxt, BoundKind, FnCtxt, LifetimeCtxt, VisitorResult, try_visit};
 
 mod sealed {
     use rustc_ast_ir::visit::VisitorResult;
@@ -36,11 +36,249 @@ mod sealed {
 
 use sealed::MutVisitorResult;
 
+pub(crate) trait MutVisitable<V: MutVisitor> {
+    type Extra: Copy;
+    fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra);
+}
+
+impl<V: MutVisitor, T: ?Sized> MutVisitable<V> for P<T>
+where
+    T: MutVisitable<V>,
+{
+    type Extra = T::Extra;
+    fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
+        (**self).visit_mut(visitor, extra)
+    }
+}
+
+impl<V: MutVisitor, T> MutVisitable<V> for Option<T>
+where
+    T: MutVisitable<V>,
+{
+    type Extra = T::Extra;
+    fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
+        if let Some(this) = self {
+            this.visit_mut(visitor, extra)
+        }
+    }
+}
+
+impl<V: MutVisitor, T> MutVisitable<V> for Spanned<T>
+where
+    T: MutVisitable<V>,
+{
+    type Extra = T::Extra;
+    fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
+        let Spanned { span, node } = self;
+        span.visit_mut(visitor, ());
+        node.visit_mut(visitor, extra);
+    }
+}
+
+impl<V: MutVisitor, T> MutVisitable<V> for [T]
+where
+    T: MutVisitable<V>,
+{
+    type Extra = T::Extra;
+    fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
+        for item in self {
+            item.visit_mut(visitor, extra);
+        }
+    }
+}
+
+impl<V: MutVisitor, T> MutVisitable<V> for Vec<T>
+where
+    T: MutVisitable<V>,
+{
+    type Extra = T::Extra;
+    fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
+        for item in self {
+            item.visit_mut(visitor, extra);
+        }
+    }
+}
+
+impl<V: MutVisitor, T> MutVisitable<V> for (T,)
+where
+    T: MutVisitable<V>,
+{
+    type Extra = T::Extra;
+    fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
+        self.0.visit_mut(visitor, extra);
+    }
+}
+
+impl<V: MutVisitor, T1, T2> MutVisitable<V> for (T1, T2)
+where
+    T1: MutVisitable<V, Extra = ()>,
+    T2: MutVisitable<V, Extra = ()>,
+{
+    type Extra = ();
+    fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
+        self.0.visit_mut(visitor, extra);
+        self.1.visit_mut(visitor, extra);
+    }
+}
+
+impl<V: MutVisitor, T1, T2, T3> MutVisitable<V> for (T1, T2, T3)
+where
+    T1: MutVisitable<V, Extra = ()>,
+    T2: MutVisitable<V, Extra = ()>,
+    T3: MutVisitable<V, Extra = ()>,
+{
+    type Extra = ();
+    fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
+        self.0.visit_mut(visitor, extra);
+        self.1.visit_mut(visitor, extra);
+        self.2.visit_mut(visitor, extra);
+    }
+}
+
+impl<V: MutVisitor, T1, T2, T3, T4> MutVisitable<V> for (T1, T2, T3, T4)
+where
+    T1: MutVisitable<V, Extra = ()>,
+    T2: MutVisitable<V, Extra = ()>,
+    T3: MutVisitable<V, Extra = ()>,
+    T4: MutVisitable<V, Extra = ()>,
+{
+    type Extra = ();
+    fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
+        self.0.visit_mut(visitor, extra);
+        self.1.visit_mut(visitor, extra);
+        self.2.visit_mut(visitor, extra);
+        self.3.visit_mut(visitor, extra);
+    }
+}
+
+pub trait MutWalkable<V: MutVisitor> {
+    fn walk_mut(&mut self, visitor: &mut V);
+}
+
+macro_rules! visit_visitable {
+    (mut $visitor:expr, $($expr:expr),* $(,)?) => {{
+        $(MutVisitable::visit_mut($expr, $visitor, ());)*
+    }};
+}
+
+macro_rules! visit_visitable_with {
+    (mut $visitor:expr, $expr:expr, $extra:expr $(,)?) => {
+        MutVisitable::visit_mut($expr, $visitor, $extra)
+    };
+}
+
+macro_rules! walk_walkable {
+    ($visitor:expr, $expr:expr, mut) => {
+        MutWalkable::walk_mut($expr, $visitor)
+    };
+}
+
+macro_rules! impl_visitable {
+    (|&mut $self:ident: $self_ty:ty,
+      $vis:ident: &mut $vis_ty:ident,
+      $extra:ident: $extra_ty:ty| $block:block) => {
+        #[allow(unused_parens, non_local_definitions)]
+        impl<$vis_ty: MutVisitor> MutVisitable<$vis_ty> for $self_ty {
+            type Extra = $extra_ty;
+            fn visit_mut(&mut $self, $vis: &mut $vis_ty, $extra: Self::Extra) -> V::Result {
+                $block
+            }
+        }
+    };
+}
+
+macro_rules! impl_walkable {
+    ($(<$K:ident: $Kb:ident>)? |&mut $self:ident: $self_ty:ty,
+      $vis:ident: &mut $vis_ty:ident| $block:block) => {
+        #[allow(unused_parens, non_local_definitions)]
+        impl<$($K: $Kb,)? $vis_ty: MutVisitor> MutWalkable<$vis_ty> for $self_ty {
+            fn walk_mut(&mut $self, $vis: &mut $vis_ty) -> V::Result {
+                $block
+            }
+        }
+    };
+}
+
+macro_rules! impl_visitable_noop {
+    (<mut> $($ty:ty,)*) => {
+        $(
+            impl_visitable!(|&mut self: $ty, _vis: &mut V, _extra: ()| {});
+        )*
+    };
+}
+
+macro_rules! impl_visitable_list {
+    (<mut> $($ty:ty,)*) => {
+        $(impl<V: MutVisitor, T> MutVisitable<V> for $ty
+        where
+            for<'a> &'a mut $ty: IntoIterator<Item = &'a mut T>,
+            T: MutVisitable<V>,
+        {
+            type Extra = <T as MutVisitable<V>>::Extra;
+
+            #[inline]
+            fn visit_mut(&mut self, visitor: &mut V, extra: Self::Extra) {
+                for i in self {
+                    i.visit_mut(visitor, extra);
+                }
+            }
+        })*
+    }
+}
+
+macro_rules! impl_visitable_direct {
+    (<mut> $($ty:ty,)*) => {
+        $(impl_visitable!(
+            |&mut self: $ty, visitor: &mut V, _extra: ()| {
+                MutWalkable::walk_mut(self, visitor)
+            }
+        );)*
+    }
+}
+
+macro_rules! impl_visitable_calling_walkable {
+    (<mut>
+        $( fn $method:ident($ty:ty $(, $extra_name:ident: $extra_ty:ty)?); )*
+    ) => {
+        $(fn $method(&mut self, node: &mut $ty $(, $extra_name:$extra_ty)?) {
+            impl_visitable!(|&mut self: $ty, visitor: &mut V, extra: ($($extra_ty)?)| {
+                let ($($extra_name)?) = extra;
+                visitor.$method(self $(, $extra_name)?);
+            });
+            walk_walkable!(self, node, mut)
+        })*
+    }
+}
+
+macro_rules! define_named_walk {
+    ((mut) $Visitor:ident
+        $( pub fn $method:ident($ty:ty); )*
+    ) => {
+        $(pub fn $method<V: $Visitor>(visitor: &mut V, node: &mut $ty) {
+            walk_walkable!(visitor, node, mut)
+        })*
+    };
+}
+
 super::common_visitor_and_walkers!((mut) MutVisitor);
 
 macro_rules! generate_flat_map_visitor_fns {
     ($($name:ident, $Ty:ty, $flat_map_fn:ident$(, $param:ident: $ParamTy:ty)*;)+) => {
         $(
+            #[allow(unused_parens)]
+            impl<V: MutVisitor> MutVisitable<V> for ThinVec<$Ty> {
+                type Extra = ($($ParamTy),*);
+
+                #[inline]
+                fn visit_mut(
+                    &mut self,
+                    visitor: &mut V,
+                    ($($param),*): Self::Extra,
+                ) -> V::Result {
+                    $name(visitor, self $(, $param)*)
+                }
+            }
+
             fn $name<V: MutVisitor>(
                 vis: &mut V,
                 values: &mut ThinVec<$Ty>,
@@ -78,15 +316,6 @@ pub fn walk_flat_map_pat_field<T: MutVisitor>(
     smallvec![fp]
 }
 
-fn visit_nested_use_tree<V: MutVisitor>(
-    vis: &mut V,
-    nested_tree: &mut UseTree,
-    nested_id: &mut NodeId,
-) {
-    vis.visit_id(nested_id);
-    vis.visit_use_tree(nested_tree);
-}
-
 macro_rules! generate_walk_flat_map_fns {
     ($($fn_name:ident($Ty:ty$(,$extra_name:ident: $ExtraTy:ty)*) => $visit_fn_name:ident;)+) => {$(
         pub fn $fn_name<V: MutVisitor>(vis: &mut V, mut value: $Ty$(,$extra_name: $ExtraTy)*) -> SmallVec<[$Ty; 1]> {
@@ -109,14 +338,6 @@ generate_walk_flat_map_fns! {
     walk_flat_map_assoc_item(P<AssocItem>, ctxt: AssocCtxt) => visit_assoc_item;
 }
 
-fn walk_ty_alias_where_clauses<T: MutVisitor>(vis: &mut T, tawcs: &mut TyAliasWhereClauses) {
-    let TyAliasWhereClauses { before, after, split: _ } = tawcs;
-    let TyAliasWhereClause { has_where_token: _, span: span_before } = before;
-    let TyAliasWhereClause { has_where_token: _, span: span_after } = after;
-    vis.visit_span(span_before);
-    vis.visit_span(span_after);
-}
-
 pub fn walk_filter_map_expr<T: MutVisitor>(vis: &mut T, mut e: P<Expr>) -> Option<P<Expr>> {
     vis.visit_expr(&mut e);
     Some(e)
diff --git a/compiler/rustc_ast/src/tokenstream.rs b/compiler/rustc_ast/src/tokenstream.rs
index c60185cdde0..e55399adfb8 100644
--- a/compiler/rustc_ast/src/tokenstream.rs
+++ b/compiler/rustc_ast/src/tokenstream.rs
@@ -20,7 +20,7 @@ use std::{cmp, fmt, iter, mem};
 
 use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
 use rustc_data_structures::sync;
-use rustc_macros::{Decodable, Encodable, HashStable_Generic};
+use rustc_macros::{Decodable, Encodable, HashStable_Generic, Walkable};
 use rustc_serialize::{Decodable, Encodable};
 use rustc_span::{DUMMY_SP, Span, SpanDecoder, SpanEncoder, Symbol, sym};
 use thin_vec::ThinVec;
@@ -977,7 +977,7 @@ impl TokenCursor {
     }
 }
 
-#[derive(Debug, Copy, Clone, PartialEq, Encodable, Decodable, HashStable_Generic)]
+#[derive(Debug, Copy, Clone, PartialEq, Encodable, Decodable, HashStable_Generic, Walkable)]
 pub struct DelimSpan {
     pub open: Span,
     pub close: Span,
diff --git a/compiler/rustc_ast/src/visit.rs b/compiler/rustc_ast/src/visit.rs
index a344f23c345..ab15cb28fa1 100644
--- a/compiler/rustc_ast/src/visit.rs
+++ b/compiler/rustc_ast/src/visit.rs
@@ -16,7 +16,7 @@
 pub use rustc_ast_ir::visit::VisitorResult;
 pub use rustc_ast_ir::{try_visit, visit_opt, walk_list, walk_visitable_list};
 use rustc_span::source_map::Spanned;
-use rustc_span::{Ident, Span};
+use rustc_span::{Ident, Span, Symbol};
 use thin_vec::ThinVec;
 
 use crate::ast::*;
@@ -75,6 +75,241 @@ pub enum LifetimeCtxt {
     GenericArg,
 }
 
+pub(crate) trait Visitable<'a, V: Visitor<'a>> {
+    type Extra: Copy;
+
+    #[must_use]
+    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result;
+}
+
+impl<'a, V: Visitor<'a>, T: ?Sized> Visitable<'a, V> for P<T>
+where
+    T: Visitable<'a, V>,
+{
+    type Extra = T::Extra;
+    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
+        (**self).visit(visitor, extra)
+    }
+}
+
+impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for Option<T>
+where
+    T: Visitable<'a, V>,
+{
+    type Extra = T::Extra;
+    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
+        if let Some(this) = self {
+            try_visit!(this.visit(visitor, extra));
+        }
+        V::Result::output()
+    }
+}
+
+impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for Spanned<T>
+where
+    T: Visitable<'a, V>,
+{
+    type Extra = T::Extra;
+    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
+        let Spanned { span: _, node } = self;
+        node.visit(visitor, extra)
+    }
+}
+
+impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for [T]
+where
+    T: Visitable<'a, V>,
+{
+    type Extra = T::Extra;
+    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
+        for item in self {
+            try_visit!(item.visit(visitor, extra));
+        }
+        V::Result::output()
+    }
+}
+
+impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for Vec<T>
+where
+    T: Visitable<'a, V>,
+{
+    type Extra = T::Extra;
+    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
+        for item in self {
+            try_visit!(item.visit(visitor, extra));
+        }
+        V::Result::output()
+    }
+}
+
+impl<'a, V: Visitor<'a>, T> Visitable<'a, V> for (T,)
+where
+    T: Visitable<'a, V>,
+{
+    type Extra = T::Extra;
+    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
+        self.0.visit(visitor, extra)
+    }
+}
+
+impl<'a, V: Visitor<'a>, T1, T2> Visitable<'a, V> for (T1, T2)
+where
+    T1: Visitable<'a, V, Extra = ()>,
+    T2: Visitable<'a, V, Extra = ()>,
+{
+    type Extra = ();
+    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
+        try_visit!(self.0.visit(visitor, extra));
+        try_visit!(self.1.visit(visitor, extra));
+        V::Result::output()
+    }
+}
+
+impl<'a, V: Visitor<'a>, T1, T2, T3> Visitable<'a, V> for (T1, T2, T3)
+where
+    T1: Visitable<'a, V, Extra = ()>,
+    T2: Visitable<'a, V, Extra = ()>,
+    T3: Visitable<'a, V, Extra = ()>,
+{
+    type Extra = ();
+    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
+        try_visit!(self.0.visit(visitor, extra));
+        try_visit!(self.1.visit(visitor, extra));
+        try_visit!(self.2.visit(visitor, extra));
+        V::Result::output()
+    }
+}
+
+impl<'a, V: Visitor<'a>, T1, T2, T3, T4> Visitable<'a, V> for (T1, T2, T3, T4)
+where
+    T1: Visitable<'a, V, Extra = ()>,
+    T2: Visitable<'a, V, Extra = ()>,
+    T3: Visitable<'a, V, Extra = ()>,
+    T4: Visitable<'a, V, Extra = ()>,
+{
+    type Extra = ();
+    fn visit(&'a self, visitor: &mut V, extra: Self::Extra) -> V::Result {
+        try_visit!(self.0.visit(visitor, extra));
+        try_visit!(self.1.visit(visitor, extra));
+        try_visit!(self.2.visit(visitor, extra));
+        try_visit!(self.3.visit(visitor, extra));
+        V::Result::output()
+    }
+}
+
+pub(crate) trait Walkable<'a, V: Visitor<'a>> {
+    #[must_use]
+    fn walk_ref(&'a self, visitor: &mut V) -> V::Result;
+}
+
+macro_rules! visit_visitable {
+    ($visitor:expr, $($expr:expr),* $(,)?) => {{
+        $(try_visit!(Visitable::visit($expr, $visitor, ()));)*
+    }};
+}
+
+macro_rules! visit_visitable_with {
+    ($visitor:expr, $expr:expr, $extra:expr $(,)?) => {
+        try_visit!(Visitable::visit($expr, $visitor, $extra))
+    };
+}
+
+macro_rules! walk_walkable {
+    ($visitor:expr, $expr:expr, ) => {
+        Walkable::walk_ref($expr, $visitor)
+    };
+}
+
+macro_rules! impl_visitable {
+    (|&$lt:lifetime $self:ident: $self_ty:ty,
+      $vis:ident: &mut $vis_ty:ident,
+      $extra:ident: $extra_ty:ty| $block:block) => {
+        #[allow(unused_parens, non_local_definitions)]
+        impl<$lt, $vis_ty: Visitor<$lt>> Visitable<$lt, $vis_ty> for $self_ty {
+            type Extra = $extra_ty;
+            fn visit(&$lt $self, $vis: &mut $vis_ty, $extra: Self::Extra) -> V::Result {
+                $block
+            }
+        }
+    };
+}
+
+macro_rules! impl_walkable {
+    ($(<$K:ident: $Kb:ident>)? |&$lt:lifetime $self:ident: $self_ty:ty,
+      $vis:ident: &mut $vis_ty:ident| $block:block) => {
+        #[allow(unused_parens, non_local_definitions)]
+        impl<$($K: $Kb,)? $lt, $vis_ty: Visitor<$lt>> Walkable<$lt, $vis_ty> for $self_ty {
+            fn walk_ref(&$lt $self, $vis: &mut $vis_ty) -> V::Result {
+                $block
+            }
+        }
+    };
+}
+
+macro_rules! impl_visitable_noop {
+    (<$lt:lifetime> $($ty:ty,)*) => {
+        $(
+            impl_visitable!(|&$lt self: $ty, _vis: &mut V, _extra: ()| {
+                V::Result::output()
+            });
+        )*
+    };
+}
+
+macro_rules! impl_visitable_list {
+    (<$lt:lifetime> $($ty:ty,)*) => {
+        $(impl<$lt, V: Visitor<$lt>, T> Visitable<$lt, V> for $ty
+        where
+            &$lt $ty: IntoIterator<Item = &$lt T>,
+            T: $lt + Visitable<$lt, V>,
+        {
+            type Extra = <T as Visitable<$lt, V>>::Extra;
+
+            #[inline]
+            fn visit(&$lt self, visitor: &mut V, extra: Self::Extra) -> V::Result {
+                for i in self {
+                    try_visit!(i.visit(visitor, extra));
+                }
+                V::Result::output()
+            }
+        })*
+    };
+}
+
+macro_rules! impl_visitable_direct {
+    (<$lt:lifetime> $($ty:ty,)*) => {
+        $(impl_visitable!(
+            |&$lt self: $ty, visitor: &mut V, _extra: ()| {
+                Walkable::walk_ref(self, visitor)
+            }
+        );)*
+    };
+}
+
+macro_rules! impl_visitable_calling_walkable {
+    (<$lt:lifetime>
+        $( fn $method:ident($ty:ty $(, $extra_name:ident: $extra_ty:ty)?); )*
+    ) => {
+        $(fn $method(&mut self, node: &$lt $ty $(, $extra_name:$extra_ty)?) -> Self::Result {
+            impl_visitable!(|&$lt self: $ty, visitor: &mut V, extra: ($($extra_ty)?)| {
+                let ($($extra_name)?) = extra;
+                visitor.$method(self $(, $extra_name)?)
+            });
+            walk_walkable!(self, node, )
+        })*
+    };
+}
+
+macro_rules! define_named_walk {
+    ($Visitor:ident<$lt:lifetime>
+        $( pub fn $method:ident($ty:ty); )*
+    ) => {
+        $(pub fn $method<$lt, V: $Visitor<$lt>>(visitor: &mut V, node: &$lt $ty) -> V::Result {
+            walk_walkable!(visitor, node,)
+        })*
+    };
+}
+
 #[macro_export]
 macro_rules! common_visitor_and_walkers {
     ($(($mut: ident))? $Visitor:ident$(<$lt:lifetime>)?) => {
@@ -120,6 +355,139 @@ macro_rules! common_visitor_and_walkers {
             }
         }
 
+        // This macro generates `impl Visitable` and `impl MutVisitable` that do nothing.
+        impl_visitable_noop!(<$($lt)? $($mut)?>
+            AttrId,
+            bool,
+            rustc_span::ByteSymbol,
+            char,
+            crate::token::CommentKind,
+            crate::token::Delimiter,
+            crate::token::Lit,
+            crate::token::LitKind,
+            crate::tokenstream::LazyAttrTokenStream,
+            crate::tokenstream::TokenStream,
+            Movability,
+            Mutability,
+            Result<(), rustc_span::ErrorGuaranteed>,
+            rustc_data_structures::fx::FxHashMap<Symbol, usize>,
+            rustc_span::ErrorGuaranteed,
+            std::borrow::Cow<'_, str>,
+            Symbol,
+            u8,
+            usize,
+        );
+        // `Span` is only a no-op for the non-mutable visitor.
+        $(impl_visitable_noop!(<$lt> Span,);)?
+
+        // This macro generates `impl Visitable` and `impl MutVisitable` that simply iterate over
+        // their contents. We do not use a generic impl for `ThinVec` because we want to allow
+        // custom visits for the `MutVisitor`.
+        impl_visitable_list!(<$($lt)? $($mut)?>
+            ThinVec<AngleBracketedArg>,
+            ThinVec<Attribute>,
+            ThinVec<(Ident, Option<Ident>)>,
+            ThinVec<(NodeId, Path)>,
+            ThinVec<PathSegment>,
+            ThinVec<PreciseCapturingArg>,
+            ThinVec<P<Pat>>,
+            ThinVec<P<Ty>>,
+            ThinVec<P<TyPat>>,
+        );
+
+        // This macro generates `impl Visitable` and `impl MutVisitable` that forward to `Walkable`
+        // or `MutWalkable`. By default, all types that do not have a custom visit method in the
+        // visitor should appear here.
+        impl_visitable_direct!(<$($lt)? $($mut)?>
+            AngleBracketedArg,
+            AngleBracketedArgs,
+            AsmMacro,
+            AssignOpKind,
+            AssocItemConstraintKind,
+            AttrArgs,
+            AttrItem,
+            AttrKind,
+            AttrStyle,
+            FnPtrTy,
+            BindingMode,
+            GenBlockKind,
+            RangeLimits,
+            UnsafeBinderCastKind,
+            BinOpKind,
+            BlockCheckMode,
+            BorrowKind,
+            BoundAsyncness,
+            BoundConstness,
+            BoundPolarity,
+            ByRef,
+            Closure,
+            Const,
+            ConstItem,
+            Defaultness,
+            Delegation,
+            DelegationMac,
+            DelimArgs,
+            DelimSpan,
+            EnumDef,
+            Extern,
+            ForLoopKind,
+            FormatArgPosition,
+            FormatArgsPiece,
+            FormatArgument,
+            FormatArgumentKind,
+            FormatArguments,
+            FormatPlaceholder,
+            GenericParamKind,
+            Impl,
+            ImplPolarity,
+            Inline,
+            InlineAsmOperand,
+            InlineAsmRegOrRegClass,
+            InlineAsmTemplatePiece,
+            IsAuto,
+            LocalKind,
+            MacCallStmt,
+            MacStmtStyle,
+            MatchKind,
+            MethodCall,
+            ModKind,
+            ModSpans,
+            MutTy,
+            NormalAttr,
+            Parens,
+            ParenthesizedArgs,
+            PatFieldsRest,
+            PatKind,
+            RangeEnd,
+            RangeSyntax,
+            Recovered,
+            Safety,
+            StaticItem,
+            StrLit,
+            StrStyle,
+            StructExpr,
+            StructRest,
+            Term,
+            Trait,
+            TraitBoundModifiers,
+            TraitObjectSyntax,
+            TyAlias,
+            TyAliasWhereClause,
+            TyAliasWhereClauses,
+            TyKind,
+            TyPatKind,
+            UnOp,
+            UnsafeBinderTy,
+            UnsafeSource,
+            UseTreeKind,
+            VisibilityKind,
+            WhereBoundPredicate,
+            WhereClause,
+            WhereEqPredicate,
+            WhereRegionPredicate,
+            YieldKind,
+        );
+
         /// Each method of this trait is a hook to be potentially
         /// overridden. Each method's default implementation recursively visits
         /// the substructure of the input via the corresponding `walk` method;
@@ -169,47 +537,82 @@ macro_rules! common_visitor_and_walkers {
             // field access version will continue working and it would be easy to
             // forget to add handling for it.
             fn visit_ident(&mut self, Ident { name: _, span }: &$($lt)? $($mut)? Ident) -> Self::Result {
+                impl_visitable!(|&$($lt)? $($mut)? self: Ident, visitor: &mut V, _extra: ()| {
+                    visitor.visit_ident(self)
+                });
                 visit_span(self, span)
             }
 
-            fn visit_foreign_mod(&mut self, nm: &$($lt)? $($mut)? ForeignMod) -> Self::Result {
-                walk_foreign_mod(self, nm)
-            }
-
-            fn visit_foreign_item(&mut self, i: &$($lt)? $($mut)? ForeignItem) -> Self::Result {
-                walk_item(self, i)
-            }
-
-            fn visit_item(&mut self, i: &$($lt)? $($mut)? Item) -> Self::Result {
-                walk_item(self, i)
-            }
-
-            fn visit_local(&mut self, l: &$($lt)? $($mut)? Local) -> Self::Result {
-                walk_local(self, l)
-            }
-
-            fn visit_block(&mut self, b: &$($lt)? $($mut)? Block) -> Self::Result {
-                walk_block(self, b)
-            }
-
-            fn visit_param(&mut self, param: &$($lt)? $($mut)? Param) -> Self::Result {
-                walk_param(self, param)
-            }
-
-            fn visit_arm(&mut self, a: &$($lt)? $($mut)? Arm) -> Self::Result {
-                walk_arm(self, a)
-            }
-
-            fn visit_pat(&mut self, p: &$($lt)? $($mut)? Pat) -> Self::Result {
-                walk_pat(self, p)
-            }
-
-            fn visit_anon_const(&mut self, c: &$($lt)? $($mut)? AnonConst) -> Self::Result {
-                walk_anon_const(self, c)
-            }
-
-            fn visit_expr(&mut self, ex: &$($lt)? $($mut)? Expr) -> Self::Result {
-                walk_expr(self, ex)
+            // This macro defines a custom visit method for each listed type.
+            // It implements `impl Visitable` and `impl MutVisitable` to call those methods on the
+            // visitor.
+            impl_visitable_calling_walkable!(<$($lt)? $($mut)?>
+                fn visit_anon_const(AnonConst);
+                fn visit_arm(Arm);
+                //fn visit_assoc_item(AssocItem, _ctxt: AssocCtxt);
+                fn visit_assoc_item_constraint(AssocItemConstraint);
+                fn visit_attribute(Attribute);
+                fn visit_block(Block);
+                //fn visit_nested_use_tree((UseTree, NodeId));
+                fn visit_capture_by(CaptureBy);
+                fn visit_closure_binder(ClosureBinder);
+                fn visit_contract(FnContract);
+                fn visit_coroutine_kind(CoroutineKind);
+                fn visit_crate(Crate);
+                fn visit_expr(Expr);
+                fn visit_expr_field(ExprField);
+                fn visit_field_def(FieldDef);
+                fn visit_fn_decl(FnDecl);
+                fn visit_fn_header(FnHeader);
+                fn visit_fn_ret_ty(FnRetTy);
+                //fn visit_foreign_item(ForeignItem);
+                fn visit_foreign_mod(ForeignMod);
+                fn visit_format_args(FormatArgs);
+                fn visit_generic_arg(GenericArg);
+                fn visit_generic_args(GenericArgs);
+                fn visit_generic_param(GenericParam);
+                fn visit_generics(Generics);
+                fn visit_inline_asm(InlineAsm);
+                fn visit_inline_asm_sym(InlineAsmSym);
+                //fn visit_item(Item);
+                fn visit_label(Label);
+                fn visit_lifetime(Lifetime, _ctxt: LifetimeCtxt);
+                fn visit_local(Local);
+                fn visit_mac_call(MacCall);
+                fn visit_macro_def(MacroDef);
+                fn visit_param_bound(GenericBound, _ctxt: BoundKind);
+                fn visit_param(Param);
+                fn visit_pat_field(PatField);
+                fn visit_path(Path);
+                fn visit_path_segment(PathSegment);
+                fn visit_pat(Pat);
+                fn visit_poly_trait_ref(PolyTraitRef);
+                fn visit_precise_capturing_arg(PreciseCapturingArg);
+                fn visit_qself(QSelf);
+                fn visit_trait_ref(TraitRef);
+                fn visit_ty_pat(TyPat);
+                fn visit_ty(Ty);
+                fn visit_use_tree(UseTree);
+                fn visit_variant_data(VariantData);
+                fn visit_variant(Variant);
+                fn visit_vis(Visibility);
+                fn visit_where_predicate_kind(WherePredicateKind);
+                fn visit_where_predicate(WherePredicate);
+            );
+
+            // We want `Visitor` to take the `NodeId` by value.
+            fn visit_id(&mut self, _id: $(&$mut)? NodeId) -> Self::Result {
+                $(impl_visitable!(
+                    |&$lt self: NodeId, visitor: &mut V, _extra: ()| {
+                        visitor.visit_id(*self)
+                    }
+                );)?
+                $(impl_visitable!(
+                    |&$mut self: NodeId, visitor: &mut V, _extra: ()| {
+                        visitor.visit_id(self)
+                    }
+                );)?
+                Self::Result::output()
             }
 
             /// This method is a hack to workaround unstable of `stmt_expr_attributes`.
@@ -218,34 +621,25 @@ macro_rules! common_visitor_and_walkers {
                 self.visit_expr(ex)
             }
 
-            fn visit_ty(&mut self, t: &$($lt)? $($mut)? Ty) -> Self::Result {
-                walk_ty(self, t)
-            }
-
-            fn visit_ty_pat(&mut self, t: &$($lt)? $($mut)? TyPat) -> Self::Result {
-                walk_ty_pat(self, t)
-            }
-
-            fn visit_generic_param(&mut self, param: &$($lt)? $($mut)? GenericParam) -> Self::Result {
-                walk_generic_param(self, param)
-            }
-
-            fn visit_generics(&mut self, g: &$($lt)? $($mut)? Generics) -> Self::Result {
-                walk_generics(self, g)
-            }
-            fn visit_closure_binder(&mut self, b: &$($lt)? $($mut)? ClosureBinder) -> Self::Result {
-                walk_closure_binder(self, b)
-            }
-            fn visit_contract(&mut self, c: &$($lt)? $($mut)? FnContract) -> Self::Result {
-                walk_contract(self, c)
+            fn visit_item(&mut self, item: &$($lt)? $($mut)? Item) -> Self::Result {
+                impl_visitable!(|&$($lt)? $($mut)? self: Item, vis: &mut V, _extra: ()| {
+                    vis.visit_item(self)
+                });
+                walk_item(self, item)
             }
 
-            fn visit_where_predicate(&mut self, p: &$($lt)? $($mut)? WherePredicate) -> Self::Result {
-                walk_where_predicate(self, p)
+            fn visit_foreign_item(&mut self, item: &$($lt)? $($mut)? ForeignItem) -> Self::Result {
+                impl_visitable!(|&$($lt)? $($mut)? self: ForeignItem, vis: &mut V, _extra: ()| {
+                    vis.visit_foreign_item(self)
+                });
+                walk_item(self, item)
             }
 
-            fn visit_where_predicate_kind(&mut self, k: &$($lt)? $($mut)? WherePredicateKind) -> Self::Result {
-                walk_where_predicate_kind(self, k)
+            fn visit_assoc_item(&mut self, item: &$($lt)? $($mut)? AssocItem, ctxt: AssocCtxt) -> Self::Result {
+                impl_visitable!(|&$($lt)? $($mut)? self: AssocItem, vis: &mut V, ctxt: AssocCtxt| {
+                    vis.visit_assoc_item(self, ctxt)
+                });
+                walk_assoc_item(self, item, ctxt)
             }
 
             // for `MutVisitor`: `Span` and `NodeId` are mutated at the caller site.
@@ -258,141 +652,6 @@ macro_rules! common_visitor_and_walkers {
                 walk_fn(self, fk)
             }
 
-            fn visit_assoc_item(&mut self, i: &$($lt)? $($mut)? AssocItem, ctxt: AssocCtxt) -> Self::Result {
-                walk_assoc_item(self, i, ctxt)
-            }
-
-            fn visit_trait_ref(&mut self, t: &$($lt)? $($mut)? TraitRef) -> Self::Result {
-                walk_trait_ref(self, t)
-            }
-
-            fn visit_param_bound(&mut self, bounds: &$($lt)? $($mut)? GenericBound, _ctxt: BoundKind) -> Self::Result {
-                walk_param_bound(self, bounds)
-            }
-
-            fn visit_precise_capturing_arg(&mut self, arg: &$($lt)? $($mut)? PreciseCapturingArg) -> Self::Result {
-                walk_precise_capturing_arg(self, arg)
-            }
-
-            fn visit_poly_trait_ref(&mut self, t: &$($lt)? $($mut)? PolyTraitRef) -> Self::Result {
-                walk_poly_trait_ref(self, t)
-            }
-
-            fn visit_variant_data(&mut self, s: &$($lt)? $($mut)? VariantData) -> Self::Result {
-                walk_variant_data(self, s)
-            }
-
-            fn visit_field_def(&mut self, s: &$($lt)? $($mut)? FieldDef) -> Self::Result {
-                walk_field_def(self, s)
-            }
-
-            fn visit_variant(&mut self, v: &$($lt)? $($mut)? Variant) -> Self::Result {
-                walk_variant(self, v)
-            }
-
-            fn visit_label(&mut self, label: &$($lt)? $($mut)? Label) -> Self::Result {
-                walk_label(self, label)
-            }
-
-            fn visit_lifetime(&mut self, lifetime: &$($lt)? $($mut)? Lifetime, $(${ignore($lt)} _: LifetimeCtxt )?) -> Self::Result {
-                walk_lifetime(self, lifetime)
-            }
-
-            fn visit_mac_call(&mut self, mac: &$($lt)? $($mut)? MacCall) -> Self::Result {
-                walk_mac(self, mac)
-            }
-
-            fn visit_id(&mut self, _id: $(&$mut)? NodeId) -> Self::Result {
-                Self::Result::output()
-            }
-
-            fn visit_macro_def(&mut self, macro_def: &$($lt)? $($mut)? MacroDef) -> Self::Result {
-                walk_macro_def(self, macro_def)
-            }
-
-            fn visit_path(&mut self, path: &$($lt)? $($mut)? Path) -> Self::Result {
-                walk_path(self, path)
-            }
-
-            fn visit_use_tree(&mut self, use_tree: &$($lt)? $($mut)? UseTree) -> Self::Result {
-                walk_use_tree(self, use_tree)
-            }
-
-            fn visit_path_segment(&mut self, path_segment: &$($lt)? $($mut)? PathSegment) -> Self::Result {
-                walk_path_segment(self, path_segment)
-            }
-
-            fn visit_generic_args(&mut self, generic_args: &$($lt)? $($mut)? GenericArgs) -> Self::Result {
-                walk_generic_args(self, generic_args)
-            }
-
-            fn visit_generic_arg(&mut self, generic_arg: &$($lt)? $($mut)? GenericArg) -> Self::Result {
-                walk_generic_arg(self, generic_arg)
-            }
-
-            fn visit_assoc_item_constraint(
-                &mut self,
-                constraint: &$($lt)? $($mut)? AssocItemConstraint,
-            ) -> Self::Result {
-                walk_assoc_item_constraint(self, constraint)
-            }
-
-            fn visit_attribute(&mut self, attr: &$($lt)? $($mut)? Attribute) -> Self::Result {
-                walk_attribute(self, attr)
-            }
-
-            fn visit_vis(&mut self, vis: &$($lt)? $($mut)? Visibility) -> Self::Result {
-                walk_vis(self, vis)
-            }
-
-            fn visit_fn_ret_ty(&mut self, ret_ty: &$($lt)? $($mut)? FnRetTy) -> Self::Result {
-                walk_fn_ret_ty(self, ret_ty)
-            }
-
-            fn visit_fn_header(&mut self, header: &$($lt)? $($mut)? FnHeader) -> Self::Result {
-                walk_fn_header(self, header)
-            }
-
-            fn visit_expr_field(&mut self, f: &$($lt)? $($mut)? ExprField) -> Self::Result {
-                walk_expr_field(self, f)
-            }
-
-            fn visit_pat_field(&mut self, fp: &$($lt)? $($mut)? PatField) -> Self::Result {
-                walk_pat_field(self, fp)
-            }
-
-            fn visit_crate(&mut self, krate: &$($lt)? $($mut)? Crate) -> Self::Result {
-                walk_crate(self, krate)
-            }
-
-            fn visit_inline_asm(&mut self, asm: &$($lt)? $($mut)? InlineAsm) -> Self::Result {
-                walk_inline_asm(self, asm)
-            }
-
-            fn visit_format_args(&mut self, fmt: &$($lt)? $($mut)? FormatArgs) -> Self::Result {
-                walk_format_args(self, fmt)
-            }
-
-            fn visit_inline_asm_sym(&mut self, sym: &$($lt)? $($mut)? InlineAsmSym) -> Self::Result {
-                walk_inline_asm_sym(self, sym)
-            }
-
-            fn visit_capture_by(&mut self, capture_by: &$($lt)? $($mut)? CaptureBy) -> Self::Result {
-                walk_capture_by(self, capture_by)
-            }
-
-            fn visit_coroutine_kind(&mut self, coroutine_kind: &$($lt)? $($mut)? CoroutineKind) -> Self::Result {
-                walk_coroutine_kind(self, coroutine_kind)
-            }
-
-            fn visit_fn_decl(&mut self, fn_decl: &$($lt)? $($mut)? FnDecl) -> Self::Result {
-                walk_fn_decl(self, fn_decl)
-            }
-
-            fn visit_qself(&mut self, qs: &$($lt)? $($mut)? Option<P<QSelf>>) -> Self::Result {
-                walk_qself(self, qs)
-            }
-
             // (non-mut) `Visitor`-only methods
             $(
                 fn visit_stmt(&mut self, s: &$lt Stmt) -> Self::Result {
@@ -407,6 +666,16 @@ macro_rules! common_visitor_and_walkers {
 
             // `MutVisitor`-only methods
             $(
+                // Span visiting is no longer used, but we keep it for now,
+                // in case it's needed for something like #127241.
+                #[inline]
+                fn visit_span(&mut self, _sp: &$mut Span) {
+                    impl_visitable!(|&mut self: Span, visitor: &mut V, _extra: ()| {
+                        visitor.visit_span(self)
+                    });
+                    // Do nothing.
+                }
+
                 fn flat_map_foreign_item(&mut self, ni: P<ForeignItem>) -> SmallVec<[P<ForeignItem>; 1]> {
                     walk_flat_map_foreign_item(self, ni)
                 }
@@ -462,12 +731,6 @@ macro_rules! common_visitor_and_walkers {
                     walk_flat_map_where_predicate(self, where_predicate)
                 }
 
-                // Span visiting is no longer used, but we keep it for now,
-                // in case it's needed for something like #127241.
-                fn visit_span(&mut self, _sp: &$mut Span) {
-                    // Do nothing.
-                }
-
                 fn flat_map_pat_field(&mut self, fp: PatField) -> SmallVec<[PatField; 1]> {
                     walk_flat_map_pat_field(self, fp)
                 }
@@ -492,148 +755,45 @@ macro_rules! common_visitor_and_walkers {
             #[inline]
         )?
         fn visit_span<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, span: &$($lt)? $($mut)? Span) -> V::Result {
-            $(
-                ${ignore($mut)}
-                vis.visit_span(span);
-            )?
-            V::Result::output()
-        }
-
-        /// helper since `Visitor` wants `NodeId` but `MutVisitor` wants `&mut NodeId`
-        $(${ignore($lt)}
-            #[expect(rustc::pass_by_value)]
-        )?
-        #[inline]
-        fn visit_id<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, id: &$($lt)? $($mut)? NodeId) -> V::Result {
-            // deref `&NodeId` into `NodeId` only for `Visitor`
-            vis.visit_id( $(${ignore($lt)} * )? id)
-        }
-
-        // this is only used by the MutVisitor. We include this symmetry here to make writing other functions easier
-        fn visit_safety<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, safety: &$($lt)? $($mut)? Safety) -> V::Result {
-            match safety {
-                Safety::Unsafe(span) => visit_span(vis, span),
-                Safety::Safe(span) => visit_span(vis, span),
-                Safety::Default => { V::Result::output() }
-            }
-        }
-
-        fn visit_constness<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, constness: &$($lt)? $($mut)? Const) -> V::Result {
-            match constness {
-                Const::Yes(span) => visit_span(vis, span),
-                Const::No => {
-                    V::Result::output()
-                }
-            }
-        }
-
-        fn visit_defaultness<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, defaultness: &$($lt)? $($mut)? Defaultness) -> V::Result {
-            match defaultness {
-                Defaultness::Default(span) => visit_span(vis, span),
-                Defaultness::Final => {
-                    V::Result::output()
-                }
-            }
-        }
-
-        fn visit_polarity<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            polarity: &$($lt)? $($mut)? ImplPolarity,
-        ) -> V::Result {
-            match polarity {
-                ImplPolarity::Positive => { V::Result::output() }
-                ImplPolarity::Negative(span) => visit_span(vis, span),
-            }
-        }
-
-        $(${ignore($lt)}
-            #[inline]
-        )?
-        fn visit_modifiers<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            m: &$($lt)? $($mut)? TraitBoundModifiers
-        ) -> V::Result {
-            let TraitBoundModifiers { constness, asyncness, polarity } = m;
-            match constness {
-                BoundConstness::Never => {}
-                BoundConstness::Always(span) | BoundConstness::Maybe(span) => try_visit!(visit_span(vis, span)),
-            }
-            match asyncness {
-                BoundAsyncness::Normal => {}
-                BoundAsyncness::Async(span) => try_visit!(visit_span(vis, span)),
-            }
-            match polarity {
-                BoundPolarity::Positive => {}
-                BoundPolarity::Negative(span) | BoundPolarity::Maybe(span) => try_visit!(visit_span(vis, span)),
-            }
+            $(${ignore($mut)} vis.visit_span(span))?;
             V::Result::output()
         }
 
-        $(${ignore($lt)}
-            #[inline]
-        )?
-        fn walk_capture_by<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            capture_by: &$($lt)? $($mut)? CaptureBy
-        ) -> V::Result {
-            match capture_by {
-                CaptureBy::Ref => { V::Result::output() }
-                CaptureBy::Value { move_kw } => {
-                    visit_span(vis, move_kw)
-                }
-                CaptureBy::Use { use_kw } => {
-                    visit_span(vis, use_kw)
-                }
+        $(impl_visitable!(|&$lt self: ThinVec<(UseTree, NodeId)>, vis: &mut V, _extra: ()| {
+            for (nested_tree, nested_id) in self {
+                try_visit!(vis.visit_nested_use_tree(nested_tree, *nested_id));
             }
-        }
-
-        fn visit_bounds<$($lt,)? V: $Visitor$(<$lt>)?>(visitor: &mut V, bounds: &$($lt)? $($mut)? GenericBounds, ctxt: BoundKind) -> V::Result {
-            walk_list!(visitor, visit_param_bound, bounds, ctxt);
             V::Result::output()
-        }
+        });)?
+        $(impl_visitable_list!(<$mut> ThinVec<(UseTree, NodeId)>,);)?
 
-        pub fn walk_label<$($lt,)? V: $Visitor$(<$lt>)?>(visitor: &mut V, Label { ident }: &$($lt)? $($mut)? Label) -> V::Result {
-            visitor.visit_ident(ident)
-        }
-
-        pub fn walk_fn_header<$($lt,)? V: $Visitor$(<$lt>)?>(visitor: &mut V, header: &$($lt)? $($mut)? FnHeader) -> V::Result {
-            let FnHeader { safety, coroutine_kind, constness, ext: _ } = header;
-            try_visit!(visit_constness(visitor, constness));
-            visit_opt!(visitor, visit_coroutine_kind, coroutine_kind);
-            visit_safety(visitor, safety)
-        }
-
-        pub fn walk_lifetime<$($lt,)? V: $Visitor$(<$lt>)?>(visitor: &mut V, Lifetime { id, ident }: &$($lt)? $($mut)? Lifetime) -> V::Result {
-            try_visit!(visit_id(visitor, id));
-            visitor.visit_ident(ident)
-        }
-
-        fn walk_item_ctxt<$($lt,)? V: $Visitor$(<$lt>)?, K: WalkItemKind>(
+        fn walk_item_inner<$($lt,)? K: WalkItemKind, V: $Visitor$(<$lt>)?>(
             visitor: &mut V,
             item: &$($mut)? $($lt)? Item<K>,
             ctxt: K::Ctxt,
         ) -> V::Result {
             let Item { attrs, id, kind, vis, span, tokens: _ } = item;
-            try_visit!(visit_id(visitor, id));
-            walk_list!(visitor, visit_attribute, attrs);
-            try_visit!(visitor.visit_vis(vis));
+            visit_visitable!($($mut)? visitor, id, attrs, vis);
             try_visit!(kind.walk(*span, *id, vis, ctxt, visitor));
-            visit_span(visitor, span)
+            visit_visitable!($($mut)? visitor, span);
+            V::Result::output()
         }
 
-        pub fn walk_item<$($lt,)? V: $Visitor$(<$lt>)?, K: WalkItemKind<Ctxt = ()>>(
+        // Do not implement `Walkable`/`MutWalkable` for *Item to avoid confusion.
+        pub fn walk_item<$($lt,)? K: WalkItemKind<Ctxt = ()>, V: $Visitor$(<$lt>)?>(
             visitor: &mut V,
             item: &$($mut)? $($lt)? Item<K>,
         ) -> V::Result {
-            walk_item_ctxt(visitor, item, ())
+            walk_item_inner(visitor, item, ())
         }
 
-        pub fn walk_assoc_item<$($lt,)? V: $Visitor$(<$lt>)?>(
+        // Do not implement `Walkable`/`MutWalkable` for *Item to avoid confusion.
+        pub fn walk_assoc_item<$($lt,)? K: WalkItemKind<Ctxt = AssocCtxt>, V: $Visitor$(<$lt>)?>(
             visitor: &mut V,
-            item: &$($mut)? $($lt)? AssocItem,
+            item: &$($mut)? $($lt)? Item<K>,
             ctxt: AssocCtxt,
         ) -> V::Result {
-            walk_item_ctxt(visitor, item, ctxt)
+            walk_item_inner(visitor, item, ctxt)
         }
 
         impl WalkItemKind for ItemKind {
@@ -647,180 +807,52 @@ macro_rules! common_visitor_and_walkers {
                 vis: &mut V,
             ) -> V::Result {
                 match self {
-                    ItemKind::ExternCrate(_orig_name, ident) => vis.visit_ident(ident),
-                    ItemKind::Use(use_tree) => vis.visit_use_tree(use_tree),
-                    ItemKind::Static(box StaticItem {
-                        ident,
-                        ty,
-                        safety: _,
-                        mutability: _,
-                        expr,
-                        define_opaque,
-                    }) => {
-                        try_visit!(vis.visit_ident(ident));
-                        try_visit!(vis.visit_ty(ty));
-                        visit_opt!(vis, visit_expr, expr);
-                        walk_define_opaques(vis, define_opaque)
-                    }
-                    ItemKind::Const(item) => {
-                        walk_const_item(vis, item)
-                    }
                     ItemKind::Fn(func) => {
                         let kind = FnKind::Fn(FnCtxt::Free, visibility, &$($mut)? *func);
-                        vis.visit_fn(kind, span, id)
-                    }
-                    ItemKind::Mod(safety, ident, mod_kind) => {
-                        try_visit!(visit_safety(vis, safety));
-                        try_visit!(vis.visit_ident(ident));
-                        match mod_kind {
-                            ModKind::Loaded(
-                                items,
-                                _inline,
-                                ModSpans { inner_span, inject_use_span },
-                                _,
-                            ) => {
-                                try_visit!(visit_items(vis, items));
-                                try_visit!(visit_span(vis, inner_span));
-                                try_visit!(visit_span(vis, inject_use_span));
-                            }
-                            ModKind::Unloaded => {}
-                        }
-                        V::Result::output()
-                    }
-                    ItemKind::ForeignMod(nm) => vis.visit_foreign_mod(nm),
-                    ItemKind::GlobalAsm(asm) => vis.visit_inline_asm(asm),
-                    ItemKind::TyAlias(box TyAlias {
-                        defaultness,
-                        ident,
-                        generics,
-                        $(${ignore($lt)} #[expect(unused)])?
-                        where_clauses,
-                        bounds,
-                        ty,
-                    }) => {
-                        try_visit!(visit_defaultness(vis, defaultness));
-                        try_visit!(vis.visit_ident(ident));
-                        try_visit!(vis.visit_generics(generics));
-                        try_visit!(visit_bounds(vis, bounds, BoundKind::Bound));
-                        visit_opt!(vis, visit_ty, ty);
-                        $(${ignore($mut)}
-                            walk_ty_alias_where_clauses(vis, where_clauses);
-                        )?
-                        V::Result::output()
-                    }
-                    ItemKind::Enum(ident, generics, enum_definition) => {
-                        try_visit!(vis.visit_ident(ident));
-                        try_visit!(vis.visit_generics(generics));
-                        visit_variants(vis, &$($mut)? enum_definition.variants)
+                        try_visit!(vis.visit_fn(kind, span, id));
                     }
+                    ItemKind::ExternCrate(orig_name, ident) =>
+                        visit_visitable!($($mut)? vis, orig_name, ident),
+                    ItemKind::Use(use_tree) =>
+                        visit_visitable!($($mut)? vis, use_tree),
+                    ItemKind::Static(item) =>
+                        visit_visitable!($($mut)? vis, item),
+                    ItemKind::Const(item) =>
+                        visit_visitable!($($mut)? vis, item),
+                    ItemKind::Mod(safety, ident, mod_kind) =>
+                        visit_visitable!($($mut)? vis, safety, ident, mod_kind),
+                    ItemKind::ForeignMod(nm) =>
+                        visit_visitable!($($mut)? vis, nm),
+                    ItemKind::GlobalAsm(asm) =>
+                        visit_visitable!($($mut)? vis, asm),
+                    ItemKind::TyAlias(ty_alias) =>
+                        visit_visitable!($($mut)? vis, ty_alias),
+                    ItemKind::Enum(ident, generics, enum_definition) =>
+                        visit_visitable!($($mut)? vis, ident, generics, enum_definition),
                     ItemKind::Struct(ident, generics, variant_data)
-                    | ItemKind::Union(ident, generics, variant_data) => {
-                        try_visit!(vis.visit_ident(ident));
-                        try_visit!(vis.visit_generics(generics));
-                        vis.visit_variant_data(variant_data)
-                    }
-                    ItemKind::Impl(box Impl {
-                        defaultness,
-                        safety,
-                        generics,
-                        constness,
-                        polarity,
-                        of_trait,
-                        self_ty,
-                        items,
-                    }) => {
-                        try_visit!(visit_defaultness(vis, defaultness));
-                        try_visit!(visit_safety(vis, safety));
-                        try_visit!(vis.visit_generics(generics));
-                        try_visit!(visit_constness(vis, constness));
-                        try_visit!(visit_polarity(vis, polarity));
-                        visit_opt!(vis, visit_trait_ref, of_trait);
-                        try_visit!(vis.visit_ty(self_ty));
-                        visit_assoc_items(vis, items, AssocCtxt::Impl { of_trait: of_trait.is_some() })
-                    }
-                    ItemKind::Trait(box Trait { constness, safety, is_auto: _, ident, generics, bounds, items }) => {
-                        try_visit!(visit_constness(vis, constness));
-                        try_visit!(visit_safety(vis, safety));
-                        try_visit!(vis.visit_ident(ident));
-                        try_visit!(vis.visit_generics(generics));
-                        try_visit!(visit_bounds(vis, bounds, BoundKind::Bound));
-                        visit_assoc_items(vis, items, AssocCtxt::Trait)
-                    }
+                    | ItemKind::Union(ident, generics, variant_data) =>
+                        visit_visitable!($($mut)? vis, ident, generics, variant_data),
+                    ItemKind::Impl(impl_) =>
+                        visit_visitable!($($mut)? vis, impl_),
+                    ItemKind::Trait(trait_) =>
+                        visit_visitable!($($mut)? vis, trait_),
                     ItemKind::TraitAlias(ident, generics, bounds) => {
-                        try_visit!(vis.visit_ident(ident));
-                        try_visit!(vis.visit_generics(generics));
-                        visit_bounds(vis, bounds, BoundKind::Bound)
-                    }
-                    ItemKind::MacCall(m) => vis.visit_mac_call(m),
-                    ItemKind::MacroDef(ident, def) => {
-                        try_visit!(vis.visit_ident(ident));
-                        vis.visit_macro_def(def)
-                    }
-                    ItemKind::Delegation(box Delegation {
-                        id,
-                        qself,
-                        path,
-                        ident,
-                        rename,
-                        body,
-                        from_glob: _,
-                    }) => {
-                        try_visit!(visit_id(vis, id));
-                        try_visit!(vis.visit_qself(qself));
-                        try_visit!(vis.visit_path(path));
-                        try_visit!(vis.visit_ident(ident));
-                        visit_opt!(vis, visit_ident, rename);
-                        visit_opt!(vis, visit_block, body);
-                        V::Result::output()
-                    }
-                    ItemKind::DelegationMac(box DelegationMac { qself, prefix, suffixes, body }) => {
-                        try_visit!(vis.visit_qself(qself));
-                        try_visit!(vis.visit_path(prefix));
-                        if let Some(suffixes) = suffixes {
-                            for (ident, rename) in suffixes {
-                                try_visit!(vis.visit_ident(ident));
-                                visit_opt!(vis, visit_ident, rename);
-                            }
-                        }
-                        visit_opt!(vis, visit_block, body);
-                        V::Result::output()
+                        visit_visitable!($($mut)? vis, ident, generics);
+                        visit_visitable_with!($($mut)? vis, bounds, BoundKind::Bound)
                     }
+                    ItemKind::MacCall(m) =>
+                        visit_visitable!($($mut)? vis, m),
+                    ItemKind::MacroDef(ident, def) =>
+                        visit_visitable!($($mut)? vis, ident, def),
+                    ItemKind::Delegation(delegation) =>
+                        visit_visitable!($($mut)? vis, delegation),
+                    ItemKind::DelegationMac(dm) =>
+                        visit_visitable!($($mut)? vis, dm),
                 }
+                V::Result::output()
             }
         }
 
-        fn walk_const_item<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            item: &$($lt)? $($mut)? ConstItem,
-        ) -> V::Result {
-            let ConstItem { defaultness, ident, generics, ty, expr, define_opaque } = item;
-            try_visit!(visit_defaultness(vis, defaultness));
-            try_visit!(vis.visit_ident(ident));
-            try_visit!(vis.visit_generics(generics));
-            try_visit!(vis.visit_ty(ty));
-            visit_opt!(vis, visit_expr, expr);
-            walk_define_opaques(vis, define_opaque)
-        }
-
-        fn walk_foreign_mod<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, foreign_mod: &$($lt)? $($mut)? ForeignMod) -> V::Result {
-            let ForeignMod { extern_span: _, safety, abi: _, items } = foreign_mod;
-            try_visit!(visit_safety(vis, safety));
-            visit_foreign_items(vis, items)
-        }
-
-        fn walk_define_opaques<$($lt,)? V: $Visitor$(<$lt>)?>(
-            visitor: &mut V,
-            define_opaque: &$($lt)? $($mut)? Option<ThinVec<(NodeId, Path)>>,
-        ) -> V::Result {
-            if let Some(define_opaque) = define_opaque {
-                for (id, path) in define_opaque {
-                    try_visit!(visit_id(visitor, id));
-                    try_visit!(visitor.visit_path(path));
-                }
-            }
-            V::Result::output()
-        }
-
         impl WalkItemKind for AssocItemKind {
             type Ctxt = AssocCtxt;
             fn walk<$($lt,)? V: $Visitor$(<$lt>)?>(
@@ -832,64 +864,22 @@ macro_rules! common_visitor_and_walkers {
                 vis: &mut V,
             ) -> V::Result {
                 match self {
-                    AssocItemKind::Const(item) => {
-                        walk_const_item(vis, item)
-                    }
+                    AssocItemKind::Const(item) =>
+                        visit_visitable!($($mut)? vis, item),
                     AssocItemKind::Fn(func) => {
-                        vis.visit_fn(FnKind::Fn(FnCtxt::Assoc(ctxt), visibility, &$($mut)? *func), span, id)
-                    }
-                    AssocItemKind::Type(box TyAlias {
-                        generics,
-                        ident,
-                        bounds,
-                        ty,
-                        defaultness,
-                        $(${ignore($lt)} #[expect(unused)])?
-                        where_clauses,
-                    }) => {
-                        try_visit!(visit_defaultness(vis, defaultness));
-                        try_visit!(vis.visit_ident(ident));
-                        try_visit!(vis.visit_generics(generics));
-                        try_visit!(visit_bounds(vis, bounds, BoundKind::Bound));
-                        visit_opt!(vis, visit_ty, ty);
-                        $(${ignore($mut)}
-                            walk_ty_alias_where_clauses(vis, where_clauses);
-                        )?
-                        V::Result::output()
-                    }
-                    AssocItemKind::MacCall(mac) => {
-                        vis.visit_mac_call(mac)
-                    }
-                    AssocItemKind::Delegation(box Delegation {
-                        id,
-                        qself,
-                        path,
-                        ident,
-                        rename,
-                        body,
-                        from_glob: _,
-                    }) => {
-                        try_visit!(visit_id(vis, id));
-                        try_visit!(vis.visit_qself(qself));
-                        try_visit!(vis.visit_path(path));
-                        try_visit!(vis.visit_ident(ident));
-                        visit_opt!(vis, visit_ident, rename);
-                        visit_opt!(vis, visit_block, body);
-                        V::Result::output()
-                    }
-                    AssocItemKind::DelegationMac(box DelegationMac { qself, prefix, suffixes, body }) => {
-                        try_visit!(vis.visit_qself(qself));
-                        try_visit!(vis.visit_path(prefix));
-                        if let Some(suffixes) = suffixes {
-                            for (ident, rename) in suffixes {
-                                try_visit!(vis.visit_ident(ident));
-                                visit_opt!(vis, visit_ident, rename);
-                            }
-                        }
-                        visit_opt!(vis, visit_block, body);
-                        V::Result::output()
+                        let kind = FnKind::Fn(FnCtxt::Assoc(ctxt), visibility, &$($mut)? *func);
+                        try_visit!(vis.visit_fn(kind, span, id))
                     }
+                    AssocItemKind::Type(alias) =>
+                        visit_visitable!($($mut)? vis, alias),
+                    AssocItemKind::MacCall(mac) =>
+                        visit_visitable!($($mut)? vis, mac),
+                    AssocItemKind::Delegation(delegation) =>
+                        visit_visitable!($($mut)? vis, delegation),
+                    AssocItemKind::DelegationMac(dm) =>
+                        visit_visitable!($($mut)? vis, dm),
                 }
+                V::Result::output()
             }
         }
 
@@ -904,545 +894,18 @@ macro_rules! common_visitor_and_walkers {
                 vis: &mut V,
             ) -> V::Result {
                 match self {
-                    ForeignItemKind::Static(box StaticItem {
-                        ident,
-                        ty,
-                        mutability: _,
-                        expr,
-                        safety: _,
-                        define_opaque,
-                    }) => {
-                        try_visit!(vis.visit_ident(ident));
-                        try_visit!(vis.visit_ty(ty));
-                        visit_opt!(vis, visit_expr, expr);
-                        walk_define_opaques(vis, define_opaque)
-                    }
+                    ForeignItemKind::Static(item) =>
+                        visit_visitable!($($mut)? vis, item),
                     ForeignItemKind::Fn(func) => {
-                        vis.visit_fn(FnKind::Fn(FnCtxt::Foreign, visibility, &$($mut)?*func), span, id)
-                    }
-                    ForeignItemKind::TyAlias(box TyAlias {
-                        defaultness,
-                        ident,
-                        generics,
-                        bounds,
-                        ty,
-                        $(${ignore($lt)} #[expect(unused)])?
-                        where_clauses,
-                    }) => {
-                        try_visit!(visit_defaultness(vis, defaultness));
-                        try_visit!(vis.visit_ident(ident));
-                        try_visit!(vis.visit_generics(generics));
-                        try_visit!(visit_bounds(vis, bounds, BoundKind::Bound));
-                        visit_opt!(vis, visit_ty, ty);
-                        $(${ignore($mut)}
-                            walk_ty_alias_where_clauses(vis, where_clauses);
-                        )?
-                        V::Result::output()
-                    }
-                    ForeignItemKind::MacCall(mac) => {
-                        vis.visit_mac_call(mac)
-                    }
-                }
-            }
-        }
-
-        fn walk_coroutine_kind<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            coroutine_kind: &$($lt)? $($mut)? CoroutineKind,
-        ) -> V::Result {
-            let (CoroutineKind::Async { span, closure_id, return_impl_trait_id }
-                | CoroutineKind::Gen { span, closure_id, return_impl_trait_id }
-                | CoroutineKind::AsyncGen { span, closure_id, return_impl_trait_id })
-                = coroutine_kind;
-            try_visit!(visit_id(vis, closure_id));
-            try_visit!(visit_id(vis, return_impl_trait_id));
-            visit_span(vis, span)
-        }
-
-        pub fn walk_pat<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            pattern: &$($lt)? $($mut)? Pat
-        ) -> V::Result {
-            let Pat { id, kind, span, tokens: _ } = pattern;
-            try_visit!(visit_id(vis, id));
-            match kind {
-                PatKind::Err(_guar) => {}
-                PatKind::Missing | PatKind::Wild | PatKind::Rest | PatKind::Never => {}
-                PatKind::Ident(_bmode, ident, optional_subpattern) => {
-                    try_visit!(vis.visit_ident(ident));
-                    visit_opt!(vis, visit_pat, optional_subpattern);
-                }
-                PatKind::Expr(expression) => try_visit!(vis.visit_expr(expression)),
-                PatKind::TupleStruct(opt_qself, path, elems) => {
-                    try_visit!(vis.visit_qself(opt_qself));
-                    try_visit!(vis.visit_path(path));
-                    walk_list!(vis, visit_pat, elems);
-                }
-                PatKind::Path(opt_qself, path) => {
-                    try_visit!(vis.visit_qself(opt_qself));
-                    try_visit!(vis.visit_path(path))
-                }
-                PatKind::Struct(opt_qself, path, fields, _rest) => {
-                    try_visit!(vis.visit_qself(opt_qself));
-                    try_visit!(vis.visit_path(path));
-                    try_visit!(visit_pat_fields(vis, fields));
-                }
-                PatKind::Box(subpattern) | PatKind::Deref(subpattern) | PatKind::Paren(subpattern) => {
-                    try_visit!(vis.visit_pat(subpattern));
-                }
-                PatKind::Ref(subpattern, _ /*mutbl*/) => {
-                    try_visit!(vis.visit_pat(subpattern));
-                }
-                PatKind::Range(lower_bound, upper_bound, _end) => {
-                    visit_opt!(vis, visit_expr, lower_bound);
-                    visit_opt!(vis, visit_expr, upper_bound);
-                    try_visit!(visit_span(vis, span));
-                }
-                PatKind::Guard(subpattern, guard_condition) => {
-                    try_visit!(vis.visit_pat(subpattern));
-                    try_visit!(vis.visit_expr(guard_condition));
-                }
-                PatKind::Tuple(elems) | PatKind::Slice(elems) | PatKind::Or(elems) => {
-                    walk_list!(vis, visit_pat, elems);
-                }
-                PatKind::MacCall(mac) => try_visit!(vis.visit_mac_call(mac)),
-            }
-            visit_span(vis, span)
-        }
-
-        pub fn walk_anon_const<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            constant: &$($lt)? $($mut)? AnonConst,
-        ) -> V::Result {
-            let AnonConst { id, value } = constant;
-            try_visit!(visit_id(vis, id));
-            vis.visit_expr(value)
-        }
-
-        pub fn walk_path_segment<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            segment: &$($lt)? $($mut)? PathSegment,
-        ) -> V::Result {
-            let PathSegment { ident, id, args } = segment;
-            try_visit!(visit_id(vis, id));
-            try_visit!(vis.visit_ident(ident));
-            visit_opt!(vis, visit_generic_args, args);
-            V::Result::output()
-        }
-
-        pub fn walk_block<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            block: &$($lt)? $($mut)? Block
-        ) -> V::Result {
-            let Block { stmts, id, rules: _, span, tokens: _ } = block;
-            try_visit!(visit_id(vis, id));
-            try_visit!(visit_stmts(vis, stmts));
-            visit_span(vis, span)
-        }
-
-
-        pub fn walk_ty<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V, ty: &$($lt)? $($mut)? Ty
-        ) -> V::Result {
-            let Ty { id, kind, span, tokens: _ } = ty;
-            try_visit!(visit_id(vis, id));
-            match kind {
-                TyKind::Err(_guar) => {}
-                TyKind::Infer | TyKind::ImplicitSelf | TyKind::Dummy | TyKind::Never | TyKind::CVarArgs => {}
-                TyKind::Slice(ty) | TyKind::Paren(ty) => try_visit!(vis.visit_ty(ty)),
-                TyKind::Ptr(MutTy { ty, mutbl: _ }) => try_visit!(vis.visit_ty(ty)),
-                TyKind::Ref(opt_lifetime, MutTy { ty, mutbl: _ })
-                | TyKind::PinnedRef(opt_lifetime, MutTy { ty, mutbl: _ }) => {
-                    // FIXME(fee1-dead) asymmetry
-                    visit_opt!(vis, visit_lifetime, opt_lifetime$(${ignore($lt)}, LifetimeCtxt::Ref)?);
-                    try_visit!(vis.visit_ty(ty));
-                }
-                TyKind::Tup(tuple_element_types) => {
-                    walk_list!(vis, visit_ty, tuple_element_types);
-                }
-                TyKind::FnPtr(function_declaration) => {
-                    let FnPtrTy { safety, ext: _, generic_params, decl, decl_span } =
-                        &$($mut)? **function_declaration;
-                    try_visit!(visit_safety(vis, safety));
-                    try_visit!(visit_generic_params(vis, generic_params));
-                    try_visit!(vis.visit_fn_decl(decl));
-                    try_visit!(visit_span(vis, decl_span));
-                }
-                TyKind::UnsafeBinder(binder) => {
-                    try_visit!(visit_generic_params(vis, &$($mut)? binder.generic_params));
-                    try_visit!(vis.visit_ty(&$($mut)? binder.inner_ty));
-                }
-                TyKind::Path(maybe_qself, path) => {
-                    try_visit!(vis.visit_qself(maybe_qself));
-                    try_visit!(vis.visit_path(path));
-                }
-                TyKind::Pat(ty, pat) => {
-                    try_visit!(vis.visit_ty(ty));
-                    try_visit!(vis.visit_ty_pat(pat));
-                }
-                TyKind::Array(ty, length) => {
-                    try_visit!(vis.visit_ty(ty));
-                    try_visit!(vis.visit_anon_const(length));
-                }
-                TyKind::TraitObject(bounds, _syntax) => {
-                    walk_list!(vis, visit_param_bound, bounds, BoundKind::TraitObject);
-                }
-                TyKind::ImplTrait(id, bounds) => {
-                    try_visit!(visit_id(vis, id));
-                    walk_list!(vis, visit_param_bound, bounds, BoundKind::Impl);
-                }
-                TyKind::Typeof(expression) => try_visit!(vis.visit_anon_const(expression)),
-
-                TyKind::MacCall(mac) => try_visit!(vis.visit_mac_call(mac)),
-            }
-            visit_span(vis, span)
-        }
-
-        pub fn walk_crate<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            krate: &$($lt)? $($mut)? Crate,
-        ) -> V::Result {
-            let Crate { attrs, items, spans, id, is_placeholder: _ } = krate;
-            try_visit!(visit_id(vis, id));
-            walk_list!(vis, visit_attribute, attrs);
-            try_visit!(visit_items(vis, items));
-            let ModSpans { inner_span, inject_use_span } = spans;
-            try_visit!(visit_span(vis, inner_span));
-            visit_span(vis, inject_use_span)
-        }
-
-        pub fn walk_local<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            local: &$($lt)? $($mut)? Local,
-        ) -> V::Result {
-            let Local { id, super_, pat, ty, kind, span, colon_sp, attrs, tokens: _ } = local;
-            if let Some(sp) = super_ {
-                try_visit!(visit_span(vis, sp));
-            }
-            try_visit!(visit_id(vis, id));
-            walk_list!(vis, visit_attribute, attrs);
-            try_visit!(vis.visit_pat(pat));
-            visit_opt!(vis, visit_ty, ty);
-            match kind {
-                LocalKind::Decl => {}
-                LocalKind::Init(init) => {
-                    try_visit!(vis.visit_expr(init))
-                }
-                LocalKind::InitElse(init, els) => {
-                    try_visit!(vis.visit_expr(init));
-                    try_visit!(vis.visit_block(els));
-                }
-            }
-            if let Some(sp) = colon_sp {
-                try_visit!(visit_span(vis, sp));
-            }
-            visit_span(vis, span)
-        }
-
-        pub fn walk_poly_trait_ref<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            p: &$($lt)? $($mut)? PolyTraitRef,
-        ) -> V::Result {
-            let PolyTraitRef { bound_generic_params, modifiers, trait_ref, span, parens: _ } = p;
-            try_visit!(visit_modifiers(vis, modifiers));
-            try_visit!(visit_generic_params(vis, bound_generic_params));
-            try_visit!(vis.visit_trait_ref(trait_ref));
-            visit_span(vis, span)
-        }
-
-        pub fn walk_trait_ref<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            TraitRef { path, ref_id }: &$($lt)? $($mut)? TraitRef,
-        ) -> V::Result {
-            try_visit!(vis.visit_path(path));
-            visit_id(vis, ref_id)
-        }
-
-        pub fn walk_variant<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            variant: &$($lt)? $($mut)? Variant,
-        ) -> V::Result {
-            let Variant { attrs, id, span, vis: visibility, ident, data, disr_expr, is_placeholder: _ } = variant;
-            try_visit!(visit_id(vis, id));
-            walk_list!(vis, visit_attribute, attrs);
-            try_visit!(vis.visit_vis(visibility));
-            try_visit!(vis.visit_ident(ident));
-            try_visit!(vis.visit_variant_data(data));
-            visit_opt!(vis, visit_anon_const, disr_expr);
-            visit_span(vis, span)
-        }
-
-        pub fn walk_expr_field<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            f: &$($lt)? $($mut)? ExprField,
-        ) -> V::Result {
-            let ExprField { attrs, id, span, ident, expr, is_shorthand: _, is_placeholder: _ } = f;
-            try_visit!(visit_id(vis, id));
-            walk_list!(vis, visit_attribute, attrs);
-            try_visit!(vis.visit_ident(ident));
-            try_visit!(vis.visit_expr(expr));
-            visit_span(vis, span)
-        }
-
-        pub fn walk_pat_field<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            fp: &$($lt)? $($mut)? PatField,
-        ) -> V::Result {
-            let PatField { ident, pat, is_shorthand: _, attrs, id, span, is_placeholder: _ } = fp;
-            try_visit!(visit_id(vis, id));
-            walk_list!(vis, visit_attribute, attrs);
-            try_visit!(vis.visit_ident(ident));
-            try_visit!(vis.visit_pat(pat));
-            visit_span(vis, span)
-        }
-
-        pub fn walk_ty_pat<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            tp: &$($lt)? $($mut)? TyPat,
-        ) -> V::Result {
-            let TyPat { id, kind, span, tokens: _ } = tp;
-            try_visit!(visit_id(vis, id));
-            match kind {
-                TyPatKind::Range(start, end, Spanned { span, node: _include_end }) => {
-                    visit_opt!(vis, visit_anon_const, start);
-                    visit_opt!(vis, visit_anon_const, end);
-                    try_visit!(visit_span(vis, span));
-                }
-                TyPatKind::Or(variants) => walk_list!(vis, visit_ty_pat, variants),
-                TyPatKind::Err(_) => {}
-            }
-            visit_span(vis, span)
-        }
-
-        fn walk_qself<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            qself: &$($lt)? $($mut)? Option<P<QSelf>>,
-        ) -> V::Result {
-            if let Some(qself) = qself {
-                let QSelf { ty, path_span, position: _ } = &$($mut)? **qself;
-                try_visit!(vis.visit_ty(ty));
-                try_visit!(visit_span(vis, path_span));
-            }
-            V::Result::output()
-        }
-
-        pub fn walk_path<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            path: &$($lt)? $($mut)? Path,
-        ) -> V::Result {
-            let Path { span, segments, tokens: _ } = path;
-            walk_list!(vis, visit_path_segment, segments);
-            visit_span(vis, span)
-        }
-
-        pub fn walk_use_tree<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            use_tree: &$($lt)? $($mut)? UseTree,
-        ) -> V::Result {
-            let UseTree { prefix, kind, span } = use_tree;
-            try_visit!(vis.visit_path(prefix));
-            match kind {
-                UseTreeKind::Simple(rename) => {
-                    // The extra IDs are handled during AST lowering.
-                    visit_opt!(vis, visit_ident, rename);
-                }
-                UseTreeKind::Glob => {}
-                UseTreeKind::Nested { items, span } => {
-                    for (nested_tree, nested_id) in items {
-                        try_visit!(visit_nested_use_tree(vis, nested_tree, nested_id));
+                        let kind = FnKind::Fn(FnCtxt::Foreign, visibility, &$($mut)?*func);
+                        try_visit!(vis.visit_fn(kind, span, id))
                     }
-                    try_visit!(visit_span(vis, span));
-                }
-            }
-            visit_span(vis, span)
-        }
-
-        pub fn walk_generic_args<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            generic_args: &$($lt)? $($mut)? GenericArgs
-        ) -> V::Result {
-            match generic_args {
-                GenericArgs::AngleBracketed(AngleBracketedArgs { span, args }) => {
-                    for arg in args {
-                        match arg {
-                            AngleBracketedArg::Arg(a) => try_visit!(vis.visit_generic_arg(a)),
-                            AngleBracketedArg::Constraint(c) => {
-                                try_visit!(vis.visit_assoc_item_constraint(c))
-                            }
-                        }
-                    }
-                    visit_span(vis, span)
-                }
-                GenericArgs::Parenthesized(data) => {
-                    let ParenthesizedArgs { span, inputs, inputs_span, output } = data;
-                    walk_list!(vis, visit_ty, inputs);
-                    try_visit!(vis.visit_fn_ret_ty(output));
-                    try_visit!(visit_span(vis, span));
-                    visit_span(vis, inputs_span)
-                }
-                GenericArgs::ParenthesizedElided(span) => visit_span(vis, span)
-            }
-        }
-
-        pub fn walk_generic_arg<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            generic_arg: &$($lt)? $($mut)? GenericArg,
-        ) -> V::Result {
-            match generic_arg {
-                GenericArg::Lifetime(lt) => vis.visit_lifetime(lt, $(${ignore($lt)} LifetimeCtxt::GenericArg)? ),
-                GenericArg::Type(ty) => vis.visit_ty(ty),
-                GenericArg::Const(ct) => vis.visit_anon_const(ct),
-            }
-        }
-
-        pub fn walk_assoc_item_constraint<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            constraint: &$($lt)? $($mut)? AssocItemConstraint,
-        ) -> V::Result {
-            let AssocItemConstraint { id, ident, gen_args, kind, span } = constraint;
-            try_visit!(visit_id(vis, id));
-            try_visit!(vis.visit_ident(ident));
-            visit_opt!(vis, visit_generic_args, gen_args);
-            match kind {
-                AssocItemConstraintKind::Equality { term } => match term {
-                    Term::Ty(ty) => try_visit!(vis.visit_ty(ty)),
-                    Term::Const(c) => try_visit!(vis.visit_anon_const(c)),
-                },
-                AssocItemConstraintKind::Bound { bounds } => {
-                    try_visit!(visit_bounds(vis, bounds, BoundKind::Bound));
-                }
-            }
-            visit_span(vis, span)
-        }
-
-        pub fn walk_param_bound<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, bound: &$($lt)? $($mut)? GenericBound) -> V::Result {
-            match bound {
-                GenericBound::Trait(trait_ref) => vis.visit_poly_trait_ref(trait_ref),
-                GenericBound::Outlives(lifetime) => vis.visit_lifetime(lifetime, $(${ignore($lt)} LifetimeCtxt::Bound)?),
-                GenericBound::Use(args, span) => {
-                    walk_list!(vis, visit_precise_capturing_arg, args);
-                    visit_span(vis, span)
-                }
-            }
-        }
-
-        pub fn walk_precise_capturing_arg<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            arg: &$($lt)? $($mut)? PreciseCapturingArg,
-        ) -> V::Result {
-            match arg {
-                PreciseCapturingArg::Lifetime(lt) => vis.visit_lifetime(lt, $(${ignore($lt)} LifetimeCtxt::GenericArg)?),
-                PreciseCapturingArg::Arg(path, id) => {
-                    try_visit!(visit_id(vis, id));
-                    vis.visit_path(path)
-                }
-            }
-        }
-
-        pub fn walk_generic_param<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            param: &$($lt)? $($mut)? GenericParam,
-        ) -> V::Result {
-            let GenericParam { id, ident, attrs, bounds, is_placeholder: _, kind, colon_span } =
-                param;
-            try_visit!(visit_id(vis, id));
-            walk_list!(vis, visit_attribute, attrs);
-            try_visit!(vis.visit_ident(ident));
-            walk_list!(vis, visit_param_bound, bounds, BoundKind::Bound);
-            match kind {
-                GenericParamKind::Lifetime => (),
-                GenericParamKind::Type { default } => visit_opt!(vis, visit_ty, default),
-                GenericParamKind::Const { ty, default, span } => {
-                    try_visit!(vis.visit_ty(ty));
-                    visit_opt!(vis, visit_anon_const, default);
-                    try_visit!(visit_span(vis, span));
-                }
-            }
-            if let Some(sp) = colon_span {
-                try_visit!(visit_span(vis, sp))
-            }
-            V::Result::output()
-        }
-
-        pub fn walk_generics<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, generics: &$($lt)? $($mut)? Generics) -> V::Result {
-            let Generics { params, where_clause, span } = generics;
-            let WhereClause { has_where_token: _, predicates, span: where_clause_span } = where_clause;
-            try_visit!(visit_generic_params(vis, params));
-            try_visit!(visit_where_predicates(vis, predicates));
-            try_visit!(visit_span(vis, span));
-            visit_span(vis, where_clause_span)
-        }
-
-        pub fn walk_contract<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, c: &$($lt)? $($mut)? FnContract) -> V::Result {
-            let FnContract { requires, ensures } = c;
-            visit_opt!(vis, visit_expr, requires);
-            visit_opt!(vis, visit_expr, ensures);
-            V::Result::output()
-        }
-
-        pub fn walk_where_predicate<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            predicate: &$($lt)? $($mut)? WherePredicate,
-        ) -> V::Result {
-            let WherePredicate { attrs, kind, id, span, is_placeholder: _ } = predicate;
-            try_visit!(visit_id(vis, id));
-            walk_list!(vis, visit_attribute, attrs);
-            try_visit!(visit_span(vis, span));
-            vis.visit_where_predicate_kind(kind)
-        }
-
-        pub fn walk_closure_binder<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            binder: &$($lt)? $($mut)? ClosureBinder,
-        ) -> V::Result {
-            match binder {
-                ClosureBinder::NotPresent => {}
-                ClosureBinder::For { generic_params, span } => {
-                    try_visit!(visit_generic_params(vis, generic_params));
-                    try_visit!(visit_span(vis, span));
-                }
-            }
-            V::Result::output()
-        }
-
-        pub fn walk_where_predicate_kind<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            kind: &$($lt)? $($mut)? WherePredicateKind,
-        ) -> V::Result {
-            match kind {
-                WherePredicateKind::BoundPredicate(WhereBoundPredicate {
-                    bounded_ty,
-                    bounds,
-                    bound_generic_params,
-                }) => {
-                    try_visit!(visit_generic_params(vis, bound_generic_params));
-                    try_visit!(vis.visit_ty(bounded_ty));
-                    walk_list!(vis, visit_param_bound, bounds, BoundKind::Bound);
-                }
-                WherePredicateKind::RegionPredicate(WhereRegionPredicate { lifetime, bounds }) => {
-                    try_visit!(vis.visit_lifetime(lifetime, $(${ignore($lt)} LifetimeCtxt::Bound )?));
-                    walk_list!(vis, visit_param_bound, bounds, BoundKind::Bound);
-                }
-                WherePredicateKind::EqPredicate(WhereEqPredicate { lhs_ty, rhs_ty }) => {
-                    try_visit!(vis.visit_ty(lhs_ty));
-                    try_visit!(vis.visit_ty(rhs_ty));
+                    ForeignItemKind::TyAlias(alias) =>
+                        visit_visitable!($($mut)? vis, alias),
+                    ForeignItemKind::MacCall(mac) =>
+                        visit_visitable!($($mut)? vis, mac),
                 }
-            }
-            V::Result::output()
-        }
-
-        pub fn walk_fn_decl<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            FnDecl { inputs, output }: &$($lt)? $($mut)? FnDecl,
-        ) -> V::Result {
-            try_visit!(visit_params(vis, inputs));
-            vis.visit_fn_ret_ty(output)
-        }
-
-        pub fn walk_fn_ret_ty<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, ret_ty: &$($lt)? $($mut)? FnRetTy) -> V::Result {
-            match ret_ty {
-                FnRetTy::Default(span) => visit_span(vis, span),
-                FnRetTy::Ty(output_ty) => vis.visit_ty(output_ty),
+                V::Result::output()
             }
         }
 
@@ -1450,455 +913,200 @@ macro_rules! common_visitor_and_walkers {
             match kind {
                 FnKind::Fn(
                     _ctxt,
+                    // Visibility is visited as a part of the item.
                     _vis,
-                    Fn {
-                        defaultness,
-                        ident,
-                        sig: FnSig { header, decl, span },
-                        generics,
-                        contract,
-                        body,
-                        define_opaque,
-                    },
+                    Fn { defaultness, ident, sig, generics, contract, body, define_opaque },
                 ) => {
-                    // Visibility is visited as a part of the item.
-                    try_visit!(visit_defaultness(vis, defaultness));
-                    try_visit!(vis.visit_ident(ident));
-                    try_visit!(vis.visit_fn_header(header));
-                    try_visit!(vis.visit_generics(generics));
-                    try_visit!(vis.visit_fn_decl(decl));
-                    visit_opt!(vis, visit_contract, contract);
-                    visit_opt!(vis, visit_block, body);
-                    try_visit!(visit_span(vis, span));
-                    walk_define_opaques(vis, define_opaque)
-                }
-                FnKind::Closure(binder, coroutine_kind, decl, body) => {
-                    try_visit!(vis.visit_closure_binder(binder));
-                    visit_opt!(vis, visit_coroutine_kind, coroutine_kind);
-                    try_visit!(vis.visit_fn_decl(decl));
-                    vis.visit_expr(body)
-                }
-            }
-        }
-
-        pub fn walk_variant_data<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, data: &$($lt)? $($mut)? VariantData) -> V::Result {
-            match data {
-                VariantData::Struct { fields, recovered: _ } => {
-                    visit_field_defs(vis, fields)
-                }
-                VariantData::Tuple(fields, id) => {
-                    try_visit!(visit_id(vis, id));
-                    visit_field_defs(vis, fields)
-                }
-                VariantData::Unit(id) => visit_id(vis, id),
-            }
-        }
-
-        pub fn walk_field_def<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, field: &$($lt)? $($mut)? FieldDef) -> V::Result {
-            let FieldDef { attrs, id, span, vis: visibility, ident, ty, is_placeholder: _, safety: _, default } =
-                field;
-            try_visit!(visit_id(vis, id));
-            walk_list!(vis, visit_attribute, attrs);
-            try_visit!(vis.visit_vis(visibility));
-            visit_opt!(vis, visit_ident, ident);
-            try_visit!(vis.visit_ty(ty));
-            visit_opt!(vis, visit_anon_const, default);
-            visit_span(vis, span)
-        }
-
-        fn visit_delim_args<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, args: &$($lt)? $($mut)? DelimArgs) -> V::Result {
-            let DelimArgs { dspan, delim: _, tokens: _ } = args;
-            let DelimSpan { open, close } = dspan;
-            try_visit!(visit_span(vis, open));
-            visit_span(vis, close)
-        }
-
-        pub fn walk_mac<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, mac: &$($lt)? $($mut)? MacCall) -> V::Result {
-            let MacCall { path, args } = mac;
-            try_visit!(vis.visit_path(path));
-            visit_delim_args(vis, args)
-        }
-
-        fn walk_macro_def<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, macro_def: &$($lt)? $($mut)? MacroDef) -> V::Result {
-            let MacroDef { body, macro_rules: _ } = macro_def;
-            visit_delim_args(vis, body)
-        }
-
-        pub fn walk_inline_asm<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, asm: &$($lt)? $($mut)? InlineAsm) -> V::Result {
-            let InlineAsm {
-                asm_macro: _,
-                template,
-                template_strs,
-                operands,
-                clobber_abis,
-                options: _,
-                line_spans,
-            } = asm;
-            for piece in template {
-                match piece {
-                    InlineAsmTemplatePiece::String(_str) => {}
-                    InlineAsmTemplatePiece::Placeholder { operand_idx: _, modifier: _, span } => {
-                        try_visit!(visit_span(vis, span));
-                    }
+                    let FnSig { header, decl, span } = sig;
+                    visit_visitable!($($mut)? vis,
+                        defaultness, ident, header, generics, decl,
+                        contract, body, span, define_opaque
+                    )
                 }
-            }
-            for (_s1, _s2, span) in template_strs {
-                try_visit!(visit_span(vis, span));
-            }
-            for (op, span) in operands {
-                match op {
-                    InlineAsmOperand::In { expr, reg: _ }
-                    | InlineAsmOperand::Out { expr: Some(expr), reg: _, late: _ }
-                    | InlineAsmOperand::InOut { expr, reg: _, late: _ } => {
-                        try_visit!(vis.visit_expr(expr))
-                    }
-                    InlineAsmOperand::Out { expr: None, reg: _, late: _ } => {}
-                    InlineAsmOperand::SplitInOut { in_expr, out_expr, reg: _, late: _ } => {
-                        try_visit!(vis.visit_expr(in_expr));
-                        visit_opt!(vis, visit_expr, out_expr);
-                    }
-                    InlineAsmOperand::Const { anon_const } => {
-                        try_visit!(vis.visit_anon_const(anon_const))
-                    }
-                    InlineAsmOperand::Sym { sym } => try_visit!(vis.visit_inline_asm_sym(sym)),
-                    InlineAsmOperand::Label { block } => try_visit!(vis.visit_block(block)),
-                }
-                try_visit!(visit_span(vis, span));
-            }
-            for (_s1, span) in clobber_abis {
-                try_visit!(visit_span(vis, span))
-            }
-            for span in line_spans {
-                try_visit!(visit_span(vis, span))
+                FnKind::Closure(binder, coroutine_kind, decl, body) =>
+                    visit_visitable!($($mut)? vis, binder, coroutine_kind, decl, body),
             }
             V::Result::output()
         }
 
-        pub fn walk_inline_asm_sym<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            InlineAsmSym { id, qself, path }: &$($lt)? $($mut)? InlineAsmSym,
-        ) -> V::Result {
-            try_visit!(visit_id(vis, id));
-            try_visit!(vis.visit_qself(qself));
-            vis.visit_path(path)
-        }
-
-        pub fn walk_format_args<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, fmt: &$($lt)? $($mut)? FormatArgs) -> V::Result {
-            let FormatArgs { span, template, arguments, uncooked_fmt_str: _, is_source_literal: _ } = fmt;
-
-            let args = $(${ignore($mut)} arguments.all_args_mut())? $(${ignore($lt)} arguments.all_args())? ;
-            for FormatArgument { kind, expr } in args {
-                match kind {
-                    FormatArgumentKind::Named(ident) | FormatArgumentKind::Captured(ident) => {
-                        try_visit!(vis.visit_ident(ident))
-                    }
-                    FormatArgumentKind::Normal => {}
-                }
-                try_visit!(vis.visit_expr(expr));
-            }
-            for piece in template {
-                match piece {
-                    FormatArgsPiece::Literal(_symbol) => {}
-                    FormatArgsPiece::Placeholder(placeholder) => try_visit!(walk_format_placeholder(vis, placeholder)),
-                }
-            }
-            visit_span(vis, span)
-        }
+        impl_walkable!(|&$($mut)? $($lt)? self: Impl, vis: &mut V| {
+            let Impl { defaultness, safety, generics, constness, polarity, of_trait, self_ty, items } = self;
+            visit_visitable!($($mut)? vis, defaultness, safety, generics, constness, polarity, of_trait, self_ty);
+            visit_visitable_with!($($mut)? vis, items, AssocCtxt::Impl { of_trait: of_trait.is_some() });
+            V::Result::output()
+        });
 
-        fn walk_format_placeholder<$($lt,)? V: $Visitor$(<$lt>)?>(
-            vis: &mut V,
-            placeholder: &$($lt)? $($mut)? FormatPlaceholder,
-        ) -> V::Result {
-            let FormatPlaceholder { argument, span, format_options, format_trait: _ } = placeholder;
-            if let Some(span) = span {
-                try_visit!(visit_span(vis, span));
-            }
-            let FormatArgPosition { span, index: _, kind: _ } = argument;
-            if let Some(span) = span {
-                try_visit!(visit_span(vis, span));
-            }
-            let FormatOptions {
-                width,
-                precision,
-                alignment: _,
-                fill: _,
-                sign: _,
-                alternate: _,
-                zero_pad: _,
-                debug_hex: _,
-            } = format_options;
-            match width {
-                None => {}
-                Some(FormatCount::Literal(_)) => {}
-                Some(FormatCount::Argument(FormatArgPosition { span, index: _, kind: _ })) => {
-                    if let Some(span) = span {
-                        try_visit!(visit_span(vis, span));
-                    }
-                }
-            }
-            match precision {
-                None => {}
-                Some(FormatCount::Literal(_)) => {}
-                Some(FormatCount::Argument(FormatArgPosition { span, index: _, kind: _ })) => {
-                    if let Some(span) = span {
-                        try_visit!(visit_span(vis, span));
-                    }
-                }
-            }
+        // Special case to call `visit_method_receiver_expr`.
+        impl_walkable!(|&$($mut)? $($lt)? self: MethodCall, vis: &mut V| {
+            let MethodCall { seg, receiver, args, span } = self;
+            try_visit!(vis.visit_method_receiver_expr(receiver));
+            visit_visitable!($($mut)? vis, seg, args, span);
             V::Result::output()
-        }
+        });
 
-        pub fn walk_expr<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, expression: &$($lt)? $($mut)? Expr) -> V::Result {
-            let Expr { id, kind, span, attrs, tokens: _ } = expression;
-            try_visit!(visit_id(vis, id));
-            walk_list!(vis, visit_attribute, attrs);
+        impl_walkable!(|&$($mut)? $($lt)? self: Expr, vis: &mut V| {
+            let Expr { id, kind, span, attrs, tokens: _ } = self;
+            visit_visitable!($($mut)? vis, id, attrs);
             match kind {
-                ExprKind::Array(exprs) => {
-                    try_visit!(visit_exprs(vis, exprs));
-                }
-                ExprKind::ConstBlock(anon_const) => try_visit!(vis.visit_anon_const(anon_const)),
-                ExprKind::Repeat(element, count) => {
-                    try_visit!(vis.visit_expr(element));
-                    try_visit!(vis.visit_anon_const(count));
-                }
-                ExprKind::Struct(se) => {
-                    let StructExpr { qself, path, fields, rest } = &$($mut)?**se;
-                    try_visit!(vis.visit_qself(qself));
-                    try_visit!(vis.visit_path(path));
-                    try_visit!(visit_expr_fields(vis, fields));
-                    match rest {
-                        StructRest::Base(expr) => try_visit!(vis.visit_expr(expr)),
-                        StructRest::Rest(span) => try_visit!(visit_span(vis, span)),
-                        StructRest::None => {}
-                    }
-                }
-                ExprKind::Tup(exprs) => {
-                    try_visit!(visit_exprs(vis, exprs));
-                }
-                ExprKind::Call(callee_expression, arguments) => {
-                    try_visit!(vis.visit_expr(callee_expression));
-                    try_visit!(visit_exprs(vis, arguments));
-                }
-                ExprKind::MethodCall(box MethodCall { seg, receiver, args, span }) => {
-                    try_visit!(vis.visit_method_receiver_expr(receiver));
-                    try_visit!(vis.visit_path_segment(seg));
-                    try_visit!(visit_exprs(vis, args));
-                    try_visit!(visit_span(vis, span));
-                }
-                ExprKind::Binary(Spanned { span, node: _ }, left_expression, right_expression) => {
-                    try_visit!(vis.visit_expr(left_expression));
-                    try_visit!(vis.visit_expr(right_expression));
-                    try_visit!(visit_span(vis, span))
-                }
-                ExprKind::AddrOf(_kind, _mutbl, subexpression) => {
-                    try_visit!(vis.visit_expr(subexpression));
-                }
-                ExprKind::Unary(_op, subexpression) => {
-                    try_visit!(vis.visit_expr(subexpression));
-                }
-                ExprKind::Cast(subexpression, typ) | ExprKind::Type(subexpression, typ) => {
-                    try_visit!(vis.visit_expr(subexpression));
-                    try_visit!(vis.visit_ty(typ));
-                }
-                ExprKind::Let(pat, expr, span, _recovered) => {
-                    try_visit!(vis.visit_pat(pat));
-                    try_visit!(vis.visit_expr(expr));
-                    try_visit!(visit_span(vis, span))
-                }
-                ExprKind::If(head_expression, if_block, optional_else) => {
-                    try_visit!(vis.visit_expr(head_expression));
-                    try_visit!(vis.visit_block(if_block));
-                    visit_opt!(vis, visit_expr, optional_else);
-                }
-                ExprKind::While(subexpression, block, opt_label) => {
-                    visit_opt!(vis, visit_label, opt_label);
-                    try_visit!(vis.visit_expr(subexpression));
-                    try_visit!(vis.visit_block(block));
-                }
-                ExprKind::ForLoop { pat, iter, body, label, kind: _ } => {
-                    visit_opt!(vis, visit_label, label);
-                    try_visit!(vis.visit_pat(pat));
-                    try_visit!(vis.visit_expr(iter));
-                    try_visit!(vis.visit_block(body));
-                }
-                ExprKind::Loop(block, opt_label, span) => {
-                    visit_opt!(vis, visit_label, opt_label);
-                    try_visit!(vis.visit_block(block));
-                    try_visit!(visit_span(vis, span))
-                }
-                ExprKind::Match(subexpression, arms, _kind) => {
-                    try_visit!(vis.visit_expr(subexpression));
-                    try_visit!(visit_arms(vis, arms));
-                }
+                ExprKind::Array(exprs) =>
+                    visit_visitable!($($mut)? vis, exprs),
+                ExprKind::ConstBlock(anon_const) =>
+                    visit_visitable!($($mut)? vis, anon_const),
+                ExprKind::Repeat(element, count) =>
+                    visit_visitable!($($mut)? vis, element, count),
+                ExprKind::Struct(se) =>
+                    visit_visitable!($($mut)? vis, se),
+                ExprKind::Tup(exprs) =>
+                    visit_visitable!($($mut)? vis, exprs),
+                ExprKind::Call(callee_expression, arguments) =>
+                    visit_visitable!($($mut)? vis, callee_expression, arguments),
+                ExprKind::MethodCall(mc) =>
+                    visit_visitable!($($mut)? vis, mc),
+                ExprKind::Binary(op, lhs, rhs) =>
+                    visit_visitable!($($mut)? vis, op, lhs, rhs),
+                ExprKind::AddrOf(kind, mutbl, subexpression) =>
+                    visit_visitable!($($mut)? vis, kind, mutbl, subexpression),
+                ExprKind::Unary(op, subexpression) =>
+                    visit_visitable!($($mut)? vis, op, subexpression),
+                ExprKind::Cast(subexpression, typ) | ExprKind::Type(subexpression, typ) =>
+                    visit_visitable!($($mut)? vis, subexpression, typ),
+                ExprKind::Let(pat, expr, span, _recovered) =>
+                    visit_visitable!($($mut)? vis, pat, expr, span),
+                ExprKind::If(head_expression, if_block, optional_else) =>
+                    visit_visitable!($($mut)? vis, head_expression, if_block, optional_else),
+                ExprKind::While(subexpression, block, opt_label) =>
+                    visit_visitable!($($mut)? vis, subexpression, block, opt_label),
+                ExprKind::ForLoop { pat, iter, body, label, kind } =>
+                    visit_visitable!($($mut)? vis, pat, iter, body, label, kind),
+                ExprKind::Loop(block, opt_label, span) =>
+                    visit_visitable!($($mut)? vis, block, opt_label, span),
+                ExprKind::Match(subexpression, arms, kind) =>
+                    visit_visitable!($($mut)? vis, subexpression, arms, kind),
                 ExprKind::Closure(box Closure {
                     binder,
                     capture_clause,
                     coroutine_kind,
                     constness,
-                    movability: _,
+                    movability,
                     fn_decl,
                     body,
                     fn_decl_span,
                     fn_arg_span,
                 }) => {
-                    try_visit!(visit_constness(vis, constness));
-                    try_visit!(vis.visit_capture_by(capture_clause));
-                    try_visit!(vis.visit_fn(
-                        FnKind::Closure(binder, coroutine_kind, fn_decl, body),
-                        *span,
-                        *id
-                    ));
-                    try_visit!(visit_span(vis, fn_decl_span));
-                    try_visit!(visit_span(vis, fn_arg_span));
-                }
-                ExprKind::Block(block, opt_label) => {
-                    visit_opt!(vis, visit_label, opt_label);
-                    try_visit!(vis.visit_block(block));
-                }
-                ExprKind::Gen(capture_clause, body, _kind, decl_span) => {
-                    try_visit!(vis.visit_capture_by(capture_clause));
-                    try_visit!(vis.visit_block(body));
-                    try_visit!(visit_span(vis, decl_span));
-                }
-                ExprKind::Await(expr, span) => {
-                    try_visit!(vis.visit_expr(expr));
-                    try_visit!(visit_span(vis, span));
-                }
-                ExprKind::Use(expr, span) => {
-                    try_visit!(vis.visit_expr(expr));
-                    try_visit!(visit_span(vis, span));
-                }
-                ExprKind::Assign(lhs, rhs, span) => {
-                    try_visit!(vis.visit_expr(lhs));
-                    try_visit!(vis.visit_expr(rhs));
-                    try_visit!(visit_span(vis, span));
-                }
-                ExprKind::AssignOp(Spanned { span, node: _ }, left_expression, right_expression) => {
-                    try_visit!(vis.visit_expr(left_expression));
-                    try_visit!(vis.visit_expr(right_expression));
-                    try_visit!(visit_span(vis, span));
-                }
-                ExprKind::Field(subexpression, ident) => {
-                    try_visit!(vis.visit_expr(subexpression));
-                    try_visit!(vis.visit_ident(ident));
-                }
-                ExprKind::Index(main_expression, index_expression, span) => {
-                    try_visit!(vis.visit_expr(main_expression));
-                    try_visit!(vis.visit_expr(index_expression));
-                    try_visit!(visit_span(vis, span));
-                }
-                ExprKind::Range(start, end, _limit) => {
-                    visit_opt!(vis, visit_expr, start);
-                    visit_opt!(vis, visit_expr, end);
-                }
+                    visit_visitable!($($mut)? vis, constness, movability, capture_clause);
+                    let kind = FnKind::Closure(binder, coroutine_kind, fn_decl, body);
+                    try_visit!(vis.visit_fn(kind, *span, *id));
+                    visit_visitable!($($mut)? vis, fn_decl_span, fn_arg_span);
+                }
+                ExprKind::Block(block, opt_label) =>
+                    visit_visitable!($($mut)? vis, block, opt_label),
+                ExprKind::Gen(capt, body, kind, decl_span) =>
+                    visit_visitable!($($mut)? vis, capt, body, kind, decl_span),
+                ExprKind::Await(expr, span) | ExprKind::Use(expr, span) =>
+                    visit_visitable!($($mut)? vis, expr, span),
+                ExprKind::Assign(lhs, rhs, span) =>
+                    visit_visitable!($($mut)? vis, lhs, rhs, span),
+                ExprKind::AssignOp(op, lhs, rhs) =>
+                    visit_visitable!($($mut)? vis, op, lhs, rhs),
+                ExprKind::Field(subexpression, ident) =>
+                    visit_visitable!($($mut)? vis, subexpression, ident),
+                ExprKind::Index(main_expression, index_expression, span) =>
+                    visit_visitable!($($mut)? vis, main_expression, index_expression, span),
+                ExprKind::Range(start, end, limit) =>
+                    visit_visitable!($($mut)? vis, start, end, limit),
                 ExprKind::Underscore => {}
-                ExprKind::Path(maybe_qself, path) => {
-                    try_visit!(vis.visit_qself(maybe_qself));
-                    try_visit!(vis.visit_path(path));
-                }
-                ExprKind::Break(opt_label, opt_expr) => {
-                    visit_opt!(vis, visit_label, opt_label);
-                    visit_opt!(vis, visit_expr, opt_expr);
-                }
-                ExprKind::Continue(opt_label) => {
-                    visit_opt!(vis, visit_label, opt_label);
-                }
-                ExprKind::Ret(optional_expression) => {
-                    visit_opt!(vis, visit_expr, optional_expression);
-                }
-                ExprKind::Yeet(optional_expression) => {
-                    visit_opt!(vis, visit_expr, optional_expression);
-                }
-                ExprKind::Become(expr) => try_visit!(vis.visit_expr(expr)),
-                ExprKind::MacCall(mac) => try_visit!(vis.visit_mac_call(mac)),
-                ExprKind::Paren(subexpression) => try_visit!(vis.visit_expr(subexpression)),
-                ExprKind::InlineAsm(asm) => try_visit!(vis.visit_inline_asm(asm)),
-                ExprKind::FormatArgs(f) => try_visit!(vis.visit_format_args(f)),
-                ExprKind::OffsetOf(container, fields) => {
-                    try_visit!(vis.visit_ty(container));
-                    walk_list!(vis, visit_ident, fields);
-                }
-                ExprKind::Yield(kind) => {
-                    match kind {
-                        YieldKind::Postfix(expr) => {
-                            try_visit!(vis.visit_expr(expr));
-                        }
-                        YieldKind::Prefix(expr) => {
-                            visit_opt!(vis, visit_expr, expr);
-                        }
-                    }
-                }
-                ExprKind::Try(subexpression) => try_visit!(vis.visit_expr(subexpression)),
-                ExprKind::TryBlock(body) => try_visit!(vis.visit_block(body)),
-                ExprKind::Lit(_token) => {}
-                ExprKind::IncludedBytes(_bytes) => {}
-                ExprKind::UnsafeBinderCast(_kind, expr, ty) => {
-                    try_visit!(vis.visit_expr(expr));
-                    visit_opt!(vis, visit_ty, ty);
-                }
+                ExprKind::Path(maybe_qself, path) =>
+                    visit_visitable!($($mut)? vis, maybe_qself, path),
+                ExprKind::Break(opt_label, opt_expr) =>
+                    visit_visitable!($($mut)? vis, opt_label, opt_expr),
+                ExprKind::Continue(opt_label) =>
+                    visit_visitable!($($mut)? vis, opt_label),
+                ExprKind::Ret(optional_expression) | ExprKind::Yeet(optional_expression) =>
+                    visit_visitable!($($mut)? vis, optional_expression),
+                ExprKind::Become(expr) =>
+                    visit_visitable!($($mut)? vis, expr),
+                ExprKind::MacCall(mac) =>
+                    visit_visitable!($($mut)? vis, mac),
+                ExprKind::Paren(subexpression) =>
+                    visit_visitable!($($mut)? vis, subexpression),
+                ExprKind::InlineAsm(asm) =>
+                    visit_visitable!($($mut)? vis, asm),
+                ExprKind::FormatArgs(f) =>
+                    visit_visitable!($($mut)? vis, f),
+                ExprKind::OffsetOf(container, fields) =>
+                    visit_visitable!($($mut)? vis, container, fields),
+                ExprKind::Yield(kind) =>
+                    visit_visitable!($($mut)? vis, kind),
+                ExprKind::Try(subexpression) =>
+                    visit_visitable!($($mut)? vis, subexpression),
+                ExprKind::TryBlock(body) =>
+                    visit_visitable!($($mut)? vis, body),
+                ExprKind::Lit(token) =>
+                    visit_visitable!($($mut)? vis, token),
+                ExprKind::IncludedBytes(bytes) =>
+                    visit_visitable!($($mut)? vis, bytes),
+                ExprKind::UnsafeBinderCast(kind, expr, ty) =>
+                    visit_visitable!($($mut)? vis, kind, expr, ty),
                 ExprKind::Err(_guar) => {}
                 ExprKind::Dummy => {}
             }
 
             visit_span(vis, span)
-        }
-
-        pub fn walk_param<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, param: &$($lt)? $($mut)? Param) -> V::Result {
-            let Param { attrs, ty, pat, id, span, is_placeholder: _ } = param;
-            try_visit!(visit_id(vis, id));
-            walk_list!(vis, visit_attribute, attrs);
-            try_visit!(vis.visit_pat(pat));
-            try_visit!(vis.visit_ty(ty));
-            visit_span(vis, span)
-        }
-
-        pub fn walk_arm<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, arm: &$($lt)? $($mut)? Arm) -> V::Result {
-            let Arm { attrs, pat, guard, body, span, id, is_placeholder: _ } = arm;
-            try_visit!(visit_id(vis, id));
-            walk_list!(vis, visit_attribute, attrs);
-            try_visit!(vis.visit_pat(pat));
-            visit_opt!(vis, visit_expr, guard);
-            visit_opt!(vis, visit_expr, body);
-            visit_span(vis, span)
-        }
-
-        pub fn walk_vis<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, visibility: &$($lt)? $($mut)? Visibility) -> V::Result {
-            let Visibility { kind, span, tokens: _ } = visibility;
-            match kind {
-                VisibilityKind::Restricted { path, id, shorthand: _ } => {
-                    try_visit!(visit_id(vis, id));
-                    try_visit!(vis.visit_path(path));
-                }
-                VisibilityKind::Public | VisibilityKind::Inherited => {}
-            }
-            visit_span(vis, span)
-        }
-
-        pub fn walk_attribute<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, attr: &$($lt)? $($mut)? Attribute) -> V::Result {
-            let Attribute { kind, id: _, style: _, span } = attr;
-            match kind {
-                AttrKind::Normal(normal) => {
-                    let NormalAttr { item, tokens: _ } = &$($mut)?**normal;
-                    let AttrItem { unsafety: _, path, args, tokens: _ } = item;
-                    try_visit!(vis.visit_path(path));
-                    try_visit!(walk_attr_args(vis, args));
-                }
-                AttrKind::DocComment(_kind, _sym) => {}
-            }
-            visit_span(vis, span)
-        }
-
-        pub fn walk_attr_args<$($lt,)? V: $Visitor$(<$lt>)?>(vis: &mut V, args: &$($lt)? $($mut)? AttrArgs) -> V::Result {
-            match args {
-                AttrArgs::Empty => {}
-                AttrArgs::Delimited(args) => try_visit!(visit_delim_args(vis, args)),
-                AttrArgs::Eq { eq_span, expr } => {
-                    try_visit!(vis.visit_expr(expr));
-                    try_visit!(visit_span(vis, eq_span));
-                }
-            }
-            V::Result::output()
-        }
+        });
+
+        define_named_walk!($(($mut))? $Visitor$(<$lt>)?
+            pub fn walk_anon_const(AnonConst);
+            pub fn walk_arm(Arm);
+            //pub fn walk_assoc_item(AssocItem, _ctxt: AssocCtxt);
+            pub fn walk_assoc_item_constraint(AssocItemConstraint);
+            pub fn walk_attribute(Attribute);
+            pub fn walk_block(Block);
+            //pub fn walk_nested_use_tree((UseTree, NodeId));
+            pub fn walk_capture_by(CaptureBy);
+            pub fn walk_closure_binder(ClosureBinder);
+            pub fn walk_contract(FnContract);
+            pub fn walk_coroutine_kind(CoroutineKind);
+            pub fn walk_crate(Crate);
+            pub fn walk_expr(Expr);
+            pub fn walk_expr_field(ExprField);
+            pub fn walk_field_def(FieldDef);
+            pub fn walk_fn_decl(FnDecl);
+            pub fn walk_fn_header(FnHeader);
+            pub fn walk_fn_ret_ty(FnRetTy);
+            //pub fn walk_foreign_item(ForeignItem);
+            pub fn walk_foreign_mod(ForeignMod);
+            pub fn walk_format_args(FormatArgs);
+            pub fn walk_generic_arg(GenericArg);
+            pub fn walk_generic_args(GenericArgs);
+            pub fn walk_generic_param(GenericParam);
+            pub fn walk_generics(Generics);
+            pub fn walk_inline_asm(InlineAsm);
+            pub fn walk_inline_asm_sym(InlineAsmSym);
+            //pub fn walk_item(Item);
+            pub fn walk_label(Label);
+            pub fn walk_lifetime(Lifetime);
+            pub fn walk_local(Local);
+            pub fn walk_mac(MacCall);
+            pub fn walk_macro_def(MacroDef);
+            pub fn walk_param_bound(GenericBound);
+            pub fn walk_param(Param);
+            pub fn walk_pat_field(PatField);
+            pub fn walk_path(Path);
+            pub fn walk_path_segment(PathSegment);
+            pub fn walk_pat(Pat);
+            pub fn walk_poly_trait_ref(PolyTraitRef);
+            pub fn walk_precise_capturing_arg(PreciseCapturingArg);
+            pub fn walk_qself(QSelf);
+            pub fn walk_trait_ref(TraitRef);
+            pub fn walk_ty_pat(TyPat);
+            pub fn walk_ty(Ty);
+            pub fn walk_use_tree(UseTree);
+            pub fn walk_variant_data(VariantData);
+            pub fn walk_variant(Variant);
+            pub fn walk_vis(Visibility);
+            pub fn walk_where_predicate_kind(WherePredicateKind);
+            pub fn walk_where_predicate(WherePredicate);
+        );
     };
 }
 
@@ -1907,6 +1115,20 @@ common_visitor_and_walkers!(Visitor<'a>);
 macro_rules! generate_list_visit_fns {
     ($($name:ident, $Ty:ty, $visit_fn:ident$(, $param:ident: $ParamTy:ty)*;)+) => {
         $(
+            #[allow(unused_parens)]
+            impl<'a, V: Visitor<'a>> Visitable<'a, V> for ThinVec<$Ty> {
+                type Extra = ($($ParamTy),*);
+
+                #[inline]
+                fn visit(
+                    &'a self,
+                    visitor: &mut V,
+                    ($($param),*): Self::Extra,
+                ) -> V::Result {
+                    $name(visitor, self $(, $param)*)
+                }
+            }
+
             fn $name<'a, V: Visitor<'a>>(
                 vis: &mut V,
                 values: &'a ThinVec<$Ty>,
@@ -1937,18 +1159,9 @@ generate_list_visit_fns! {
     visit_arms, Arm, visit_arm;
 }
 
-#[expect(rustc::pass_by_value)] // needed for symmetry with mut_visit
-fn visit_nested_use_tree<'a, V: Visitor<'a>>(
-    vis: &mut V,
-    nested_tree: &'a UseTree,
-    &nested_id: &NodeId,
-) -> V::Result {
-    vis.visit_nested_use_tree(nested_tree, nested_id)
-}
-
 pub fn walk_stmt<'a, V: Visitor<'a>>(visitor: &mut V, statement: &'a Stmt) -> V::Result {
     let Stmt { id, kind, span: _ } = statement;
-    try_visit!(visit_id(visitor, id));
+    try_visit!(visitor.visit_id(*id));
     match kind {
         StmtKind::Let(local) => try_visit!(visitor.visit_local(local)),
         StmtKind::Item(item) => try_visit!(visitor.visit_item(item)),
diff --git a/compiler/rustc_ast_lowering/src/lib.rs b/compiler/rustc_ast_lowering/src/lib.rs
index 533ee9bff54..9aef189a29d 100644
--- a/compiler/rustc_ast_lowering/src/lib.rs
+++ b/compiler/rustc_ast_lowering/src/lib.rs
@@ -874,25 +874,32 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
     /// name resolver owing to lifetime elision; this also populates the resolver's node-id->def-id
     /// map, so that later calls to `opt_node_id_to_def_id` that refer to these extra lifetime
     /// parameters will be successful.
-    #[instrument(level = "debug", skip(self))]
+    #[instrument(level = "debug", skip(self), ret)]
     #[inline]
     fn lower_lifetime_binder(
         &mut self,
         binder: NodeId,
         generic_params: &[GenericParam],
     ) -> &'hir [hir::GenericParam<'hir>] {
-        let mut generic_params: Vec<_> = self
-            .lower_generic_params_mut(generic_params, hir::GenericParamSource::Binder)
-            .collect();
+        // Start by creating params for extra lifetimes params, as this creates the definitions
+        // that may be referred to by the AST inside `generic_params`.
         let extra_lifetimes = self.resolver.extra_lifetime_params(binder);
         debug!(?extra_lifetimes);
-        generic_params.extend(extra_lifetimes.into_iter().filter_map(|(ident, node_id, res)| {
-            self.lifetime_res_to_generic_param(ident, node_id, res, hir::GenericParamSource::Binder)
-        }));
-        let generic_params = self.arena.alloc_from_iter(generic_params);
-        debug!(?generic_params);
-
-        generic_params
+        let extra_lifetimes: Vec<_> = extra_lifetimes
+            .into_iter()
+            .filter_map(|(ident, node_id, res)| {
+                self.lifetime_res_to_generic_param(
+                    ident,
+                    node_id,
+                    res,
+                    hir::GenericParamSource::Binder,
+                )
+            })
+            .collect();
+        let arena = self.arena;
+        let explicit_generic_params =
+            self.lower_generic_params_mut(generic_params, hir::GenericParamSource::Binder);
+        arena.alloc_from_iter(explicit_generic_params.chain(extra_lifetimes.into_iter()))
     }
 
     fn with_dyn_type_scope<T>(&mut self, in_scope: bool, f: impl FnOnce(&mut Self) -> T) -> T {
diff --git a/compiler/rustc_attr_data_structures/src/attributes.rs b/compiler/rustc_attr_data_structures/src/attributes.rs
index 3157b18b635..1e2576bef2c 100644
--- a/compiler/rustc_attr_data_structures/src/attributes.rs
+++ b/compiler/rustc_attr_data_structures/src/attributes.rs
@@ -157,6 +157,19 @@ pub enum UsedBy {
     Linker,
 }
 
+#[derive(Encodable, Decodable, Clone, Debug, PartialEq, Eq, Hash)]
+#[derive(HashStable_Generic, PrintAttribute)]
+pub enum MacroUseArgs {
+    UseAll,
+    UseSpecific(ThinVec<Ident>),
+}
+
+impl Default for MacroUseArgs {
+    fn default() -> Self {
+        Self::UseSpecific(ThinVec::new())
+    }
+}
+
 #[derive(Debug, Clone, Encodable, Decodable, HashStable_Generic)]
 pub struct StrippedCfgItem<ModId = DefId> {
     pub parent_module: ModId,
@@ -234,6 +247,7 @@ pub enum CfgEntry {
 pub enum AttributeKind {
     // tidy-alphabetical-start
     /// Represents `#[align(N)]`.
+    // FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
     Align { align: Align, span: Span },
 
     /// Represents `#[rustc_allow_const_fn_unstable]`.
@@ -350,9 +364,15 @@ pub enum AttributeKind {
     /// Represents `#[loop_match]`.
     LoopMatch(Span),
 
+    /// Represents `#[macro_escape]`.
+    MacroEscape(Span),
+
     /// Represents `#[rustc_macro_transparency]`.
     MacroTransparency(Transparency),
 
+    /// Represents `#[macro_use]`.
+    MacroUse { span: Span, arguments: MacroUseArgs },
+
     /// Represents `#[marker]`.
     Marker(Span),
 
diff --git a/compiler/rustc_attr_data_structures/src/encode_cross_crate.rs b/compiler/rustc_attr_data_structures/src/encode_cross_crate.rs
index 86d9ddba4d2..159b807a3b2 100644
--- a/compiler/rustc_attr_data_structures/src/encode_cross_crate.rs
+++ b/compiler/rustc_attr_data_structures/src/encode_cross_crate.rs
@@ -45,7 +45,9 @@ impl AttributeKind {
             LinkOrdinal { .. } => No,
             LinkSection { .. } => Yes, // Needed for rustdoc
             LoopMatch(..) => No,
+            MacroEscape(..) => No,
             MacroTransparency(..) => Yes,
+            MacroUse { .. } => No,
             Marker(..) => No,
             MayDangle(..) => No,
             MustUse { .. } => Yes,
diff --git a/compiler/rustc_attr_data_structures/src/lib.rs b/compiler/rustc_attr_data_structures/src/lib.rs
index ecca0e39063..4c5af805ca9 100644
--- a/compiler/rustc_attr_data_structures/src/lib.rs
+++ b/compiler/rustc_attr_data_structures/src/lib.rs
@@ -24,7 +24,7 @@ use rustc_ast::token::CommentKind;
 use rustc_ast::{AttrStyle, IntTy, UintTy};
 use rustc_ast_pretty::pp::Printer;
 use rustc_span::hygiene::Transparency;
-use rustc_span::{ErrorGuaranteed, Span, Symbol};
+use rustc_span::{ErrorGuaranteed, Ident, Span, Symbol};
 pub use stability::*;
 use thin_vec::ThinVec;
 pub use version::*;
@@ -172,7 +172,7 @@ macro_rules! print_tup {
 print_tup!(A B C D E F G H);
 print_skip!(Span, (), ErrorGuaranteed);
 print_disp!(u16, bool, NonZero<u32>);
-print_debug!(Symbol, UintTy, IntTy, Align, AttrStyle, CommentKind, Transparency);
+print_debug!(Symbol, Ident, UintTy, IntTy, Align, AttrStyle, CommentKind, Transparency);
 
 /// Finds attributes in sequences of attributes by pattern matching.
 ///
diff --git a/compiler/rustc_attr_parsing/src/attributes/codegen_attrs.rs b/compiler/rustc_attr_parsing/src/attributes/codegen_attrs.rs
index 3e542771d58..bb28121c2c5 100644
--- a/compiler/rustc_attr_parsing/src/attributes/codegen_attrs.rs
+++ b/compiler/rustc_attr_parsing/src/attributes/codegen_attrs.rs
@@ -177,7 +177,8 @@ impl<S: Stage> AttributeParser<S> for NakedParser {
             sym::instruction_set,
             sym::repr,
             sym::rustc_std_internal_symbol,
-            sym::align,
+            // FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
+            sym::rustc_align,
             // obviously compatible with self
             sym::naked,
             // documentation
diff --git a/compiler/rustc_attr_parsing/src/attributes/macro_attrs.rs b/compiler/rustc_attr_parsing/src/attributes/macro_attrs.rs
new file mode 100644
index 00000000000..eade49180ac
--- /dev/null
+++ b/compiler/rustc_attr_parsing/src/attributes/macro_attrs.rs
@@ -0,0 +1,115 @@
+use rustc_attr_data_structures::{AttributeKind, MacroUseArgs};
+use rustc_errors::DiagArgValue;
+use rustc_feature::{AttributeTemplate, template};
+use rustc_span::{Span, Symbol, sym};
+use thin_vec::ThinVec;
+
+use crate::attributes::{AcceptMapping, AttributeParser, NoArgsAttributeParser, OnDuplicate};
+use crate::context::{AcceptContext, FinalizeContext, Stage};
+use crate::parser::ArgParser;
+use crate::session_diagnostics;
+
+pub(crate) struct MacroEscapeParser;
+impl<S: Stage> NoArgsAttributeParser<S> for MacroEscapeParser {
+    const PATH: &[Symbol] = &[sym::macro_escape];
+    const ON_DUPLICATE: OnDuplicate<S> = OnDuplicate::Warn;
+    const CREATE: fn(Span) -> AttributeKind = AttributeKind::MacroEscape;
+}
+
+/// `#[macro_use]` attributes can either:
+/// - Use all macros from a crate, if provided without arguments
+/// - Use specific macros from a crate, if provided with arguments `#[macro_use(macro1, macro2)]`
+/// A warning should be provided if an use all is combined with specific uses, or if multiple use-alls are used.
+#[derive(Default)]
+pub(crate) struct MacroUseParser {
+    state: MacroUseArgs,
+
+    /// Spans of all `#[macro_use]` arguments with arguments, used for linting
+    uses_attr_spans: ThinVec<Span>,
+    /// If `state` is `UseSpecific`, stores the span of the first `#[macro_use]` argument, used as the span for this attribute
+    /// If `state` is `UseAll`, stores the span of the first `#[macro_use]` arguments without arguments
+    first_span: Option<Span>,
+}
+
+const MACRO_USE_TEMPLATE: AttributeTemplate = template!(Word, List: "name1, name2, ...");
+
+impl<S: Stage> AttributeParser<S> for MacroUseParser {
+    const ATTRIBUTES: AcceptMapping<Self, S> = &[(
+        &[sym::macro_use],
+        MACRO_USE_TEMPLATE,
+        |group: &mut Self, cx: &mut AcceptContext<'_, '_, S>, args| {
+            let span = cx.attr_span;
+            group.first_span.get_or_insert(span);
+            match args {
+                ArgParser::NoArgs => {
+                    match group.state {
+                        MacroUseArgs::UseAll => {
+                            let first_span = group.first_span.expect(
+                                "State is UseAll is some so this is not the first attribute",
+                            );
+                            // Since there is a `#[macro_use]` import already, give a warning
+                            cx.warn_unused_duplicate(first_span, span);
+                        }
+                        MacroUseArgs::UseSpecific(_) => {
+                            group.state = MacroUseArgs::UseAll;
+                            group.first_span = Some(span);
+                            // If there is a `#[macro_use]` attribute, warn on all `#[macro_use(...)]` attributes since everything is already imported
+                            for specific_use in group.uses_attr_spans.drain(..) {
+                                cx.warn_unused_duplicate(span, specific_use);
+                            }
+                        }
+                    }
+                }
+                ArgParser::List(list) => {
+                    if list.is_empty() {
+                        cx.warn_empty_attribute(list.span);
+                        return;
+                    }
+
+                    match &mut group.state {
+                        MacroUseArgs::UseAll => {
+                            let first_span = group.first_span.expect(
+                                "State is UseAll is some so this is not the first attribute",
+                            );
+                            cx.warn_unused_duplicate(first_span, span);
+                        }
+                        MacroUseArgs::UseSpecific(arguments) => {
+                            // Store here so if we encounter a `UseAll` later we can still lint this attribute
+                            group.uses_attr_spans.push(cx.attr_span);
+
+                            for item in list.mixed() {
+                                let Some(item) = item.meta_item() else {
+                                    cx.expected_identifier(item.span());
+                                    continue;
+                                };
+                                if let Err(err_span) = item.args().no_args() {
+                                    cx.expected_no_args(err_span);
+                                    continue;
+                                }
+                                let Some(item) = item.path().word() else {
+                                    cx.expected_identifier(item.span());
+                                    continue;
+                                };
+                                arguments.push(item);
+                            }
+                        }
+                    }
+                }
+                ArgParser::NameValue(_) => {
+                    let suggestions = MACRO_USE_TEMPLATE.suggestions(false, sym::macro_use);
+                    cx.emit_err(session_diagnostics::IllFormedAttributeInputLint {
+                        num_suggestions: suggestions.len(),
+                        suggestions: DiagArgValue::StrListSepByAnd(
+                            suggestions.into_iter().map(|s| format!("`{s}`").into()).collect(),
+                        ),
+                        span,
+                    });
+                }
+            }
+        },
+    )];
+
+    fn finalize(self, _cx: &FinalizeContext<'_, '_, S>) -> Option<AttributeKind> {
+        Some(AttributeKind::MacroUse { span: self.first_span?, arguments: self.state })
+    }
+}
diff --git a/compiler/rustc_attr_parsing/src/attributes/mod.rs b/compiler/rustc_attr_parsing/src/attributes/mod.rs
index 200f1381960..15b90bd2ed7 100644
--- a/compiler/rustc_attr_parsing/src/attributes/mod.rs
+++ b/compiler/rustc_attr_parsing/src/attributes/mod.rs
@@ -36,6 +36,7 @@ pub(crate) mod inline;
 pub(crate) mod link_attrs;
 pub(crate) mod lint_helpers;
 pub(crate) mod loop_match;
+pub(crate) mod macro_attrs;
 pub(crate) mod must_use;
 pub(crate) mod no_implicit_prelude;
 pub(crate) mod non_exhaustive;
diff --git a/compiler/rustc_attr_parsing/src/attributes/must_use.rs b/compiler/rustc_attr_parsing/src/attributes/must_use.rs
index e0a3e675509..42af3ed0bfa 100644
--- a/compiler/rustc_attr_parsing/src/attributes/must_use.rs
+++ b/compiler/rustc_attr_parsing/src/attributes/must_use.rs
@@ -34,7 +34,7 @@ impl<S: Stage> SingleAttributeParser<S> for MustUseParser {
                 ArgParser::List(_) => {
                     let suggestions =
                         <Self as SingleAttributeParser<S>>::TEMPLATE.suggestions(false, "must_use");
-                    cx.emit_err(session_diagnostics::MustUseIllFormedAttributeInput {
+                    cx.emit_err(session_diagnostics::IllFormedAttributeInputLint {
                         num_suggestions: suggestions.len(),
                         suggestions: DiagArgValue::StrListSepByAnd(
                             suggestions.into_iter().map(|s| format!("`{s}`").into()).collect(),
diff --git a/compiler/rustc_attr_parsing/src/attributes/repr.rs b/compiler/rustc_attr_parsing/src/attributes/repr.rs
index 6a45832ed7f..521acbb607c 100644
--- a/compiler/rustc_attr_parsing/src/attributes/repr.rs
+++ b/compiler/rustc_attr_parsing/src/attributes/repr.rs
@@ -274,7 +274,7 @@ fn parse_alignment(node: &LitKind) -> Result<Align, &'static str> {
 pub(crate) struct AlignParser(Option<(Align, Span)>);
 
 impl AlignParser {
-    const PATH: &'static [Symbol] = &[sym::align];
+    const PATH: &'static [Symbol] = &[sym::rustc_align];
     const TEMPLATE: AttributeTemplate = template!(List: "<alignment in bytes>");
 
     fn parse<'c, S: Stage>(
diff --git a/compiler/rustc_attr_parsing/src/context.rs b/compiler/rustc_attr_parsing/src/context.rs
index 4d692d9562c..45bfe345207 100644
--- a/compiler/rustc_attr_parsing/src/context.rs
+++ b/compiler/rustc_attr_parsing/src/context.rs
@@ -33,6 +33,7 @@ use crate::attributes::lint_helpers::{
     AsPtrParser, AutomaticallyDerivedParser, PassByValueParser, PubTransparentParser,
 };
 use crate::attributes::loop_match::{ConstContinueParser, LoopMatchParser};
+use crate::attributes::macro_attrs::{MacroEscapeParser, MacroUseParser};
 use crate::attributes::must_use::MustUseParser;
 use crate::attributes::no_implicit_prelude::NoImplicitPreludeParser;
 use crate::attributes::non_exhaustive::NonExhaustiveParser;
@@ -126,6 +127,7 @@ attribute_parsers!(
         BodyStabilityParser,
         ConfusablesParser,
         ConstStabilityParser,
+        MacroUseParser,
         NakedParser,
         StabilityParser,
         UsedParser,
@@ -174,6 +176,7 @@ attribute_parsers!(
         Single<WithoutArgs<FfiPureParser>>,
         Single<WithoutArgs<FundamentalParser>>,
         Single<WithoutArgs<LoopMatchParser>>,
+        Single<WithoutArgs<MacroEscapeParser>>,
         Single<WithoutArgs<MarkerParser>>,
         Single<WithoutArgs<MayDangleParser>>,
         Single<WithoutArgs<NoImplicitPreludeParser>>,
@@ -386,6 +389,17 @@ impl<'f, 'sess: 'f, S: Stage> AcceptContext<'f, 'sess, S> {
         })
     }
 
+    /// emit an error that a `name` was expected here
+    pub(crate) fn expected_identifier(&self, span: Span) -> ErrorGuaranteed {
+        self.emit_err(AttributeParseError {
+            span,
+            attr_span: self.attr_span,
+            template: self.template.clone(),
+            attribute: self.attr_path.clone(),
+            reason: AttributeParseErrorReason::ExpectedIdentifier,
+        })
+    }
+
     /// emit an error that a `name = value` pair was expected at this span. The symbol can be given for
     /// a nicer error message talking about the specific name that was found lacking a value.
     pub(crate) fn expected_name_value(&self, span: Span, name: Option<Symbol>) -> ErrorGuaranteed {
diff --git a/compiler/rustc_attr_parsing/src/session_diagnostics.rs b/compiler/rustc_attr_parsing/src/session_diagnostics.rs
index 9a400e0fe10..1de25ca252b 100644
--- a/compiler/rustc_attr_parsing/src/session_diagnostics.rs
+++ b/compiler/rustc_attr_parsing/src/session_diagnostics.rs
@@ -438,7 +438,7 @@ pub(crate) struct IllFormedAttributeInput {
 
 #[derive(Diagnostic)]
 #[diag(attr_parsing_ill_formed_attribute_input)]
-pub(crate) struct MustUseIllFormedAttributeInput {
+pub(crate) struct IllFormedAttributeInputLint {
     #[primary_span]
     pub span: Span,
     pub num_suggestions: usize,
@@ -549,6 +549,7 @@ pub(crate) enum AttributeParseErrorReason {
         /// Should we tell the user to write a list when they didn't?
         list: bool,
     },
+    ExpectedIdentifier,
 }
 
 pub(crate) struct AttributeParseError {
@@ -600,11 +601,11 @@ impl<'a, G: EmissionGuarantee> Diagnostic<'a, G> for AttributeParseError {
                 diag.code(E0538);
             }
             AttributeParseErrorReason::UnexpectedLiteral => {
-                diag.span_label(self.span, format!("didn't expect a literal here"));
+                diag.span_label(self.span, "didn't expect a literal here");
                 diag.code(E0565);
             }
             AttributeParseErrorReason::ExpectedNoArgs => {
-                diag.span_label(self.span, format!("didn't expect any arguments here"));
+                diag.span_label(self.span, "didn't expect any arguments here");
                 diag.code(E0565);
             }
             AttributeParseErrorReason::ExpectedNameValue(None) => {
@@ -684,6 +685,9 @@ impl<'a, G: EmissionGuarantee> Diagnostic<'a, G> for AttributeParseError {
                     }
                 }
             }
+            AttributeParseErrorReason::ExpectedIdentifier => {
+                diag.span_label(self.span, "expected a valid identifier here");
+            }
         }
 
         let suggestions = self.template.suggestions(false, &name);
diff --git a/compiler/rustc_borrowck/src/diagnostics/move_errors.rs b/compiler/rustc_borrowck/src/diagnostics/move_errors.rs
index 92ca868eb99..447bf7d091a 100644
--- a/compiler/rustc_borrowck/src/diagnostics/move_errors.rs
+++ b/compiler/rustc_borrowck/src/diagnostics/move_errors.rs
@@ -303,10 +303,11 @@ impl<'infcx, 'tcx> MirBorrowckCtxt<'_, 'infcx, 'tcx> {
     }
 
     fn has_ambiguous_copy(&mut self, ty: Ty<'tcx>) -> bool {
-        let Some(copy_trait_def) = self.infcx.tcx.lang_items().copy_trait() else { return false };
-        // This is only going to be ambiguous if there are incoherent impls, because otherwise
-        // ambiguity should never happen in MIR.
-        self.infcx.type_implements_trait(copy_trait_def, [ty], self.infcx.param_env).may_apply()
+        let Some(copy_def_id) = self.infcx.tcx.lang_items().copy_trait() else { return false };
+
+        // Avoid bogus move errors because of an incoherent `Copy` impl.
+        self.infcx.type_implements_trait(copy_def_id, [ty], self.infcx.param_env).may_apply()
+            && self.infcx.tcx.coherent_trait(copy_def_id).is_err()
     }
 
     fn report_cannot_move_from_static(&mut self, place: Place<'tcx>, span: Span) -> Diag<'infcx> {
diff --git a/compiler/rustc_codegen_cranelift/example/float-minmax-pass.rs b/compiler/rustc_codegen_cranelift/example/float-minmax-pass.rs
index ad46e18c11c..b7491b7e522 100644
--- a/compiler/rustc_codegen_cranelift/example/float-minmax-pass.rs
+++ b/compiler/rustc_codegen_cranelift/example/float-minmax-pass.rs
@@ -11,6 +11,12 @@
 #[derive(Copy, Clone, PartialEq, Debug)]
 struct f32x4(pub [f32; 4]);
 
+impl f32x4 {
+    fn into_array(self) -> [f32; 4] {
+        unsafe { std::mem::transmute(self) }
+    }
+}
+
 use std::intrinsics::simd::*;
 
 fn main() {
@@ -29,22 +35,22 @@ fn main() {
     unsafe {
         let min0 = simd_fmin(x, y);
         let min1 = simd_fmin(y, x);
-        assert_eq!(min0, min1);
+        assert_eq!(min0.into_array(), min1.into_array());
         let e = f32x4([1.0, 1.0, 3.0, 3.0]);
-        assert_eq!(min0, e);
+        assert_eq!(min0.into_array(), e.into_array());
         let minn = simd_fmin(x, n);
-        assert_eq!(minn, x);
+        assert_eq!(minn.into_array(), x.into_array());
         let minn = simd_fmin(y, n);
-        assert_eq!(minn, y);
+        assert_eq!(minn.into_array(), y.into_array());
 
         let max0 = simd_fmax(x, y);
         let max1 = simd_fmax(y, x);
-        assert_eq!(max0, max1);
+        assert_eq!(max0.into_array(), max1.into_array());
         let e = f32x4([2.0, 2.0, 4.0, 4.0]);
-        assert_eq!(max0, e);
+        assert_eq!(max0.into_array(), e.into_array());
         let maxn = simd_fmax(x, n);
-        assert_eq!(maxn, x);
+        assert_eq!(maxn.into_array(), x.into_array());
         let maxn = simd_fmax(y, n);
-        assert_eq!(maxn, y);
+        assert_eq!(maxn.into_array(), y.into_array());
     }
 }
diff --git a/compiler/rustc_codegen_cranelift/example/mini_core_hello_world.rs b/compiler/rustc_codegen_cranelift/example/mini_core_hello_world.rs
index 246bd3104ec..86602c6b2a3 100644
--- a/compiler/rustc_codegen_cranelift/example/mini_core_hello_world.rs
+++ b/compiler/rustc_codegen_cranelift/example/mini_core_hello_world.rs
@@ -348,7 +348,8 @@ fn main() {
     struct V([f64; 2]);
 
     let f = V([0.0, 1.0]);
-    let _a = f.0[0];
+    let fp = (&raw const f) as *const [f64; 2];
+    let _a = (unsafe { &*fp })[0];
 
     stack_val_align();
 }
diff --git a/compiler/rustc_codegen_gcc/build_system/src/test.rs b/compiler/rustc_codegen_gcc/build_system/src/test.rs
index cbb0f949383..bc0fdd40b6e 100644
--- a/compiler/rustc_codegen_gcc/build_system/src/test.rs
+++ b/compiler/rustc_codegen_gcc/build_system/src/test.rs
@@ -588,7 +588,7 @@ fn asm_tests(env: &Env, args: &TestArg) -> Result<(), String> {
             &"always",
             &"--stage",
             &"0",
-            &"tests/assembly/asm",
+            &"tests/assembly-llvm/asm",
             &"--compiletest-rustc-args",
             &rustc_args,
         ],
diff --git a/compiler/rustc_codegen_llvm/src/back/lto.rs b/compiler/rustc_codegen_llvm/src/back/lto.rs
index 655e1c95373..84302009da9 100644
--- a/compiler/rustc_codegen_llvm/src/back/lto.rs
+++ b/compiler/rustc_codegen_llvm/src/back/lto.rs
@@ -654,6 +654,7 @@ pub(crate) fn run_pass_manager(
     // We then run the llvm_optimize function a second time, to optimize the code which we generated
     // in the enzyme differentiation pass.
     let enable_ad = config.autodiff.contains(&config::AutoDiff::Enable);
+    let enable_gpu = config.offload.contains(&config::Offload::Enable);
     let stage = if thin {
         write::AutodiffStage::PreAD
     } else {
@@ -668,6 +669,12 @@ pub(crate) fn run_pass_manager(
         write::llvm_optimize(cgcx, dcx, module, None, config, opt_level, opt_stage, stage)?;
     }
 
+    if enable_gpu && !thin {
+        let cx =
+            SimpleCx::new(module.module_llvm.llmod(), &module.module_llvm.llcx, cgcx.pointer_size);
+        crate::builder::gpu_offload::handle_gpu_code(cgcx, &cx);
+    }
+
     if cfg!(llvm_enzyme) && enable_ad && !thin {
         let cx =
             SimpleCx::new(module.module_llvm.llmod(), &module.module_llvm.llcx, cgcx.pointer_size);
diff --git a/compiler/rustc_codegen_llvm/src/builder.rs b/compiler/rustc_codegen_llvm/src/builder.rs
index 514923ad6f3..0ade9edb0d2 100644
--- a/compiler/rustc_codegen_llvm/src/builder.rs
+++ b/compiler/rustc_codegen_llvm/src/builder.rs
@@ -3,6 +3,7 @@ use std::ops::Deref;
 use std::{iter, ptr};
 
 pub(crate) mod autodiff;
+pub(crate) mod gpu_offload;
 
 use libc::{c_char, c_uint, size_t};
 use rustc_abi as abi;
@@ -117,6 +118,74 @@ impl<'a, 'll, CX: Borrow<SCx<'ll>>> GenericBuilder<'a, 'll, CX> {
         }
         bx
     }
+
+    // The generic builder has less functionality and thus (unlike the other alloca) we can not
+    // easily jump to the beginning of the function to place our allocas there. We trust the user
+    // to manually do that. FIXME(offload): improve the genericCx and add more llvm wrappers to
+    // handle this.
+    pub(crate) fn direct_alloca(&mut self, ty: &'ll Type, align: Align, name: &str) -> &'ll Value {
+        let val = unsafe {
+            let alloca = llvm::LLVMBuildAlloca(self.llbuilder, ty, UNNAMED);
+            llvm::LLVMSetAlignment(alloca, align.bytes() as c_uint);
+            // Cast to default addrspace if necessary
+            llvm::LLVMBuildPointerCast(self.llbuilder, alloca, self.cx.type_ptr(), UNNAMED)
+        };
+        if name != "" {
+            let name = std::ffi::CString::new(name).unwrap();
+            llvm::set_value_name(val, &name.as_bytes());
+        }
+        val
+    }
+
+    pub(crate) fn inbounds_gep(
+        &mut self,
+        ty: &'ll Type,
+        ptr: &'ll Value,
+        indices: &[&'ll Value],
+    ) -> &'ll Value {
+        unsafe {
+            llvm::LLVMBuildGEPWithNoWrapFlags(
+                self.llbuilder,
+                ty,
+                ptr,
+                indices.as_ptr(),
+                indices.len() as c_uint,
+                UNNAMED,
+                GEPNoWrapFlags::InBounds,
+            )
+        }
+    }
+
+    pub(crate) fn store(&mut self, val: &'ll Value, ptr: &'ll Value, align: Align) -> &'ll Value {
+        debug!("Store {:?} -> {:?}", val, ptr);
+        assert_eq!(self.cx.type_kind(self.cx.val_ty(ptr)), TypeKind::Pointer);
+        unsafe {
+            let store = llvm::LLVMBuildStore(self.llbuilder, val, ptr);
+            llvm::LLVMSetAlignment(store, align.bytes() as c_uint);
+            store
+        }
+    }
+
+    pub(crate) fn load(&mut self, ty: &'ll Type, ptr: &'ll Value, align: Align) -> &'ll Value {
+        unsafe {
+            let load = llvm::LLVMBuildLoad2(self.llbuilder, ty, ptr, UNNAMED);
+            llvm::LLVMSetAlignment(load, align.bytes() as c_uint);
+            load
+        }
+    }
+
+    fn memset(&mut self, ptr: &'ll Value, fill_byte: &'ll Value, size: &'ll Value, align: Align) {
+        unsafe {
+            llvm::LLVMRustBuildMemSet(
+                self.llbuilder,
+                ptr,
+                align.bytes() as c_uint,
+                fill_byte,
+                size,
+                false,
+            );
+        }
+    }
 }
 
 /// Empty string, to be used where LLVM expects an instruction name, indicating
diff --git a/compiler/rustc_codegen_llvm/src/builder/gpu_offload.rs b/compiler/rustc_codegen_llvm/src/builder/gpu_offload.rs
new file mode 100644
index 00000000000..1280ab1442a
--- /dev/null
+++ b/compiler/rustc_codegen_llvm/src/builder/gpu_offload.rs
@@ -0,0 +1,439 @@
+use std::ffi::CString;
+
+use llvm::Linkage::*;
+use rustc_abi::Align;
+use rustc_codegen_ssa::back::write::CodegenContext;
+use rustc_codegen_ssa::traits::BaseTypeCodegenMethods;
+
+use crate::builder::SBuilder;
+use crate::common::AsCCharPtr;
+use crate::llvm::AttributePlace::Function;
+use crate::llvm::{self, Linkage, Type, Value};
+use crate::{LlvmCodegenBackend, SimpleCx, attributes};
+
+pub(crate) fn handle_gpu_code<'ll>(
+    _cgcx: &CodegenContext<LlvmCodegenBackend>,
+    cx: &'ll SimpleCx<'_>,
+) {
+    // The offload memory transfer type for each kernel
+    let mut o_types = vec![];
+    let mut kernels = vec![];
+    let offload_entry_ty = add_tgt_offload_entry(&cx);
+    for num in 0..9 {
+        let kernel = cx.get_function(&format!("kernel_{num}"));
+        if let Some(kernel) = kernel {
+            o_types.push(gen_define_handling(&cx, kernel, offload_entry_ty, num));
+            kernels.push(kernel);
+        }
+    }
+
+    gen_call_handling(&cx, &kernels, &o_types);
+}
+
+// What is our @1 here? A magic global, used in our data_{begin/update/end}_mapper:
+// @0 = private unnamed_addr constant [23 x i8] c";unknown;unknown;0;0;;\00", align 1
+// @1 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 0, i32 22, ptr @0 }, align 8
+fn generate_at_one<'ll>(cx: &'ll SimpleCx<'_>) -> &'ll llvm::Value {
+    // @0 = private unnamed_addr constant [23 x i8] c";unknown;unknown;0;0;;\00", align 1
+    let unknown_txt = ";unknown;unknown;0;0;;";
+    let c_entry_name = CString::new(unknown_txt).unwrap();
+    let c_val = c_entry_name.as_bytes_with_nul();
+    let initializer = crate::common::bytes_in_context(cx.llcx, c_val);
+    let at_zero = add_unnamed_global(&cx, &"", initializer, PrivateLinkage);
+    llvm::set_alignment(at_zero, Align::ONE);
+
+    // @1 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 0, i32 22, ptr @0 }, align 8
+    let struct_ident_ty = cx.type_named_struct("struct.ident_t");
+    let struct_elems = vec![
+        cx.get_const_i32(0),
+        cx.get_const_i32(2),
+        cx.get_const_i32(0),
+        cx.get_const_i32(22),
+        at_zero,
+    ];
+    let struct_elems_ty: Vec<_> = struct_elems.iter().map(|&x| cx.val_ty(x)).collect();
+    let initializer = crate::common::named_struct(struct_ident_ty, &struct_elems);
+    cx.set_struct_body(struct_ident_ty, &struct_elems_ty, false);
+    let at_one = add_unnamed_global(&cx, &"", initializer, PrivateLinkage);
+    llvm::set_alignment(at_one, Align::EIGHT);
+    at_one
+}
+
+pub(crate) fn add_tgt_offload_entry<'ll>(cx: &'ll SimpleCx<'_>) -> &'ll llvm::Type {
+    let offload_entry_ty = cx.type_named_struct("struct.__tgt_offload_entry");
+    let tptr = cx.type_ptr();
+    let ti64 = cx.type_i64();
+    let ti32 = cx.type_i32();
+    let ti16 = cx.type_i16();
+    // For each kernel to run on the gpu, we will later generate one entry of this type.
+    // copied from LLVM
+    // typedef struct {
+    //   uint64_t Reserved;
+    //   uint16_t Version;
+    //   uint16_t Kind;
+    //   uint32_t Flags; Flags associated with the entry (see Target Region Entry Flags)
+    //   void *Address; Address of global symbol within device image (function or global)
+    //   char *SymbolName;
+    //   uint64_t Size; Size of the entry info (0 if it is a function)
+    //   uint64_t Data;
+    //   void *AuxAddr;
+    // } __tgt_offload_entry;
+    let entry_elements = vec![ti64, ti16, ti16, ti32, tptr, tptr, ti64, ti64, tptr];
+    cx.set_struct_body(offload_entry_ty, &entry_elements, false);
+    offload_entry_ty
+}
+
+fn gen_tgt_kernel_global<'ll>(cx: &'ll SimpleCx<'_>) {
+    let kernel_arguments_ty = cx.type_named_struct("struct.__tgt_kernel_arguments");
+    let tptr = cx.type_ptr();
+    let ti64 = cx.type_i64();
+    let ti32 = cx.type_i32();
+    let tarr = cx.type_array(ti32, 3);
+
+    // Taken from the LLVM APITypes.h declaration:
+    //struct KernelArgsTy {
+    //  uint32_t Version = 0; // Version of this struct for ABI compatibility.
+    //  uint32_t NumArgs = 0; // Number of arguments in each input pointer.
+    //  void **ArgBasePtrs =
+    //      nullptr;                 // Base pointer of each argument (e.g. a struct).
+    //  void **ArgPtrs = nullptr;    // Pointer to the argument data.
+    //  int64_t *ArgSizes = nullptr; // Size of the argument data in bytes.
+    //  int64_t *ArgTypes = nullptr; // Type of the data (e.g. to / from).
+    //  void **ArgNames = nullptr;   // Name of the data for debugging, possibly null.
+    //  void **ArgMappers = nullptr; // User-defined mappers, possibly null.
+    //  uint64_t Tripcount =
+    //      0; // Tripcount for the teams / distribute loop, 0 otherwise.
+    //  struct {
+    //    uint64_t NoWait : 1; // Was this kernel spawned with a `nowait` clause.
+    //    uint64_t IsCUDA : 1; // Was this kernel spawned via CUDA.
+    //    uint64_t Unused : 62;
+    //  } Flags = {0, 0, 0};
+    //  // The number of teams (for x,y,z dimension).
+    //  uint32_t NumTeams[3] = {0, 0, 0};
+    //  // The number of threads (for x,y,z dimension).
+    //  uint32_t ThreadLimit[3] = {0, 0, 0};
+    //  uint32_t DynCGroupMem = 0; // Amount of dynamic cgroup memory requested.
+    //};
+    let kernel_elements =
+        vec![ti32, ti32, tptr, tptr, tptr, tptr, tptr, tptr, ti64, ti64, tarr, tarr, ti32];
+
+    cx.set_struct_body(kernel_arguments_ty, &kernel_elements, false);
+    // For now we don't handle kernels, so for now we just add a global dummy
+    // to make sure that the __tgt_offload_entry is defined and handled correctly.
+    cx.declare_global("my_struct_global2", kernel_arguments_ty);
+}
+
+fn gen_tgt_data_mappers<'ll>(
+    cx: &'ll SimpleCx<'_>,
+) -> (&'ll llvm::Value, &'ll llvm::Value, &'ll llvm::Value, &'ll llvm::Type) {
+    let tptr = cx.type_ptr();
+    let ti64 = cx.type_i64();
+    let ti32 = cx.type_i32();
+
+    let args = vec![tptr, ti64, ti32, tptr, tptr, tptr, tptr, tptr, tptr];
+    let mapper_fn_ty = cx.type_func(&args, cx.type_void());
+    let mapper_begin = "__tgt_target_data_begin_mapper";
+    let mapper_update = "__tgt_target_data_update_mapper";
+    let mapper_end = "__tgt_target_data_end_mapper";
+    let begin_mapper_decl = declare_offload_fn(&cx, mapper_begin, mapper_fn_ty);
+    let update_mapper_decl = declare_offload_fn(&cx, mapper_update, mapper_fn_ty);
+    let end_mapper_decl = declare_offload_fn(&cx, mapper_end, mapper_fn_ty);
+
+    let nounwind = llvm::AttributeKind::NoUnwind.create_attr(cx.llcx);
+    attributes::apply_to_llfn(begin_mapper_decl, Function, &[nounwind]);
+    attributes::apply_to_llfn(update_mapper_decl, Function, &[nounwind]);
+    attributes::apply_to_llfn(end_mapper_decl, Function, &[nounwind]);
+
+    (begin_mapper_decl, update_mapper_decl, end_mapper_decl, mapper_fn_ty)
+}
+
+fn add_priv_unnamed_arr<'ll>(cx: &SimpleCx<'ll>, name: &str, vals: &[u64]) -> &'ll llvm::Value {
+    let ti64 = cx.type_i64();
+    let mut size_val = Vec::with_capacity(vals.len());
+    for &val in vals {
+        size_val.push(cx.get_const_i64(val));
+    }
+    let initializer = cx.const_array(ti64, &size_val);
+    add_unnamed_global(cx, name, initializer, PrivateLinkage)
+}
+
+pub(crate) fn add_unnamed_global<'ll>(
+    cx: &SimpleCx<'ll>,
+    name: &str,
+    initializer: &'ll llvm::Value,
+    l: Linkage,
+) -> &'ll llvm::Value {
+    let llglobal = add_global(cx, name, initializer, l);
+    llvm::LLVMSetUnnamedAddress(llglobal, llvm::UnnamedAddr::Global);
+    llglobal
+}
+
+pub(crate) fn add_global<'ll>(
+    cx: &SimpleCx<'ll>,
+    name: &str,
+    initializer: &'ll llvm::Value,
+    l: Linkage,
+) -> &'ll llvm::Value {
+    let c_name = CString::new(name).unwrap();
+    let llglobal: &'ll llvm::Value = llvm::add_global(cx.llmod, cx.val_ty(initializer), &c_name);
+    llvm::set_global_constant(llglobal, true);
+    llvm::set_linkage(llglobal, l);
+    llvm::set_initializer(llglobal, initializer);
+    llglobal
+}
+
+fn gen_define_handling<'ll>(
+    cx: &'ll SimpleCx<'_>,
+    kernel: &'ll llvm::Value,
+    offload_entry_ty: &'ll llvm::Type,
+    num: i64,
+) -> &'ll llvm::Value {
+    let types = cx.func_params_types(cx.get_type_of_global(kernel));
+    // It seems like non-pointer values are automatically mapped. So here, we focus on pointer (or
+    // reference) types.
+    let num_ptr_types = types
+        .iter()
+        .map(|&x| matches!(cx.type_kind(x), rustc_codegen_ssa::common::TypeKind::Pointer))
+        .count();
+
+    // We do not know their size anymore at this level, so hardcode a placeholder.
+    // A follow-up pr will track these from the frontend, where we still have Rust types.
+    // Then, we will be able to figure out that e.g. `&[f32;256]` will result in 4*256 bytes.
+    // I decided that 1024 bytes is a great placeholder value for now.
+    add_priv_unnamed_arr(&cx, &format!(".offload_sizes.{num}"), &vec![1024; num_ptr_types]);
+    // Here we figure out whether something needs to be copied to the gpu (=1), from the gpu (=2),
+    // or both to and from the gpu (=3). Other values shouldn't affect us for now.
+    // A non-mutable reference or pointer will be 1, an array that's not read, but fully overwritten
+    // will be 2. For now, everything is 3, until we have our frontend set up.
+    let o_types =
+        add_priv_unnamed_arr(&cx, &format!(".offload_maptypes.{num}"), &vec![3; num_ptr_types]);
+    // Next: For each function, generate these three entries. A weak constant,
+    // the llvm.rodata entry name, and  the omp_offloading_entries value
+
+    let name = format!(".kernel_{num}.region_id");
+    let initializer = cx.get_const_i8(0);
+    let region_id = add_unnamed_global(&cx, &name, initializer, WeakAnyLinkage);
+
+    let c_entry_name = CString::new(format!("kernel_{num}")).unwrap();
+    let c_val = c_entry_name.as_bytes_with_nul();
+    let offload_entry_name = format!(".offloading.entry_name.{num}");
+
+    let initializer = crate::common::bytes_in_context(cx.llcx, c_val);
+    let llglobal = add_unnamed_global(&cx, &offload_entry_name, initializer, InternalLinkage);
+    llvm::set_alignment(llglobal, Align::ONE);
+    llvm::set_section(llglobal, c".llvm.rodata.offloading");
+
+    // Not actively used yet, for calling real kernels
+    let name = format!(".offloading.entry.kernel_{num}");
+
+    // See the __tgt_offload_entry documentation above.
+    let reserved = cx.get_const_i64(0);
+    let version = cx.get_const_i16(1);
+    let kind = cx.get_const_i16(1);
+    let flags = cx.get_const_i32(0);
+    let size = cx.get_const_i64(0);
+    let data = cx.get_const_i64(0);
+    let aux_addr = cx.const_null(cx.type_ptr());
+    let elems = vec![reserved, version, kind, flags, region_id, llglobal, size, data, aux_addr];
+
+    let initializer = crate::common::named_struct(offload_entry_ty, &elems);
+    let c_name = CString::new(name).unwrap();
+    let llglobal = llvm::add_global(cx.llmod, offload_entry_ty, &c_name);
+    llvm::set_global_constant(llglobal, true);
+    llvm::set_linkage(llglobal, WeakAnyLinkage);
+    llvm::set_initializer(llglobal, initializer);
+    llvm::set_alignment(llglobal, Align::ONE);
+    let c_section_name = CString::new(".omp_offloading_entries").unwrap();
+    llvm::set_section(llglobal, &c_section_name);
+    o_types
+}
+
+fn declare_offload_fn<'ll>(
+    cx: &'ll SimpleCx<'_>,
+    name: &str,
+    ty: &'ll llvm::Type,
+) -> &'ll llvm::Value {
+    crate::declare::declare_simple_fn(
+        cx,
+        name,
+        llvm::CallConv::CCallConv,
+        llvm::UnnamedAddr::No,
+        llvm::Visibility::Default,
+        ty,
+    )
+}
+
+// For each kernel *call*, we now use some of our previous declared globals to move data to and from
+// the gpu. We don't have a proper frontend yet, so we assume that every call to a kernel function
+// from main is intended to run on the GPU. For now, we only handle the data transfer part of it.
+// If two consecutive kernels use the same memory, we still move it to the host and back to the gpu.
+// Since in our frontend users (by default) don't have to specify data transfer, this is something
+// we should optimize in the future! We also assume that everything should be copied back and forth,
+// but sometimes we can directly zero-allocate on the device and only move back, or if something is
+// immutable, we might only copy it to the device, but not back.
+//
+// Current steps:
+// 0. Alloca some variables for the following steps
+// 1. set insert point before kernel call.
+// 2. generate all the GEPS and stores, to be used in 3)
+// 3. generate __tgt_target_data_begin calls to move data to the GPU
+//
+// unchanged: keep kernel call. Later move the kernel to the GPU
+//
+// 4. set insert point after kernel call.
+// 5. generate all the GEPS and stores, to be used in 6)
+// 6. generate __tgt_target_data_end calls to move data from the GPU
+fn gen_call_handling<'ll>(
+    cx: &'ll SimpleCx<'_>,
+    _kernels: &[&'ll llvm::Value],
+    o_types: &[&'ll llvm::Value],
+) {
+    // %struct.__tgt_bin_desc = type { i32, ptr, ptr, ptr }
+    let tptr = cx.type_ptr();
+    let ti32 = cx.type_i32();
+    let tgt_bin_desc_ty = vec![ti32, tptr, tptr, tptr];
+    let tgt_bin_desc = cx.type_named_struct("struct.__tgt_bin_desc");
+    cx.set_struct_body(tgt_bin_desc, &tgt_bin_desc_ty, false);
+
+    gen_tgt_kernel_global(&cx);
+    let (begin_mapper_decl, _, end_mapper_decl, fn_ty) = gen_tgt_data_mappers(&cx);
+
+    let main_fn = cx.get_function("main");
+    let Some(main_fn) = main_fn else { return };
+    let kernel_name = "kernel_1";
+    let call = unsafe {
+        llvm::LLVMRustGetFunctionCall(main_fn, kernel_name.as_c_char_ptr(), kernel_name.len())
+    };
+    let Some(kernel_call) = call else {
+        return;
+    };
+    let kernel_call_bb = unsafe { llvm::LLVMGetInstructionParent(kernel_call) };
+    let called = unsafe { llvm::LLVMGetCalledValue(kernel_call).unwrap() };
+    let mut builder = SBuilder::build(cx, kernel_call_bb);
+
+    let types = cx.func_params_types(cx.get_type_of_global(called));
+    let num_args = types.len() as u64;
+
+    // Step 0)
+    // %struct.__tgt_bin_desc = type { i32, ptr, ptr, ptr }
+    // %6 = alloca %struct.__tgt_bin_desc, align 8
+    unsafe { llvm::LLVMRustPositionBuilderPastAllocas(builder.llbuilder, main_fn) };
+
+    let tgt_bin_desc_alloca = builder.direct_alloca(tgt_bin_desc, Align::EIGHT, "EmptyDesc");
+
+    let ty = cx.type_array(cx.type_ptr(), num_args);
+    // Baseptr are just the input pointer to the kernel, stored in a local alloca
+    let a1 = builder.direct_alloca(ty, Align::EIGHT, ".offload_baseptrs");
+    // Ptrs are the result of a gep into the baseptr, at least for our trivial types.
+    let a2 = builder.direct_alloca(ty, Align::EIGHT, ".offload_ptrs");
+    // These represent the sizes in bytes, e.g. the entry for `&[f64; 16]` will be 8*16.
+    let ty2 = cx.type_array(cx.type_i64(), num_args);
+    let a4 = builder.direct_alloca(ty2, Align::EIGHT, ".offload_sizes");
+    // Now we allocate once per function param, a copy to be passed to one of our maps.
+    let mut vals = vec![];
+    let mut geps = vec![];
+    let i32_0 = cx.get_const_i32(0);
+    for (index, in_ty) in types.iter().enumerate() {
+        // get function arg, store it into the alloca, and read it.
+        let p = llvm::get_param(called, index as u32);
+        let name = llvm::get_value_name(p);
+        let name = str::from_utf8(&name).unwrap();
+        let arg_name = format!("{name}.addr");
+        let alloca = builder.direct_alloca(in_ty, Align::EIGHT, &arg_name);
+
+        builder.store(p, alloca, Align::EIGHT);
+        let val = builder.load(in_ty, alloca, Align::EIGHT);
+        let gep = builder.inbounds_gep(cx.type_f32(), val, &[i32_0]);
+        vals.push(val);
+        geps.push(gep);
+    }
+
+    // Step 1)
+    unsafe { llvm::LLVMRustPositionBefore(builder.llbuilder, kernel_call) };
+    builder.memset(tgt_bin_desc_alloca, cx.get_const_i8(0), cx.get_const_i64(32), Align::EIGHT);
+
+    let mapper_fn_ty = cx.type_func(&[cx.type_ptr()], cx.type_void());
+    let register_lib_decl = declare_offload_fn(&cx, "__tgt_register_lib", mapper_fn_ty);
+    let unregister_lib_decl = declare_offload_fn(&cx, "__tgt_unregister_lib", mapper_fn_ty);
+    let init_ty = cx.type_func(&[], cx.type_void());
+    let init_rtls_decl = declare_offload_fn(cx, "__tgt_init_all_rtls", init_ty);
+
+    // call void @__tgt_register_lib(ptr noundef %6)
+    builder.call(mapper_fn_ty, register_lib_decl, &[tgt_bin_desc_alloca], None);
+    // call void @__tgt_init_all_rtls()
+    builder.call(init_ty, init_rtls_decl, &[], None);
+
+    for i in 0..num_args {
+        let idx = cx.get_const_i32(i);
+        let gep1 = builder.inbounds_gep(ty, a1, &[i32_0, idx]);
+        builder.store(vals[i as usize], gep1, Align::EIGHT);
+        let gep2 = builder.inbounds_gep(ty, a2, &[i32_0, idx]);
+        builder.store(geps[i as usize], gep2, Align::EIGHT);
+        let gep3 = builder.inbounds_gep(ty2, a4, &[i32_0, idx]);
+        // As mentioned above, we don't use Rust type information yet. So for now we will just
+        // assume that we have 1024 bytes, 256 f32 values.
+        // FIXME(offload): write an offload frontend and handle arbitrary types.
+        builder.store(cx.get_const_i64(1024), gep3, Align::EIGHT);
+    }
+
+    // For now we have a very simplistic indexing scheme into our
+    // offload_{baseptrs,ptrs,sizes}. We will probably improve this along with our gpu frontend pr.
+    fn get_geps<'a, 'll>(
+        builder: &mut SBuilder<'a, 'll>,
+        cx: &'ll SimpleCx<'ll>,
+        ty: &'ll Type,
+        ty2: &'ll Type,
+        a1: &'ll Value,
+        a2: &'ll Value,
+        a4: &'ll Value,
+    ) -> (&'ll Value, &'ll Value, &'ll Value) {
+        let i32_0 = cx.get_const_i32(0);
+
+        let gep1 = builder.inbounds_gep(ty, a1, &[i32_0, i32_0]);
+        let gep2 = builder.inbounds_gep(ty, a2, &[i32_0, i32_0]);
+        let gep3 = builder.inbounds_gep(ty2, a4, &[i32_0, i32_0]);
+        (gep1, gep2, gep3)
+    }
+
+    fn generate_mapper_call<'a, 'll>(
+        builder: &mut SBuilder<'a, 'll>,
+        cx: &'ll SimpleCx<'ll>,
+        geps: (&'ll Value, &'ll Value, &'ll Value),
+        o_type: &'ll Value,
+        fn_to_call: &'ll Value,
+        fn_ty: &'ll Type,
+        num_args: u64,
+        s_ident_t: &'ll Value,
+    ) {
+        let nullptr = cx.const_null(cx.type_ptr());
+        let i64_max = cx.get_const_i64(u64::MAX);
+        let num_args = cx.get_const_i32(num_args);
+        let args =
+            vec![s_ident_t, i64_max, num_args, geps.0, geps.1, geps.2, o_type, nullptr, nullptr];
+        builder.call(fn_ty, fn_to_call, &args, None);
+    }
+
+    // Step 2)
+    let s_ident_t = generate_at_one(&cx);
+    let o = o_types[0];
+    let geps = get_geps(&mut builder, &cx, ty, ty2, a1, a2, a4);
+    generate_mapper_call(&mut builder, &cx, geps, o, begin_mapper_decl, fn_ty, num_args, s_ident_t);
+
+    // Step 3)
+    // Here we will add code for the actual kernel launches in a follow-up PR.
+    // FIXME(offload): launch kernels
+
+    // Step 4)
+    unsafe { llvm::LLVMRustPositionAfter(builder.llbuilder, kernel_call) };
+
+    let geps = get_geps(&mut builder, &cx, ty, ty2, a1, a2, a4);
+    generate_mapper_call(&mut builder, &cx, geps, o, end_mapper_decl, fn_ty, num_args, s_ident_t);
+
+    builder.call(mapper_fn_ty, unregister_lib_decl, &[tgt_bin_desc_alloca], None);
+
+    // With this we generated the following begin and end mappers. We could easily generate the
+    // update mapper in an update.
+    // call void @__tgt_target_data_begin_mapper(ptr @1, i64 -1, i32 3, ptr %27, ptr %28, ptr %29, ptr @.offload_maptypes, ptr null, ptr null)
+    // call void @__tgt_target_data_update_mapper(ptr @1, i64 -1, i32 2, ptr %46, ptr %47, ptr %48, ptr @.offload_maptypes.1, ptr null, ptr null)
+    // call void @__tgt_target_data_end_mapper(ptr @1, i64 -1, i32 3, ptr %49, ptr %50, ptr %51, ptr @.offload_maptypes, ptr null, ptr null)
+}
diff --git a/compiler/rustc_codegen_llvm/src/common.rs b/compiler/rustc_codegen_llvm/src/common.rs
index f9ab96b5789..f29fefb66f0 100644
--- a/compiler/rustc_codegen_llvm/src/common.rs
+++ b/compiler/rustc_codegen_llvm/src/common.rs
@@ -118,6 +118,10 @@ impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX> {
             r
         }
     }
+
+    pub(crate) fn const_null(&self, t: &'ll Type) -> &'ll Value {
+        unsafe { llvm::LLVMConstNull(t) }
+    }
 }
 
 impl<'ll, 'tcx> ConstCodegenMethods for CodegenCx<'ll, 'tcx> {
@@ -377,6 +381,11 @@ pub(crate) fn bytes_in_context<'ll>(llcx: &'ll llvm::Context, bytes: &[u8]) -> &
     }
 }
 
+pub(crate) fn named_struct<'ll>(ty: &'ll Type, elts: &[&'ll Value]) -> &'ll Value {
+    let len = c_uint::try_from(elts.len()).expect("LLVMConstStructInContext elements len overflow");
+    unsafe { llvm::LLVMConstNamedStruct(ty, elts.as_ptr(), len) }
+}
+
 fn struct_in_context<'ll>(
     llcx: &'ll llvm::Context,
     elts: &[&'ll Value],
diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs
index 34bed2a1d2a..ee77774c688 100644
--- a/compiler/rustc_codegen_llvm/src/context.rs
+++ b/compiler/rustc_codegen_llvm/src/context.rs
@@ -216,7 +216,7 @@ pub(crate) unsafe fn create_module<'ll>(
 
     // Ensure the data-layout values hardcoded remain the defaults.
     {
-        let tm = crate::back::write::create_informational_target_machine(tcx.sess, false);
+        let tm = crate::back::write::create_informational_target_machine(sess, false);
         unsafe {
             llvm::LLVMRustSetDataLayoutFromTargetMachine(llmod, tm.raw());
         }
@@ -685,6 +685,22 @@ impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX> {
         unsafe { llvm::LLVMConstInt(ty, val, llvm::False) }
     }
 
+    pub(crate) fn get_const_i64(&self, n: u64) -> &'ll Value {
+        self.get_const_int(self.type_i64(), n)
+    }
+
+    pub(crate) fn get_const_i32(&self, n: u64) -> &'ll Value {
+        self.get_const_int(self.type_i32(), n)
+    }
+
+    pub(crate) fn get_const_i16(&self, n: u64) -> &'ll Value {
+        self.get_const_int(self.type_i16(), n)
+    }
+
+    pub(crate) fn get_const_i8(&self, n: u64) -> &'ll Value {
+        self.get_const_int(self.type_i8(), n)
+    }
+
     pub(crate) fn get_function(&self, name: &str) -> Option<&'ll Value> {
         let name = SmallCStr::new(name);
         unsafe { llvm::LLVMGetNamedFunction((**self).borrow().llmod, name.as_ptr()) }
diff --git a/compiler/rustc_codegen_llvm/src/coverageinfo/mapgen/spans.rs b/compiler/rustc_codegen_llvm/src/coverageinfo/mapgen/spans.rs
index 39a59560c9d..574463be7ff 100644
--- a/compiler/rustc_codegen_llvm/src/coverageinfo/mapgen/spans.rs
+++ b/compiler/rustc_codegen_llvm/src/coverageinfo/mapgen/spans.rs
@@ -39,7 +39,10 @@ impl Coords {
 /// or other expansions), and if it does happen then skipping a span or function is
 /// better than an ICE or `llvm-cov` failure that the user might have no way to avoid.
 pub(crate) fn make_coords(source_map: &SourceMap, file: &SourceFile, span: Span) -> Option<Coords> {
-    let span = ensure_non_empty_span(source_map, span)?;
+    if span.is_empty() {
+        debug_assert!(false, "can't make coords from empty span: {span:?}");
+        return None;
+    }
 
     let lo = span.lo();
     let hi = span.hi();
@@ -70,29 +73,6 @@ pub(crate) fn make_coords(source_map: &SourceMap, file: &SourceFile, span: Span)
     })
 }
 
-fn ensure_non_empty_span(source_map: &SourceMap, span: Span) -> Option<Span> {
-    if !span.is_empty() {
-        return Some(span);
-    }
-
-    // The span is empty, so try to enlarge it to cover an adjacent '{' or '}'.
-    source_map
-        .span_to_source(span, |src, start, end| try {
-            // Adjusting span endpoints by `BytePos(1)` is normally a bug,
-            // but in this case we have specifically checked that the character
-            // we're skipping over is one of two specific ASCII characters, so
-            // adjusting by exactly 1 byte is correct.
-            if src.as_bytes().get(end).copied() == Some(b'{') {
-                Some(span.with_hi(span.hi() + BytePos(1)))
-            } else if start > 0 && src.as_bytes()[start - 1] == b'}' {
-                Some(span.with_lo(span.lo() - BytePos(1)))
-            } else {
-                None
-            }
-        })
-        .ok()?
-}
-
 /// If `llvm-cov` sees a source region that is improperly ordered (end < start),
 /// it will immediately exit with a fatal error. To prevent that from happening,
 /// discard regions that are improperly ordered, or might be interpreted in a
diff --git a/compiler/rustc_codegen_llvm/src/declare.rs b/compiler/rustc_codegen_llvm/src/declare.rs
index eb75716d768..960a895a203 100644
--- a/compiler/rustc_codegen_llvm/src/declare.rs
+++ b/compiler/rustc_codegen_llvm/src/declare.rs
@@ -215,7 +215,9 @@ impl<'ll, 'tcx> CodegenCx<'ll, 'tcx> {
 
         llfn
     }
+}
 
+impl<'ll, CX: Borrow<SCx<'ll>>> GenericCx<'ll, CX> {
     /// Declare a global with an intention to define it.
     ///
     /// Use this function when you intend to define a global. This function will
@@ -234,13 +236,13 @@ impl<'ll, 'tcx> CodegenCx<'ll, 'tcx> {
     ///
     /// Use this function when you intend to define a global without a name.
     pub(crate) fn define_private_global(&self, ty: &'ll Type) -> &'ll Value {
-        unsafe { llvm::LLVMRustInsertPrivateGlobal(self.llmod, ty) }
+        unsafe { llvm::LLVMRustInsertPrivateGlobal(self.llmod(), ty) }
     }
 
     /// Gets declared value by name.
     pub(crate) fn get_declared_value(&self, name: &str) -> Option<&'ll Value> {
         debug!("get_declared_value(name={:?})", name);
-        unsafe { llvm::LLVMRustGetNamedValue(self.llmod, name.as_c_char_ptr(), name.len()) }
+        unsafe { llvm::LLVMRustGetNamedValue(self.llmod(), name.as_c_char_ptr(), name.len()) }
     }
 
     /// Gets defined or externally defined (AvailableExternally linkage) value by
diff --git a/compiler/rustc_codegen_llvm/src/lib.rs b/compiler/rustc_codegen_llvm/src/lib.rs
index 6db4e122ad6..aaf21f9ada9 100644
--- a/compiler/rustc_codegen_llvm/src/lib.rs
+++ b/compiler/rustc_codegen_llvm/src/lib.rs
@@ -412,6 +412,20 @@ impl ModuleLlvm {
         }
     }
 
+    fn tm_from_cgcx(
+        cgcx: &CodegenContext<LlvmCodegenBackend>,
+        name: &str,
+        dcx: DiagCtxtHandle<'_>,
+    ) -> Result<OwnedTargetMachine, FatalError> {
+        let tm_factory_config = TargetMachineFactoryConfig::new(cgcx, name);
+        match (cgcx.tm_factory)(tm_factory_config) {
+            Ok(m) => Ok(m),
+            Err(e) => {
+                return Err(dcx.emit_almost_fatal(ParseTargetMachineConfig(e)));
+            }
+        }
+    }
+
     fn parse(
         cgcx: &CodegenContext<LlvmCodegenBackend>,
         name: &CStr,
@@ -421,13 +435,7 @@ impl ModuleLlvm {
         unsafe {
             let llcx = llvm::LLVMRustContextCreate(cgcx.fewer_names);
             let llmod_raw = back::lto::parse_module(llcx, name, buffer, dcx)?;
-            let tm_factory_config = TargetMachineFactoryConfig::new(cgcx, name.to_str().unwrap());
-            let tm = match (cgcx.tm_factory)(tm_factory_config) {
-                Ok(m) => m,
-                Err(e) => {
-                    return Err(dcx.emit_almost_fatal(ParseTargetMachineConfig(e)));
-                }
-            };
+            let tm = ModuleLlvm::tm_from_cgcx(cgcx, name.to_str().unwrap(), dcx)?;
 
             Ok(ModuleLlvm { llmod_raw, llcx, tm: ManuallyDrop::new(tm) })
         }
diff --git a/compiler/rustc_codegen_llvm/src/llvm/enzyme_ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/enzyme_ffi.rs
index c696b8d8ff2..56d756e52cc 100644
--- a/compiler/rustc_codegen_llvm/src/llvm/enzyme_ffi.rs
+++ b/compiler/rustc_codegen_llvm/src/llvm/enzyme_ffi.rs
@@ -4,7 +4,7 @@ use libc::{c_char, c_uint};
 
 use super::MetadataKindId;
 use super::ffi::{AttributeKind, BasicBlock, Metadata, Module, Type, Value};
-use crate::llvm::Bool;
+use crate::llvm::{Bool, Builder};
 
 #[link(name = "llvm-wrapper", kind = "static")]
 unsafe extern "C" {
@@ -31,6 +31,14 @@ unsafe extern "C" {
         index: c_uint,
         kind: AttributeKind,
     );
+    pub(crate) fn LLVMRustPositionBefore<'a>(B: &'a Builder<'_>, I: &'a Value);
+    pub(crate) fn LLVMRustPositionAfter<'a>(B: &'a Builder<'_>, I: &'a Value);
+    pub(crate) fn LLVMRustGetFunctionCall(
+        F: &Value,
+        name: *const c_char,
+        NameLen: libc::size_t,
+    ) -> Option<&Value>;
+
 }
 
 unsafe extern "C" {
diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
index 80a0e5c5acc..edfb29dd1be 100644
--- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
+++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
@@ -1138,6 +1138,11 @@ unsafe extern "C" {
         Count: c_uint,
         Packed: Bool,
     ) -> &'a Value;
+    pub(crate) fn LLVMConstNamedStruct<'a>(
+        StructTy: &'a Type,
+        ConstantVals: *const &'a Value,
+        Count: c_uint,
+    ) -> &'a Value;
     pub(crate) fn LLVMConstVector(ScalarConstantVals: *const &Value, Size: c_uint) -> &Value;
 
     // Constant expressions
@@ -1217,6 +1222,8 @@ unsafe extern "C" {
     ) -> &'a BasicBlock;
 
     // Operations on instructions
+    pub(crate) fn LLVMGetInstructionParent(Inst: &Value) -> &BasicBlock;
+    pub(crate) fn LLVMGetCalledValue(CallInst: &Value) -> Option<&Value>;
     pub(crate) fn LLVMIsAInstruction(Val: &Value) -> Option<&Value>;
     pub(crate) fn LLVMGetFirstBasicBlock(Fn: &Value) -> &BasicBlock;
     pub(crate) fn LLVMGetOperand(Val: &Value, Index: c_uint) -> Option<&Value>;
@@ -2557,6 +2564,7 @@ unsafe extern "C" {
 
     pub(crate) fn LLVMRustSetDataLayoutFromTargetMachine<'a>(M: &'a Module, TM: &'a TargetMachine);
 
+    pub(crate) fn LLVMRustPositionBuilderPastAllocas<'a>(B: &Builder<'a>, Fn: &'a Value);
     pub(crate) fn LLVMRustPositionBuilderAtStart<'a>(B: &Builder<'a>, BB: &'a BasicBlock);
 
     pub(crate) fn LLVMRustSetModulePICLevel(M: &Module);
diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs
index 50a7cba300b..24e0a4eb533 100644
--- a/compiler/rustc_codegen_ssa/src/back/write.rs
+++ b/compiler/rustc_codegen_ssa/src/back/write.rs
@@ -120,6 +120,7 @@ pub struct ModuleConfig {
     pub emit_lifetime_markers: bool,
     pub llvm_plugins: Vec<String>,
     pub autodiff: Vec<config::AutoDiff>,
+    pub offload: Vec<config::Offload>,
 }
 
 impl ModuleConfig {
@@ -268,6 +269,7 @@ impl ModuleConfig {
             emit_lifetime_markers: sess.emit_lifetime_markers(),
             llvm_plugins: if_regular!(sess.opts.unstable_opts.llvm_plugins.clone(), vec![]),
             autodiff: if_regular!(sess.opts.unstable_opts.autodiff.clone(), vec![]),
+            offload: if_regular!(sess.opts.unstable_opts.offload.clone(), vec![]),
         }
     }
 
diff --git a/compiler/rustc_codegen_ssa/src/mir/operand.rs b/compiler/rustc_codegen_ssa/src/mir/operand.rs
index 6a3fdb6ede1..06bedaaa4a2 100644
--- a/compiler/rustc_codegen_ssa/src/mir/operand.rs
+++ b/compiler/rustc_codegen_ssa/src/mir/operand.rs
@@ -329,20 +329,11 @@ impl<'a, 'tcx, V: CodegenObject> OperandRef<'tcx, V> {
         let offset = self.layout.fields.offset(i);
 
         if !bx.is_backend_ref(self.layout) && bx.is_backend_ref(field) {
-            if let BackendRepr::SimdVector { count, .. } = self.layout.backend_repr
-                && let BackendRepr::Memory { sized: true } = field.backend_repr
-                && count.is_power_of_two()
-            {
-                assert_eq!(field.size, self.layout.size);
-                // This is being deprecated, but for now stdarch still needs it for
-                // Newtype vector of array, e.g. #[repr(simd)] struct S([i32; 4]);
-                let place = PlaceRef::alloca(bx, field);
-                self.val.store(bx, place.val.with_type(self.layout));
-                return bx.load_operand(place);
-            } else {
-                // Part of https://github.com/rust-lang/compiler-team/issues/838
-                bug!("Non-ref type {self:?} cannot project to ref field type {field:?}");
-            }
+            // Part of https://github.com/rust-lang/compiler-team/issues/838
+            span_bug!(
+                fx.mir.span,
+                "Non-ref type {self:?} cannot project to ref field type {field:?}",
+            );
         }
 
         let val = if field.is_zst() {
diff --git a/compiler/rustc_codegen_ssa/src/mir/rvalue.rs b/compiler/rustc_codegen_ssa/src/mir/rvalue.rs
index e872f8434e5..610e2fd2311 100644
--- a/compiler/rustc_codegen_ssa/src/mir/rvalue.rs
+++ b/compiler/rustc_codegen_ssa/src/mir/rvalue.rs
@@ -869,7 +869,7 @@ impl<'a, 'tcx, Bx: BuilderMethods<'a, 'tcx>> FunctionCx<'a, 'tcx, Bx> {
                     let ltext = bx.zext(is_lt, bx.type_i8());
                     bx.unchecked_ssub(gtext, ltext)
                 } else {
-                    // These operations are those expected by `tests/codegen/integer-cmp.rs`,
+                    // These operations are those expected by `tests/codegen-llvm/integer-cmp.rs`,
                     // from <https://github.com/rust-lang/rust/pull/63767>.
                     let is_lt = bx.icmp(pred(mir::BinOp::Lt), lhs, rhs);
                     let is_ne = bx.icmp(pred(mir::BinOp::Ne), lhs, rhs);
diff --git a/compiler/rustc_const_eval/src/const_eval/machine.rs b/compiler/rustc_const_eval/src/const_eval/machine.rs
index f24fb18f83b..a18ae79f318 100644
--- a/compiler/rustc_const_eval/src/const_eval/machine.rs
+++ b/compiler/rustc_const_eval/src/const_eval/machine.rs
@@ -279,23 +279,15 @@ impl<'tcx> CompileTimeInterpCx<'tcx> {
     fn guaranteed_cmp(&mut self, a: Scalar, b: Scalar) -> InterpResult<'tcx, u8> {
         interp_ok(match (a, b) {
             // Comparisons between integers are always known.
-            (Scalar::Int { .. }, Scalar::Int { .. }) => {
-                if a == b {
-                    1
-                } else {
-                    0
-                }
-            }
-            // Comparisons of abstract pointers with null pointers are known if the pointer
-            // is in bounds, because if they are in bounds, the pointer can't be null.
-            // Inequality with integers other than null can never be known for sure.
-            (Scalar::Int(int), ptr @ Scalar::Ptr(..))
-            | (ptr @ Scalar::Ptr(..), Scalar::Int(int))
+            (Scalar::Int(a), Scalar::Int(b)) => (a == b) as u8,
+            // Comparisons of null with an arbitrary scalar can be known if `scalar_may_be_null`
+            // indicates that the scalar can definitely *not* be null.
+            (Scalar::Int(int), ptr) | (ptr, Scalar::Int(int))
                 if int.is_null() && !self.scalar_may_be_null(ptr)? =>
             {
                 0
             }
-            // Equality with integers can never be known for sure.
+            // Other ways of comparing integers and pointers can never be known for sure.
             (Scalar::Int { .. }, Scalar::Ptr(..)) | (Scalar::Ptr(..), Scalar::Int { .. }) => 2,
             // FIXME: return a `1` for when both sides are the same pointer, *except* that
             // some things (like functions and vtables) do not have stable addresses
diff --git a/compiler/rustc_const_eval/src/interpret/memory.rs b/compiler/rustc_const_eval/src/interpret/memory.rs
index 20c8e983cea..47bebf5371a 100644
--- a/compiler/rustc_const_eval/src/interpret/memory.rs
+++ b/compiler/rustc_const_eval/src/interpret/memory.rs
@@ -67,8 +67,10 @@ pub enum AllocKind {
     LiveData,
     /// A function allocation (that fn ptrs point to).
     Function,
-    /// A "virtual" allocation, used for vtables and TypeId.
-    Virtual,
+    /// A vtable allocation.
+    VTable,
+    /// A TypeId allocation.
+    TypeId,
     /// A dead allocation.
     Dead,
 }
@@ -952,7 +954,8 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
             let kind = match global_alloc {
                 GlobalAlloc::Static { .. } | GlobalAlloc::Memory { .. } => AllocKind::LiveData,
                 GlobalAlloc::Function { .. } => bug!("We already checked function pointers above"),
-                GlobalAlloc::VTable { .. } | GlobalAlloc::TypeId { .. } => AllocKind::Virtual,
+                GlobalAlloc::VTable { .. } => AllocKind::VTable,
+                GlobalAlloc::TypeId { .. } => AllocKind::TypeId,
             };
             return AllocInfo::new(size, align, kind, mutbl);
         }
@@ -997,7 +1000,7 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
         ptr: Pointer<Option<M::Provenance>>,
     ) -> InterpResult<'tcx, (Ty<'tcx>, u64)> {
         let (alloc_id, offset, _meta) = self.ptr_get_alloc_id(ptr, 0)?;
-        let GlobalAlloc::TypeId { ty } = self.tcx.global_alloc(alloc_id) else {
+        let Some(GlobalAlloc::TypeId { ty }) = self.tcx.try_get_global_alloc(alloc_id) else {
             throw_ub_format!("invalid `TypeId` value: not all bytes carry type id metadata")
         };
         interp_ok((ty, offset.bytes()))
@@ -1617,6 +1620,13 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
                 match self.ptr_try_get_alloc_id(ptr, 0) {
                     Ok((alloc_id, offset, _)) => {
                         let info = self.get_alloc_info(alloc_id);
+                        if matches!(info.kind, AllocKind::TypeId) {
+                            // We *could* actually precisely answer this question since here,
+                            // the offset *is* the integer value. But the entire point of making
+                            // this a pointer is not to leak the integer value, so we say everything
+                            // might be null.
+                            return interp_ok(true);
+                        }
                         // If the pointer is in-bounds (including "at the end"), it is definitely not null.
                         if offset <= info.size {
                             return interp_ok(false);
diff --git a/compiler/rustc_error_codes/src/error_codes/E0466.md b/compiler/rustc_error_codes/src/error_codes/E0466.md
index 7aefedbc087..28016eb395e 100644
--- a/compiler/rustc_error_codes/src/error_codes/E0466.md
+++ b/compiler/rustc_error_codes/src/error_codes/E0466.md
@@ -1,8 +1,10 @@
+#### Note: this error code is no longer emitted by the compiler.
+
 Macro import declaration was malformed.
 
 Erroneous code examples:
 
-```compile_fail,E0466
+```compile_fail
 #[macro_use(a_macro(another_macro))] // error: invalid import declaration
 extern crate core as some_crate;
 
diff --git a/compiler/rustc_expand/src/base.rs b/compiler/rustc_expand/src/base.rs
index 1928cfd9048..25ec5401111 100644
--- a/compiler/rustc_expand/src/base.rs
+++ b/compiler/rustc_expand/src/base.rs
@@ -1,3 +1,4 @@
+use std::any::Any;
 use std::default::Default;
 use std::iter;
 use std::path::Component::Prefix;
@@ -361,17 +362,13 @@ where
 }
 
 /// Represents a thing that maps token trees to Macro Results
-pub trait TTMacroExpander {
+pub trait TTMacroExpander: Any {
     fn expand<'cx>(
         &self,
         ecx: &'cx mut ExtCtxt<'_>,
         span: Span,
         input: TokenStream,
     ) -> MacroExpanderResult<'cx>;
-
-    fn get_unused_rule(&self, _rule_i: usize) -> Option<(&Ident, Span)> {
-        None
-    }
 }
 
 pub type MacroExpanderResult<'cx> = ExpandResult<Box<dyn MacResult + 'cx>, ()>;
@@ -379,7 +376,7 @@ pub type MacroExpanderResult<'cx> = ExpandResult<Box<dyn MacResult + 'cx>, ()>;
 pub type MacroExpanderFn =
     for<'cx> fn(&'cx mut ExtCtxt<'_>, Span, TokenStream) -> MacroExpanderResult<'cx>;
 
-impl<F> TTMacroExpander for F
+impl<F: 'static> TTMacroExpander for F
 where
     F: for<'cx> Fn(&'cx mut ExtCtxt<'_>, Span, TokenStream) -> MacroExpanderResult<'cx>,
 {
diff --git a/compiler/rustc_expand/src/lib.rs b/compiler/rustc_expand/src/lib.rs
index 64be7649775..b54dabbb8e2 100644
--- a/compiler/rustc_expand/src/lib.rs
+++ b/compiler/rustc_expand/src/lib.rs
@@ -22,7 +22,7 @@ mod placeholders;
 mod proc_macro_server;
 mod stats;
 
-pub use mbe::macro_rules::compile_declarative_macro;
+pub use mbe::macro_rules::{MacroRulesMacroExpander, compile_declarative_macro};
 pub mod base;
 pub mod config;
 pub mod expand;
diff --git a/compiler/rustc_expand/src/mbe/macro_rules.rs b/compiler/rustc_expand/src/mbe/macro_rules.rs
index 2d792355b27..2f713a09b95 100644
--- a/compiler/rustc_expand/src/mbe/macro_rules.rs
+++ b/compiler/rustc_expand/src/mbe/macro_rules.rs
@@ -128,7 +128,7 @@ pub(super) struct MacroRule {
     rhs: mbe::TokenTree,
 }
 
-struct MacroRulesMacroExpander {
+pub struct MacroRulesMacroExpander {
     node_id: NodeId,
     name: Ident,
     span: Span,
@@ -136,6 +136,14 @@ struct MacroRulesMacroExpander {
     rules: Vec<MacroRule>,
 }
 
+impl MacroRulesMacroExpander {
+    pub fn get_unused_rule(&self, rule_i: usize) -> Option<(&Ident, Span)> {
+        // If the rhs contains an invocation like `compile_error!`, don't report it as unused.
+        let rule = &self.rules[rule_i];
+        if has_compile_error_macro(&rule.rhs) { None } else { Some((&self.name, rule.lhs_span)) }
+    }
+}
+
 impl TTMacroExpander for MacroRulesMacroExpander {
     fn expand<'cx>(
         &self,
@@ -154,12 +162,6 @@ impl TTMacroExpander for MacroRulesMacroExpander {
             &self.rules,
         ))
     }
-
-    fn get_unused_rule(&self, rule_i: usize) -> Option<(&Ident, Span)> {
-        // If the rhs contains an invocation like `compile_error!`, don't report it as unused.
-        let rule = &self.rules[rule_i];
-        if has_compile_error_macro(&rule.rhs) { None } else { Some((&self.name, rule.lhs_span)) }
-    }
 }
 
 struct DummyExpander(ErrorGuaranteed);
diff --git a/compiler/rustc_feature/src/builtin_attrs.rs b/compiler/rustc_feature/src/builtin_attrs.rs
index 74872504b79..96df6aa19bc 100644
--- a/compiler/rustc_feature/src/builtin_attrs.rs
+++ b/compiler/rustc_feature/src/builtin_attrs.rs
@@ -490,7 +490,8 @@ pub static BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[
     ),
     ungated!(no_link, Normal, template!(Word), WarnFollowing, EncodeCrossCrate::No),
     ungated!(repr, Normal, template!(List: "C"), DuplicatesOk, EncodeCrossCrate::No),
-    gated!(align, Normal, template!(List: "alignment"), DuplicatesOk, EncodeCrossCrate::No, fn_align, experimental!(align)),
+    // FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
+    gated!(rustc_align, Normal, template!(List: "alignment"), DuplicatesOk, EncodeCrossCrate::No, fn_align, experimental!(rustc_align)),
     ungated!(unsafe(Edition2024) export_name, Normal, template!(NameValueStr: "name"), FutureWarnPreceding, EncodeCrossCrate::No),
     ungated!(unsafe(Edition2024) link_section, Normal, template!(NameValueStr: "name"), FutureWarnPreceding, EncodeCrossCrate::No),
     ungated!(unsafe(Edition2024) no_mangle, Normal, template!(Word), WarnFollowing, EncodeCrossCrate::No),
diff --git a/compiler/rustc_hir/src/hir.rs b/compiler/rustc_hir/src/hir.rs
index e7898648c2b..e83f6a1df72 100644
--- a/compiler/rustc_hir/src/hir.rs
+++ b/compiler/rustc_hir/src/hir.rs
@@ -1302,6 +1302,7 @@ impl AttributeExt for Attribute {
             // FIXME: should not be needed anymore when all attrs are parsed
             Attribute::Parsed(AttributeKind::Deprecation { span, .. }) => *span,
             Attribute::Parsed(AttributeKind::DocComment { span, .. }) => *span,
+            Attribute::Parsed(AttributeKind::MacroUse { span, .. }) => *span,
             Attribute::Parsed(AttributeKind::MayDangle(span)) => *span,
             Attribute::Parsed(AttributeKind::Ignore { span, .. }) => *span,
             Attribute::Parsed(AttributeKind::AutomaticallyDerived(span)) => *span,
diff --git a/compiler/rustc_hir/src/lang_items.rs b/compiler/rustc_hir/src/lang_items.rs
index 6347f1bfa71..75c04b23ed6 100644
--- a/compiler/rustc_hir/src/lang_items.rs
+++ b/compiler/rustc_hir/src/lang_items.rs
@@ -345,9 +345,6 @@ language_item_table! {
     OwnedBox,                sym::owned_box,           owned_box,                  Target::Struct,         GenericRequirement::Minimum(1);
     GlobalAlloc,             sym::global_alloc_ty,     global_alloc_ty,            Target::Struct,         GenericRequirement::None;
 
-    // Experimental lang item for Miri
-    PtrUnique,               sym::ptr_unique,          ptr_unique,                 Target::Struct,         GenericRequirement::Exact(1);
-
     PhantomData,             sym::phantom_data,        phantom_data,               Target::Struct,         GenericRequirement::Exact(1);
 
     ManuallyDrop,            sym::manually_drop,       manually_drop,              Target::Struct,         GenericRequirement::None;
diff --git a/compiler/rustc_hir_analysis/src/check_unused.rs b/compiler/rustc_hir_analysis/src/check_unused.rs
index 0133b1e8fcd..3fb33c741c9 100644
--- a/compiler/rustc_hir_analysis/src/check_unused.rs
+++ b/compiler/rustc_hir_analysis/src/check_unused.rs
@@ -18,7 +18,7 @@ pub(super) fn check_unused_traits(tcx: TyCtxt<'_>, (): ()) {
         used_trait_imports.extend_unord(imports.items().copied());
     }
 
-    for &id in tcx.maybe_unused_trait_imports(()) {
+    for &id in tcx.resolutions(()).maybe_unused_trait_imports.iter() {
         debug_assert_eq!(tcx.def_kind(id), DefKind::Use);
         if tcx.visibility(id).is_public() {
             continue;
diff --git a/compiler/rustc_interface/src/tests.rs b/compiler/rustc_interface/src/tests.rs
index 360b5629e9d..8771bb44050 100644
--- a/compiler/rustc_interface/src/tests.rs
+++ b/compiler/rustc_interface/src/tests.rs
@@ -13,10 +13,10 @@ use rustc_session::config::{
     CoverageOptions, DebugInfo, DumpMonoStatsFormat, ErrorOutputType, ExternEntry, ExternLocation,
     Externs, FmtDebug, FunctionReturn, InliningThreshold, Input, InstrumentCoverage,
     InstrumentXRay, LinkSelfContained, LinkerPluginLto, LocationDetail, LtoCli, MirIncludeSpans,
-    NextSolverConfig, OomStrategy, Options, OutFileName, OutputType, OutputTypes, PAuthKey, PacRet,
-    Passes, PatchableFunctionEntry, Polonius, ProcMacroExecutionStrategy, Strip, SwitchWithOptPath,
-    SymbolManglingVersion, WasiExecModel, build_configuration, build_session_options,
-    rustc_optgroups,
+    NextSolverConfig, Offload, OomStrategy, Options, OutFileName, OutputType, OutputTypes,
+    PAuthKey, PacRet, Passes, PatchableFunctionEntry, Polonius, ProcMacroExecutionStrategy, Strip,
+    SwitchWithOptPath, SymbolManglingVersion, WasiExecModel, build_configuration,
+    build_session_options, rustc_optgroups,
 };
 use rustc_session::lint::Level;
 use rustc_session::search_paths::SearchPath;
@@ -833,6 +833,7 @@ fn test_unstable_options_tracking_hash() {
     tracked!(no_profiler_runtime, true);
     tracked!(no_trait_vptr, true);
     tracked!(no_unique_section_names, true);
+    tracked!(offload, vec![Offload::Enable]);
     tracked!(on_broken_pipe, OnBrokenPipe::Kill);
     tracked!(oom, OomStrategy::Panic);
     tracked!(osx_rpath_install_name, true);
diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
index 90aa9188c83..82568ed4ae1 100644
--- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
+++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
@@ -1591,12 +1591,49 @@ extern "C" LLVMValueRef LLVMRustBuildMemSet(LLVMBuilderRef B, LLVMValueRef Dst,
                                       MaybeAlign(DstAlign), IsVolatile));
 }
 
+extern "C" void LLVMRustPositionBuilderPastAllocas(LLVMBuilderRef B,
+                                                   LLVMValueRef Fn) {
+  Function *F = unwrap<Function>(Fn);
+  unwrap(B)->SetInsertPointPastAllocas(F);
+}
 extern "C" void LLVMRustPositionBuilderAtStart(LLVMBuilderRef B,
                                                LLVMBasicBlockRef BB) {
   auto Point = unwrap(BB)->getFirstInsertionPt();
   unwrap(B)->SetInsertPoint(unwrap(BB), Point);
 }
 
+extern "C" void LLVMRustPositionBefore(LLVMBuilderRef B, LLVMValueRef Instr) {
+  if (auto I = dyn_cast<Instruction>(unwrap<Value>(Instr))) {
+    unwrap(B)->SetInsertPoint(I);
+  }
+}
+
+extern "C" void LLVMRustPositionAfter(LLVMBuilderRef B, LLVMValueRef Instr) {
+  if (auto I = dyn_cast<Instruction>(unwrap<Value>(Instr))) {
+    auto J = I->getNextNonDebugInstruction();
+    unwrap(B)->SetInsertPoint(J);
+  }
+}
+
+extern "C" LLVMValueRef
+LLVMRustGetFunctionCall(LLVMValueRef Fn, const char *Name, size_t NameLen) {
+  auto targetName = StringRef(Name, NameLen);
+  Function *F = unwrap<Function>(Fn);
+  for (auto &BB : *F) {
+    for (auto &I : BB) {
+      if (auto *callInst = llvm::dyn_cast<llvm::CallBase>(&I)) {
+        const llvm::Function *calledFunc = callInst->getCalledFunction();
+        if (calledFunc && calledFunc->getName() == targetName) {
+          // Found a call to the target function
+          return wrap(callInst);
+        }
+      }
+    }
+  }
+
+  return nullptr;
+}
+
 extern "C" bool LLVMRustConstIntGetZExtValue(LLVMValueRef CV, uint64_t *value) {
   auto C = unwrap<llvm::ConstantInt>(CV);
   if (C->getBitWidth() > 64)
diff --git a/compiler/rustc_macros/src/lib.rs b/compiler/rustc_macros/src/lib.rs
index 1006ea3ba10..101f5ccb7a4 100644
--- a/compiler/rustc_macros/src/lib.rs
+++ b/compiler/rustc_macros/src/lib.rs
@@ -21,6 +21,7 @@ mod symbols;
 mod try_from;
 mod type_foldable;
 mod type_visitable;
+mod visitable;
 
 // Reads the rust version (e.g. "1.75.0") from the CFG_RELEASE env var and
 // produces a `RustcVersion` literal containing that version (e.g.
@@ -101,6 +102,16 @@ decl_derive!(
     /// visited (and its type is not required to implement `TypeVisitable`).
     type_visitable::type_visitable_derive
 );
+decl_derive!(
+    [Walkable, attributes(visitable)] =>
+    /// Derives `Walkable` for the annotated `struct` or `enum` (`union` is not supported).
+    ///
+    /// Each field of the struct or enum variant will be visited in definition order, using the
+    /// `Walkable` implementation for its type. However, if a field of a struct or an enum
+    /// variant is annotated with `#[visitable(ignore)]` then that field will not be
+    /// visited (and its type is not required to implement `Walkable`).
+    visitable::visitable_derive
+);
 decl_derive!([Lift, attributes(lift)] => lift::lift_derive);
 decl_derive!(
     [Diagnostic, attributes(
diff --git a/compiler/rustc_macros/src/visitable.rs b/compiler/rustc_macros/src/visitable.rs
new file mode 100644
index 00000000000..a7a82538eab
--- /dev/null
+++ b/compiler/rustc_macros/src/visitable.rs
@@ -0,0 +1,82 @@
+use quote::quote;
+use synstructure::BindingInfo;
+
+pub(super) fn visitable_derive(mut s: synstructure::Structure<'_>) -> proc_macro2::TokenStream {
+    if let syn::Data::Union(_) = s.ast().data {
+        panic!("cannot derive on union")
+    }
+
+    let has_attr = |bind: &BindingInfo<'_>, name| {
+        let mut found = false;
+        bind.ast().attrs.iter().for_each(|attr| {
+            if !attr.path().is_ident("visitable") {
+                return;
+            }
+            let _ = attr.parse_nested_meta(|nested| {
+                if nested.path.is_ident(name) {
+                    found = true;
+                }
+                Ok(())
+            });
+        });
+        found
+    };
+
+    let get_attr = |bind: &BindingInfo<'_>, name: &str| {
+        let mut content = None;
+        bind.ast().attrs.iter().for_each(|attr| {
+            if !attr.path().is_ident("visitable") {
+                return;
+            }
+            let _ = attr.parse_nested_meta(|nested| {
+                if nested.path.is_ident(name) {
+                    let value = nested.value()?;
+                    let value = value.parse()?;
+                    content = Some(value);
+                }
+                Ok(())
+            });
+        });
+        content
+    };
+
+    s.add_bounds(synstructure::AddBounds::Generics);
+    s.bind_with(|_| synstructure::BindStyle::Ref);
+    let ref_visit = s.each(|bind| {
+        let extra = get_attr(bind, "extra").unwrap_or(quote! {});
+        if has_attr(bind, "ignore") {
+            quote! {}
+        } else {
+            quote! { rustc_ast_ir::try_visit!(crate::visit::Visitable::visit(#bind, __visitor, (#extra))) }
+        }
+    });
+
+    s.bind_with(|_| synstructure::BindStyle::RefMut);
+    let mut_visit = s.each(|bind| {
+        let extra = get_attr(bind, "extra").unwrap_or(quote! {});
+        if has_attr(bind, "ignore") {
+            quote! {}
+        } else {
+            quote! { crate::mut_visit::MutVisitable::visit_mut(#bind, __visitor, (#extra)) }
+        }
+    });
+
+    s.gen_impl(quote! {
+        gen impl<'__ast, __V> crate::visit::Walkable<'__ast, __V> for @Self
+            where __V: crate::visit::Visitor<'__ast>,
+        {
+            fn walk_ref(&'__ast self, __visitor: &mut __V) -> __V::Result {
+                match *self { #ref_visit }
+                <__V::Result as rustc_ast_ir::visit::VisitorResult>::output()
+            }
+        }
+
+        gen impl<__V> crate::mut_visit::MutWalkable<__V> for @Self
+            where __V: crate::mut_visit::MutVisitor,
+        {
+            fn walk_mut(&mut self, __visitor: &mut __V) {
+                match *self { #mut_visit }
+            }
+        }
+    })
+}
diff --git a/compiler/rustc_middle/src/middle/codegen_fn_attrs.rs b/compiler/rustc_middle/src/middle/codegen_fn_attrs.rs
index 6eae3b51e29..34a29acdc85 100644
--- a/compiler/rustc_middle/src/middle/codegen_fn_attrs.rs
+++ b/compiler/rustc_middle/src/middle/codegen_fn_attrs.rs
@@ -70,6 +70,7 @@ pub struct CodegenFnAttrs {
     /// switching between multiple instruction sets.
     pub instruction_set: Option<InstructionSetAttr>,
     /// The `#[align(...)]` attribute. Determines the alignment of the function body.
+    // FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
     pub alignment: Option<Align>,
     /// The `#[patchable_function_entry(...)]` attribute. Indicates how many nops should be around
     /// the function entry.
diff --git a/compiler/rustc_middle/src/query/mod.rs b/compiler/rustc_middle/src/query/mod.rs
index ae8c8259be4..ad7f4973e23 100644
--- a/compiler/rustc_middle/src/query/mod.rs
+++ b/compiler/rustc_middle/src/query/mod.rs
@@ -2285,9 +2285,6 @@ rustc_queries! {
     query upvars_mentioned(def_id: DefId) -> Option<&'tcx FxIndexMap<hir::HirId, hir::Upvar>> {
         desc { |tcx| "collecting upvars mentioned in `{}`", tcx.def_path_str(def_id) }
     }
-    query maybe_unused_trait_imports(_: ()) -> &'tcx FxIndexSet<LocalDefId> {
-        desc { "fetching potentially unused trait imports" }
-    }
 
     /// All available crates in the graph, including those that should not be user-facing
     /// (such as private crates).
diff --git a/compiler/rustc_middle/src/ty/context.rs b/compiler/rustc_middle/src/ty/context.rs
index 7e6bcfee025..51db92ecd78 100644
--- a/compiler/rustc_middle/src/ty/context.rs
+++ b/compiler/rustc_middle/src/ty/context.rs
@@ -3428,8 +3428,6 @@ pub struct DeducedParamAttrs {
 }
 
 pub fn provide(providers: &mut Providers) {
-    providers.maybe_unused_trait_imports =
-        |tcx, ()| &tcx.resolutions(()).maybe_unused_trait_imports;
     providers.extern_mod_stmt_cnum =
         |tcx, id| tcx.resolutions(()).extern_crate_map.get(&id).cloned();
     providers.is_panic_runtime =
diff --git a/compiler/rustc_middle/src/ty/inhabitedness/mod.rs b/compiler/rustc_middle/src/ty/inhabitedness/mod.rs
index 2a336cc21f4..7eb74b52b44 100644
--- a/compiler/rustc_middle/src/ty/inhabitedness/mod.rs
+++ b/compiler/rustc_middle/src/ty/inhabitedness/mod.rs
@@ -43,7 +43,6 @@
 //! This code should only compile in modules where the uninhabitedness of `Foo`
 //! is visible.
 
-use rustc_span::sym;
 use rustc_type_ir::TyKind::*;
 use tracing::instrument;
 
@@ -85,21 +84,6 @@ impl<'tcx> VariantDef {
         InhabitedPredicate::all(
             tcx,
             self.fields.iter().map(|field| {
-                // Unstable fields are always considered to be inhabited. In the future,
-                // this could be extended to be conditional on the field being unstable
-                // only within the module that's querying the inhabitedness, like:
-                //     `let pred = pred.or(InhabitedPredicate::IsUnstable(field.did));`
-                // but this is unnecessary for now, since it would only affect nightly-only
-                // code or code within the standard library itself.
-                // HACK: We filter out `rustc_private` fields since with the flag
-                // `-Zforce-unstable-if-unmarked` we consider all unmarked fields to be
-                // unstable when building the compiler.
-                if tcx
-                    .lookup_stability(field.did)
-                    .is_some_and(|stab| stab.is_unstable() && stab.feature != sym::rustc_private)
-                {
-                    return InhabitedPredicate::True;
-                }
                 let pred = tcx.type_of(field.did).instantiate_identity().inhabited_predicate(tcx);
                 if adt.is_enum() {
                     return pred;
diff --git a/compiler/rustc_mir_transform/src/add_retag.rs b/compiler/rustc_mir_transform/src/add_retag.rs
index 3c29d4624b7..fc08c1df870 100644
--- a/compiler/rustc_mir_transform/src/add_retag.rs
+++ b/compiler/rustc_mir_transform/src/add_retag.rs
@@ -4,7 +4,6 @@
 //! of MIR building, and only after this pass we think of the program has having the
 //! normal MIR semantics.
 
-use rustc_hir::LangItem;
 use rustc_middle::mir::*;
 use rustc_middle::ty::{self, Ty, TyCtxt};
 
@@ -28,7 +27,6 @@ fn may_contain_reference<'tcx>(ty: Ty<'tcx>, depth: u32, tcx: TyCtxt<'tcx>) -> b
         // References and Boxes (`noalias` sources)
         ty::Ref(..) => true,
         ty::Adt(..) if ty.is_box() => true,
-        ty::Adt(adt, _) if tcx.is_lang_item(adt.did(), LangItem::PtrUnique) => true,
         // Compound types: recurse
         ty::Array(ty, _) | ty::Slice(ty) => {
             // This does not branch so we keep the depth the same.
diff --git a/compiler/rustc_mir_transform/src/coverage/spans.rs b/compiler/rustc_mir_transform/src/coverage/spans.rs
index ec76076020e..ddeae093df5 100644
--- a/compiler/rustc_mir_transform/src/coverage/spans.rs
+++ b/compiler/rustc_mir_transform/src/coverage/spans.rs
@@ -1,7 +1,8 @@
 use rustc_data_structures::fx::FxHashSet;
 use rustc_middle::mir;
 use rustc_middle::ty::TyCtxt;
-use rustc_span::{DesugaringKind, ExpnKind, MacroKind, Span};
+use rustc_span::source_map::SourceMap;
+use rustc_span::{BytePos, DesugaringKind, ExpnKind, MacroKind, Span};
 use tracing::instrument;
 
 use crate::coverage::graph::{BasicCoverageBlock, CoverageGraph};
@@ -83,8 +84,18 @@ pub(super) fn extract_refined_covspans<'tcx>(
     // Discard any span that overlaps with a hole.
     discard_spans_overlapping_holes(&mut covspans, &holes);
 
-    // Perform more refinement steps after holes have been dealt with.
+    // Discard spans that overlap in unwanted ways.
     let mut covspans = remove_unwanted_overlapping_spans(covspans);
+
+    // For all empty spans, either enlarge them to be non-empty, or discard them.
+    let source_map = tcx.sess.source_map();
+    covspans.retain_mut(|covspan| {
+        let Some(span) = ensure_non_empty_span(source_map, covspan.span) else { return false };
+        covspan.span = span;
+        true
+    });
+
+    // Merge covspans that can be merged.
     covspans.dedup_by(|b, a| a.merge_if_eligible(b));
 
     code_mappings.extend(covspans.into_iter().map(|Covspan { span, bcb }| {
@@ -230,3 +241,26 @@ fn compare_spans(a: Span, b: Span) -> std::cmp::Ordering {
         // - Both have the same start and span A extends further right
         .then_with(|| Ord::cmp(&a.hi(), &b.hi()).reverse())
 }
+
+fn ensure_non_empty_span(source_map: &SourceMap, span: Span) -> Option<Span> {
+    if !span.is_empty() {
+        return Some(span);
+    }
+
+    // The span is empty, so try to enlarge it to cover an adjacent '{' or '}'.
+    source_map
+        .span_to_source(span, |src, start, end| try {
+            // Adjusting span endpoints by `BytePos(1)` is normally a bug,
+            // but in this case we have specifically checked that the character
+            // we're skipping over is one of two specific ASCII characters, so
+            // adjusting by exactly 1 byte is correct.
+            if src.as_bytes().get(end).copied() == Some(b'{') {
+                Some(span.with_hi(span.hi() + BytePos(1)))
+            } else if start > 0 && src.as_bytes()[start - 1] == b'}' {
+                Some(span.with_lo(span.lo() - BytePos(1)))
+            } else {
+                None
+            }
+        })
+        .ok()?
+}
diff --git a/compiler/rustc_mir_transform/src/elaborate_drops.rs b/compiler/rustc_mir_transform/src/elaborate_drops.rs
index b4fa2be1d00..58dff4514a0 100644
--- a/compiler/rustc_mir_transform/src/elaborate_drops.rs
+++ b/compiler/rustc_mir_transform/src/elaborate_drops.rs
@@ -253,8 +253,8 @@ struct ElaborateDropsCtxt<'a, 'tcx> {
 }
 
 impl fmt::Debug for ElaborateDropsCtxt<'_, '_> {
-    fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> fmt::Result {
-        Ok(())
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        f.debug_struct("ElaborateDropsCtxt").finish_non_exhaustive()
     }
 }
 
diff --git a/compiler/rustc_mir_transform/src/impossible_predicates.rs b/compiler/rustc_mir_transform/src/impossible_predicates.rs
index 86e2bf6cb3c..b03518de00a 100644
--- a/compiler/rustc_mir_transform/src/impossible_predicates.rs
+++ b/compiler/rustc_mir_transform/src/impossible_predicates.rs
@@ -27,7 +27,7 @@
 //! it's usually never invoked in this way.
 
 use rustc_middle::mir::{Body, START_BLOCK, TerminatorKind};
-use rustc_middle::ty::{TyCtxt, TypeVisitableExt};
+use rustc_middle::ty::{TyCtxt, TypeFlags, TypeVisitableExt};
 use rustc_trait_selection::traits;
 use tracing::trace;
 
@@ -36,14 +36,23 @@ use crate::pass_manager::MirPass;
 pub(crate) struct ImpossiblePredicates;
 
 impl<'tcx> MirPass<'tcx> for ImpossiblePredicates {
+    #[tracing::instrument(level = "trace", skip(self, tcx, body))]
     fn run_pass(&self, tcx: TyCtxt<'tcx>, body: &mut Body<'tcx>) {
-        let predicates = tcx
-            .predicates_of(body.source.def_id())
-            .predicates
-            .iter()
-            .filter_map(|(p, _)| if p.is_global() { Some(*p) } else { None });
-        if traits::impossible_predicates(tcx, traits::elaborate(tcx, predicates).collect()) {
-            trace!("found unsatisfiable predicates for {:?}", body.source);
+        tracing::trace!(def_id = ?body.source.def_id());
+        let predicates = tcx.predicates_of(body.source.def_id()).instantiate_identity(tcx);
+        tracing::trace!(?predicates);
+        let predicates = predicates.predicates.into_iter().filter(|p| {
+            !p.has_type_flags(
+                // Only consider global clauses to simplify.
+                TypeFlags::HAS_FREE_LOCAL_NAMES
+                // Clauses that refer to unevaluated constants as they cause cycles.
+                | TypeFlags::HAS_CT_PROJECTION,
+            )
+        });
+        let predicates: Vec<_> = traits::elaborate(tcx, predicates).collect();
+        tracing::trace!(?predicates);
+        if predicates.references_error() || traits::impossible_predicates(tcx, predicates) {
+            trace!("found unsatisfiable predicates");
             // Clear the body to only contain a single `unreachable` statement.
             let bbs = body.basic_blocks.as_mut();
             bbs.raw.truncate(1);
diff --git a/compiler/rustc_mir_transform/src/shim.rs b/compiler/rustc_mir_transform/src/shim.rs
index cdbc74cdfa8..6c65b072bec 100644
--- a/compiler/rustc_mir_transform/src/shim.rs
+++ b/compiler/rustc_mir_transform/src/shim.rs
@@ -434,8 +434,8 @@ pub(super) struct DropShimElaborator<'a, 'tcx> {
 }
 
 impl fmt::Debug for DropShimElaborator<'_, '_> {
-    fn fmt(&self, _f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
-        Ok(())
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
+        f.debug_struct("DropShimElaborator").finish_non_exhaustive()
     }
 }
 
diff --git a/compiler/rustc_mir_transform/src/unreachable_prop.rs b/compiler/rustc_mir_transform/src/unreachable_prop.rs
index 13fb5b3e56f..c417a9272f2 100644
--- a/compiler/rustc_mir_transform/src/unreachable_prop.rs
+++ b/compiler/rustc_mir_transform/src/unreachable_prop.rs
@@ -75,7 +75,7 @@ fn remove_successors_from_switch<'tcx>(
     let is_unreachable = |bb| unreachable_blocks.contains(&bb);
 
     // If there are multiple targets, we want to keep information about reachability for codegen.
-    // For example (see tests/codegen/match-optimizes-away.rs)
+    // For example (see tests/codegen-llvm/match-optimizes-away.rs)
     //
     // pub enum Two { A, B }
     // pub fn identity(x: Two) -> Two {
diff --git a/compiler/rustc_mir_transform/src/validate.rs b/compiler/rustc_mir_transform/src/validate.rs
index 659ca4df159..5860072d541 100644
--- a/compiler/rustc_mir_transform/src/validate.rs
+++ b/compiler/rustc_mir_transform/src/validate.rs
@@ -721,6 +721,15 @@ impl<'a, 'tcx> Visitor<'tcx> for TypeChecker<'a, 'tcx> {
                             );
                         }
 
+                        if adt_def.repr().simd() {
+                            self.fail(
+                                location,
+                                format!(
+                                    "Projecting into SIMD type {adt_def:?} is banned by MCP#838"
+                                ),
+                            );
+                        }
+
                         let var = parent_ty.variant_index.unwrap_or(FIRST_VARIANT);
                         let Some(field) = adt_def.variant(var).fields.get(f) else {
                             fail_out_of_bounds(self, location);
diff --git a/compiler/rustc_parse/src/lexer/diagnostics.rs b/compiler/rustc_parse/src/lexer/diagnostics.rs
index 6de001fc998..947f3df179f 100644
--- a/compiler/rustc_parse/src/lexer/diagnostics.rs
+++ b/compiler/rustc_parse/src/lexer/diagnostics.rs
@@ -126,23 +126,29 @@ pub(super) fn report_suspicious_mismatch_block(
     }
 }
 
-pub(crate) fn make_unclosed_delims_error(
-    unmatched: UnmatchedDelim,
-    psess: &ParseSess,
-) -> Option<Diag<'_>> {
-    // `None` here means an `Eof` was found. We already emit those errors elsewhere, we add them to
-    // `unmatched_delims` only for error recovery in the `Parser`.
-    let found_delim = unmatched.found_delim?;
-    let mut spans = vec![unmatched.found_span];
-    if let Some(sp) = unmatched.unclosed_span {
-        spans.push(sp);
-    };
-    let err = psess.dcx().create_err(MismatchedClosingDelimiter {
-        spans,
-        delimiter: pprust::token_kind_to_string(&found_delim.as_close_token_kind()).to_string(),
-        unmatched: unmatched.found_span,
-        opening_candidate: unmatched.candidate_span,
-        unclosed: unmatched.unclosed_span,
-    });
-    Some(err)
+pub(crate) fn make_errors_for_mismatched_closing_delims<'psess>(
+    unmatcheds: &[UnmatchedDelim],
+    psess: &'psess ParseSess,
+) -> Vec<Diag<'psess>> {
+    unmatcheds
+        .iter()
+        .filter_map(|unmatched| {
+            // `None` here means an `Eof` was found. We already emit those errors elsewhere, we add them to
+            // `unmatched_delims` only for error recovery in the `Parser`.
+            let found_delim = unmatched.found_delim?;
+            let mut spans = vec![unmatched.found_span];
+            if let Some(sp) = unmatched.unclosed_span {
+                spans.push(sp);
+            };
+            let err = psess.dcx().create_err(MismatchedClosingDelimiter {
+                spans,
+                delimiter: pprust::token_kind_to_string(&found_delim.as_close_token_kind())
+                    .to_string(),
+                unmatched: unmatched.found_span,
+                opening_candidate: unmatched.candidate_span,
+                unclosed: unmatched.unclosed_span,
+            });
+            Some(err)
+        })
+        .collect()
 }
diff --git a/compiler/rustc_parse/src/lexer/mod.rs b/compiler/rustc_parse/src/lexer/mod.rs
index 60d275bf2b4..85af5a615ae 100644
--- a/compiler/rustc_parse/src/lexer/mod.rs
+++ b/compiler/rustc_parse/src/lexer/mod.rs
@@ -1,4 +1,4 @@
-use diagnostics::make_unclosed_delims_error;
+use diagnostics::make_errors_for_mismatched_closing_delims;
 use rustc_ast::ast::{self, AttrStyle};
 use rustc_ast::token::{self, CommentKind, Delimiter, IdentIsRaw, Token, TokenKind};
 use rustc_ast::tokenstream::TokenStream;
@@ -71,27 +71,23 @@ pub(crate) fn lex_token_trees<'psess, 'src>(
     };
     let res = lexer.lex_token_trees(/* is_delimited */ false);
 
-    let mut unmatched_delims: Vec<_> = lexer
-        .diag_info
-        .unmatched_delims
-        .into_iter()
-        .filter_map(|unmatched_delim| make_unclosed_delims_error(unmatched_delim, psess))
-        .collect();
+    let mut unmatched_closing_delims: Vec<_> =
+        make_errors_for_mismatched_closing_delims(&lexer.diag_info.unmatched_delims, psess);
 
     match res {
         Ok((_open_spacing, stream)) => {
-            if unmatched_delims.is_empty() {
+            if unmatched_closing_delims.is_empty() {
                 Ok(stream)
             } else {
                 // Return error if there are unmatched delimiters or unclosed delimiters.
-                Err(unmatched_delims)
+                Err(unmatched_closing_delims)
             }
         }
         Err(errs) => {
             // We emit delimiter mismatch errors first, then emit the unclosing delimiter mismatch
             // because the delimiter mismatch is more likely to be the root cause of error
-            unmatched_delims.extend(errs);
-            Err(unmatched_delims)
+            unmatched_closing_delims.extend(errs);
+            Err(unmatched_closing_delims)
         }
     }
 }
diff --git a/compiler/rustc_parse/src/lexer/tokentrees.rs b/compiler/rustc_parse/src/lexer/tokentrees.rs
index 64748199f28..634f4c30b26 100644
--- a/compiler/rustc_parse/src/lexer/tokentrees.rs
+++ b/compiler/rustc_parse/src/lexer/tokentrees.rs
@@ -51,45 +51,6 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
         }
     }
 
-    fn eof_err(&mut self) -> Diag<'psess> {
-        let msg = "this file contains an unclosed delimiter";
-        let mut err = self.dcx().struct_span_err(self.token.span, msg);
-
-        let unclosed_delimiter_show_limit = 5;
-        let len = usize::min(unclosed_delimiter_show_limit, self.diag_info.open_delimiters.len());
-        for &(_, span) in &self.diag_info.open_delimiters[..len] {
-            err.span_label(span, "unclosed delimiter");
-            self.diag_info.unmatched_delims.push(UnmatchedDelim {
-                found_delim: None,
-                found_span: self.token.span,
-                unclosed_span: Some(span),
-                candidate_span: None,
-            });
-        }
-
-        if let Some((_, span)) = self.diag_info.open_delimiters.get(unclosed_delimiter_show_limit)
-            && self.diag_info.open_delimiters.len() >= unclosed_delimiter_show_limit + 2
-        {
-            err.span_label(
-                *span,
-                format!(
-                    "another {} unclosed delimiters begin from here",
-                    self.diag_info.open_delimiters.len() - unclosed_delimiter_show_limit
-                ),
-            );
-        }
-
-        if let Some((delim, _)) = self.diag_info.open_delimiters.last() {
-            report_suspicious_mismatch_block(
-                &mut err,
-                &self.diag_info,
-                self.psess.source_map(),
-                *delim,
-            )
-        }
-        err
-    }
-
     fn lex_token_tree_open_delim(
         &mut self,
         open_delim: Delimiter,
@@ -206,13 +167,7 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
             } else if let Some(glued) = self.token.glue(&next_tok) {
                 self.token = glued;
             } else {
-                let this_spacing = if next_tok.is_punct() {
-                    Spacing::Joint
-                } else if next_tok == token::Eof {
-                    Spacing::Alone
-                } else {
-                    Spacing::JointHidden
-                };
+                let this_spacing = self.calculate_spacing(&next_tok);
                 break (this_spacing, next_tok);
             }
         };
@@ -223,23 +178,64 @@ impl<'psess, 'src> Lexer<'psess, 'src> {
     // Cut-down version of `bump` used when the token kind is known in advance.
     fn bump_minimal(&mut self) -> Spacing {
         let (next_tok, is_next_tok_preceded_by_whitespace) = self.next_token_from_cursor();
-
         let this_spacing = if is_next_tok_preceded_by_whitespace {
             Spacing::Alone
         } else {
-            if next_tok.is_punct() {
-                Spacing::Joint
-            } else if next_tok == token::Eof {
-                Spacing::Alone
-            } else {
-                Spacing::JointHidden
-            }
+            self.calculate_spacing(&next_tok)
         };
-
         self.token = next_tok;
         this_spacing
     }
 
+    fn calculate_spacing(&self, next_tok: &Token) -> Spacing {
+        if next_tok.is_punct() {
+            Spacing::Joint
+        } else if *next_tok == token::Eof {
+            Spacing::Alone
+        } else {
+            Spacing::JointHidden
+        }
+    }
+
+    fn eof_err(&mut self) -> Diag<'psess> {
+        const UNCLOSED_DELIMITER_SHOW_LIMIT: usize = 5;
+        let msg = "this file contains an unclosed delimiter";
+        let mut err = self.dcx().struct_span_err(self.token.span, msg);
+
+        let len = usize::min(UNCLOSED_DELIMITER_SHOW_LIMIT, self.diag_info.open_delimiters.len());
+        for &(_, span) in &self.diag_info.open_delimiters[..len] {
+            err.span_label(span, "unclosed delimiter");
+            self.diag_info.unmatched_delims.push(UnmatchedDelim {
+                found_delim: None,
+                found_span: self.token.span,
+                unclosed_span: Some(span),
+                candidate_span: None,
+            });
+        }
+
+        if let Some((_, span)) = self.diag_info.open_delimiters.get(UNCLOSED_DELIMITER_SHOW_LIMIT)
+            && self.diag_info.open_delimiters.len() >= UNCLOSED_DELIMITER_SHOW_LIMIT + 2
+        {
+            err.span_label(
+                *span,
+                format!(
+                    "another {} unclosed delimiters begin from here",
+                    self.diag_info.open_delimiters.len() - UNCLOSED_DELIMITER_SHOW_LIMIT
+                ),
+            );
+        }
+
+        if let Some((delim, _)) = self.diag_info.open_delimiters.last() {
+            report_suspicious_mismatch_block(
+                &mut err,
+                &self.diag_info,
+                self.psess.source_map(),
+                *delim,
+            )
+        }
+        err
+    }
+
     fn close_delim_err(&mut self, delim: Delimiter) -> Diag<'psess> {
         // An unexpected closing delimiter (i.e., there is no matching opening delimiter).
         let token_str = token_to_string(&self.token);
diff --git a/compiler/rustc_parse/src/validate_attr.rs b/compiler/rustc_parse/src/validate_attr.rs
index a476f0db37e..ed7fb774908 100644
--- a/compiler/rustc_parse/src/validate_attr.rs
+++ b/compiler/rustc_parse/src/validate_attr.rs
@@ -294,13 +294,17 @@ pub fn check_builtin_meta_item(
                 | sym::rustc_paren_sugar
                 | sym::type_const
                 | sym::repr
-                | sym::align
+                // FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres
+                // ambiguity
+                | sym::rustc_align
                 | sym::deprecated
                 | sym::optimize
                 | sym::pointee
                 | sym::cold
                 | sym::target_feature
                 | sym::rustc_allow_const_fn_unstable
+                | sym::macro_use
+                | sym::macro_escape
                 | sym::naked
                 | sym::no_mangle
                 | sym::non_exhaustive
diff --git a/compiler/rustc_passes/messages.ftl b/compiler/rustc_passes/messages.ftl
index 51e23edb9bb..6a28fe2617e 100644
--- a/compiler/rustc_passes/messages.ftl
+++ b/compiler/rustc_passes/messages.ftl
@@ -14,7 +14,7 @@ passes_abi_of =
     fn_abi_of({$fn_name}) = {$fn_abi}
 
 passes_align_attr_application =
-    `#[align(...)]` should be applied to a function item
+    `#[rustc_align(...)]` should be applied to a function item
     .label = not a function item
 
 passes_align_on_fields =
@@ -22,7 +22,7 @@ passes_align_on_fields =
     .warn = {-passes_previously_accepted}
 
 passes_align_should_be_repr_align =
-    `#[align(...)]` is not supported on {$item} items
+    `#[rustc_align(...)]` is not supported on {$item} items
     .suggestion = use `#[repr(align(...))]` instead
 
 passes_allow_incoherent_impl =
@@ -605,7 +605,7 @@ passes_repr_align_greater_than_target_max =
 
 passes_repr_align_should_be_align =
     `#[repr(align(...))]` is not supported on {$item} items
-    .help = use `#[align(...)]` instead
+    .help = use `#[rustc_align(...)]` instead
 
 passes_repr_conflicting =
     conflicting representation hints
diff --git a/compiler/rustc_passes/src/check_attr.rs b/compiler/rustc_passes/src/check_attr.rs
index 3ec6a1124a6..04c1933f243 100644
--- a/compiler/rustc_passes/src/check_attr.rs
+++ b/compiler/rustc_passes/src/check_attr.rs
@@ -227,6 +227,12 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
                 Attribute::Parsed(AttributeKind::LinkSection { span: attr_span, .. }) => {
                     self.check_link_section(hir_id, *attr_span, span, target)
                 }
+                Attribute::Parsed(AttributeKind::MacroUse { span, .. }) => {
+                    self.check_macro_use(hir_id, sym::macro_use, *span, target)
+                }
+                Attribute::Parsed(AttributeKind::MacroEscape(span)) => {
+                    self.check_macro_use(hir_id, sym::macro_escape, *span, target)
+                }
                 Attribute::Parsed(AttributeKind::Naked(attr_span)) => {
                     self.check_naked(hir_id, *attr_span, span, target)
                 }
@@ -362,9 +368,6 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
                         [sym::ffi_pure, ..] => self.check_ffi_pure(attr.span(), attrs, target),
                         [sym::ffi_const, ..] => self.check_ffi_const(attr.span(), target),
                         [sym::link, ..] => self.check_link(hir_id, attr, span, target),
-                        [sym::macro_use, ..] | [sym::macro_escape, ..] => {
-                            self.check_macro_use(hir_id, attr, target)
-                        }
                         [sym::path, ..] => self.check_generic_attr_unparsed(hir_id, attr, target, Target::Mod),
                         [sym::macro_export, ..] => self.check_macro_export(hir_id, attr, target),
                         [sym::should_panic, ..] => {
@@ -1970,6 +1973,7 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
     }
 
     /// Checks if the `#[align]` attributes on `item` are valid.
+    // FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
     fn check_align(
         &self,
         span: Span,
@@ -2410,17 +2414,14 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
         }
     }
 
-    fn check_macro_use(&self, hir_id: HirId, attr: &Attribute, target: Target) {
-        let Some(name) = attr.name() else {
-            return;
-        };
+    fn check_macro_use(&self, hir_id: HirId, name: Symbol, attr_span: Span, target: Target) {
         match target {
             Target::ExternCrate | Target::Mod => {}
             _ => {
                 self.tcx.emit_node_span_lint(
                     UNUSED_ATTRIBUTES,
                     hir_id,
-                    attr.span(),
+                    attr_span,
                     errors::MacroUse { name },
                 );
             }
@@ -2473,7 +2474,6 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
         // Warn on useless empty attributes.
         // FIXME(jdonszelmann): this lint should be moved to attribute parsing, see `AcceptContext::warn_empty_attribute`
         let note = if attr.has_any_name(&[
-            sym::macro_use,
             sym::allow,
             sym::expect,
             sym::warn,
diff --git a/compiler/rustc_pattern_analysis/src/rustc.rs b/compiler/rustc_pattern_analysis/src/rustc.rs
index ee72b676b38..0c1b0d622f2 100644
--- a/compiler/rustc_pattern_analysis/src/rustc.rs
+++ b/compiler/rustc_pattern_analysis/src/rustc.rs
@@ -16,7 +16,7 @@ use rustc_middle::ty::{
 };
 use rustc_middle::{bug, span_bug};
 use rustc_session::lint;
-use rustc_span::{DUMMY_SP, ErrorGuaranteed, Span, sym};
+use rustc_span::{DUMMY_SP, ErrorGuaranteed, Span};
 
 use crate::constructor::Constructor::*;
 use crate::constructor::{
@@ -238,10 +238,7 @@ impl<'p, 'tcx: 'p> RustcPatCtxt<'p, 'tcx> {
                         let is_visible =
                             adt.is_enum() || field.vis.is_accessible_from(cx.module, cx.tcx);
                         let is_uninhabited = cx.is_uninhabited(*ty);
-                        let is_unstable = cx.tcx.lookup_stability(field.did).is_some_and(|stab| {
-                            stab.is_unstable() && stab.feature != sym::rustc_private
-                        });
-                        let skip = is_uninhabited && (!is_visible || is_unstable);
+                        let skip = is_uninhabited && !is_visible;
                         (ty, PrivateUninhabitedField(skip))
                     });
                     cx.dropless_arena.alloc_from_iter(tys)
diff --git a/compiler/rustc_public/src/alloc.rs b/compiler/rustc_public/src/alloc.rs
index d2db6c08bbc..75ad31022ff 100644
--- a/compiler/rustc_public/src/alloc.rs
+++ b/compiler/rustc_public/src/alloc.rs
@@ -1,4 +1,4 @@
-//! Memory allocation implementation for StableMIR.
+//! Memory allocation implementation for rustc_public.
 //!
 //! This module is responsible for constructing stable components.
 //! All operations requiring rustc queries must be delegated
@@ -7,8 +7,8 @@
 use rustc_abi::Align;
 use rustc_middle::mir::ConstValue;
 use rustc_middle::mir::interpret::AllocRange;
-use rustc_public_bridge::bridge::SmirError;
-use rustc_public_bridge::context::SmirCtxt;
+use rustc_public_bridge::bridge::Error as _;
+use rustc_public_bridge::context::CompilerCtxt;
 use rustc_public_bridge::{Tables, alloc};
 
 use super::Error;
@@ -35,7 +35,7 @@ pub(crate) fn new_allocation<'tcx>(
     ty: rustc_middle::ty::Ty<'tcx>,
     const_value: ConstValue<'tcx>,
     tables: &mut Tables<'tcx, BridgeTys>,
-    cx: &SmirCtxt<'tcx, BridgeTys>,
+    cx: &CompilerCtxt<'tcx, BridgeTys>,
 ) -> Allocation {
     try_new_allocation(ty, const_value, tables, cx)
         .unwrap_or_else(|_| panic!("Failed to convert: {const_value:?} to {ty:?}"))
@@ -46,7 +46,7 @@ pub(crate) fn try_new_allocation<'tcx>(
     ty: rustc_middle::ty::Ty<'tcx>,
     const_value: ConstValue<'tcx>,
     tables: &mut Tables<'tcx, BridgeTys>,
-    cx: &SmirCtxt<'tcx, BridgeTys>,
+    cx: &CompilerCtxt<'tcx, BridgeTys>,
 ) -> Result<Allocation, Error> {
     let layout = alloc::create_ty_and_layout(cx, ty).map_err(|e| Error::from_internal(e))?;
     match const_value {
@@ -59,7 +59,7 @@ pub(crate) fn try_new_allocation<'tcx>(
         }
         ConstValue::Indirect { alloc_id, offset } => {
             let alloc = alloc::try_new_indirect(alloc_id, cx);
-            use rustc_public_bridge::context::SmirAllocRange;
+            use rustc_public_bridge::context::AllocRangeHelpers;
             Ok(allocation_filter(&alloc.0, cx.alloc_range(offset, layout.size), tables, cx))
         }
     }
@@ -70,7 +70,7 @@ pub(super) fn allocation_filter<'tcx>(
     alloc: &rustc_middle::mir::interpret::Allocation,
     alloc_range: AllocRange,
     tables: &mut Tables<'tcx, BridgeTys>,
-    cx: &SmirCtxt<'tcx, BridgeTys>,
+    cx: &CompilerCtxt<'tcx, BridgeTys>,
 ) -> Allocation {
     alloc::allocation_filter(alloc, alloc_range, tables, cx)
 }
diff --git a/compiler/rustc_public/src/compiler_interface.rs b/compiler/rustc_public/src/compiler_interface.rs
index d15438c2b80..5a09c3b24f0 100644
--- a/compiler/rustc_public/src/compiler_interface.rs
+++ b/compiler/rustc_public/src/compiler_interface.rs
@@ -1,13 +1,13 @@
 //! Define the interface with the Rust compiler.
 //!
-//! StableMIR users should not use any of the items in this module directly.
+//! rustc_public users should not use any of the items in this module directly.
 //! These APIs have no stability guarantee.
 
 use std::cell::Cell;
 
 use rustc_hir::def::DefKind;
-use rustc_public_bridge::context::SmirCtxt;
-use rustc_public_bridge::{Bridge, SmirContainer};
+use rustc_public_bridge::context::CompilerCtxt;
+use rustc_public_bridge::{Bridge, Container};
 use tracing::debug;
 
 use crate::abi::{FnAbi, Layout, LayoutShape, ReprOptions};
@@ -66,13 +66,13 @@ impl Bridge for BridgeTys {
     type Allocation = crate::ty::Allocation;
 }
 
-/// Stable public API for querying compiler information.
+/// Public API for querying compiler information.
 ///
-/// All queries are delegated to [`rustc_public_bridge::context::SmirCtxt`] that provides
+/// All queries are delegated to [`rustc_public_bridge::context::CompilerCtxt`] that provides
 /// similar APIs but based on internal rustc constructs.
 ///
 /// Do not use this directly. This is currently used in the macro expansion.
-pub(crate) trait SmirInterface {
+pub(crate) trait CompilerInterface {
     fn entry_fn(&self) -> Option<CrateItem>;
     /// Retrieve all items of the local crate that have a MIR associated with them.
     fn all_local_items(&self) -> CrateItems;
@@ -316,7 +316,7 @@ pub(crate) trait SmirInterface {
     fn associated_items(&self, def_id: DefId) -> AssocItems;
 }
 
-impl<'tcx> SmirInterface for SmirContainer<'tcx, BridgeTys> {
+impl<'tcx> CompilerInterface for Container<'tcx, BridgeTys> {
     fn entry_fn(&self) -> Option<CrateItem> {
         let mut tables = self.tables.borrow_mut();
         let cx = &*self.cx.borrow();
@@ -567,7 +567,7 @@ impl<'tcx> SmirInterface for SmirContainer<'tcx, BridgeTys> {
             DefKind::Fn => ForeignItemKind::Fn(tables.fn_def(def_id)),
             DefKind::Static { .. } => ForeignItemKind::Static(tables.static_def(def_id)),
             DefKind::ForeignTy => {
-                use rustc_public_bridge::context::SmirTy;
+                use rustc_public_bridge::context::TyHelpers;
                 ForeignItemKind::Type(tables.intern_ty(cx.new_foreign(def_id)))
             }
             def_kind => unreachable!("Unexpected kind for a foreign item: {:?}", def_kind),
@@ -1059,36 +1059,36 @@ impl<'tcx> SmirInterface for SmirContainer<'tcx, BridgeTys> {
     }
 }
 
-// A thread local variable that stores a pointer to [`SmirInterface`].
+// A thread local variable that stores a pointer to [`CompilerInterface`].
 scoped_tls::scoped_thread_local!(static TLV: Cell<*const ()>);
 
-pub(crate) fn run<F, T>(interface: &dyn SmirInterface, f: F) -> Result<T, Error>
+pub(crate) fn run<F, T>(interface: &dyn CompilerInterface, f: F) -> Result<T, Error>
 where
     F: FnOnce() -> T,
 {
     if TLV.is_set() {
-        Err(Error::from("StableMIR already running"))
+        Err(Error::from("rustc_public already running"))
     } else {
         let ptr: *const () = (&raw const interface) as _;
         TLV.set(&Cell::new(ptr), || Ok(f()))
     }
 }
 
-/// Execute the given function with access the [`SmirInterface`].
+/// Execute the given function with access the [`CompilerInterface`].
 ///
 /// I.e., This function will load the current interface and calls a function with it.
 /// Do not nest these, as that will ICE.
-pub(crate) fn with<R>(f: impl FnOnce(&dyn SmirInterface) -> R) -> R {
+pub(crate) fn with<R>(f: impl FnOnce(&dyn CompilerInterface) -> R) -> R {
     assert!(TLV.is_set());
     TLV.with(|tlv| {
         let ptr = tlv.get();
         assert!(!ptr.is_null());
-        f(unsafe { *(ptr as *const &dyn SmirInterface) })
+        f(unsafe { *(ptr as *const &dyn CompilerInterface) })
     })
 }
 
 fn smir_crate<'tcx>(
-    cx: &SmirCtxt<'tcx, BridgeTys>,
+    cx: &CompilerCtxt<'tcx, BridgeTys>,
     crate_num: rustc_span::def_id::CrateNum,
 ) -> Crate {
     let name = cx.crate_name(crate_num);
diff --git a/compiler/rustc_public/src/error.rs b/compiler/rustc_public/src/error.rs
index bc2124d1716..3d75a4bd315 100644
--- a/compiler/rustc_public/src/error.rs
+++ b/compiler/rustc_public/src/error.rs
@@ -1,5 +1,5 @@
 //! When things go wrong, we need some error handling.
-//! There are a few different types of errors in StableMIR:
+//! There are a few different types of errors in rustc_public:
 //!
 //! - [CompilerError]: This represents errors that can be raised when invoking the compiler.
 //! - [Error]: Generic error that represents the reason why a request that could not be fulfilled.
@@ -7,7 +7,7 @@
 use std::fmt::{Debug, Display, Formatter};
 use std::{fmt, io};
 
-use rustc_public_bridge::bridge::SmirError;
+use rustc_public_bridge::bridge;
 
 macro_rules! error {
      ($fmt: literal $(,)?) => { Error(format!($fmt)) };
@@ -32,7 +32,7 @@ pub enum CompilerError<T> {
 #[derive(Clone, Debug, Eq, PartialEq)]
 pub struct Error(pub(crate) String);
 
-impl SmirError for Error {
+impl bridge::Error for Error {
     fn new(msg: String) -> Self {
         Self(msg)
     }
diff --git a/compiler/rustc_public/src/lib.rs b/compiler/rustc_public/src/lib.rs
index e320c4eca71..958b3b26478 100644
--- a/compiler/rustc_public/src/lib.rs
+++ b/compiler/rustc_public/src/lib.rs
@@ -24,7 +24,7 @@ use std::{fmt, io};
 
 pub(crate) use rustc_public_bridge::IndexedVal;
 use rustc_public_bridge::Tables;
-use rustc_public_bridge::context::SmirCtxt;
+use rustc_public_bridge::context::CompilerCtxt;
 /// Export the rustc_internal APIs. Note that this module has no stability
 /// guarantees and it is not taken into account for semver.
 #[cfg(feature = "rustc_internal")]
@@ -288,7 +288,7 @@ impl rustc_public_bridge::bridge::Allocation<compiler_interface::BridgeTys>
         align: u64,
         mutability: rustc_middle::mir::Mutability,
         tables: &mut Tables<'tcx, compiler_interface::BridgeTys>,
-        cx: &SmirCtxt<'tcx, compiler_interface::BridgeTys>,
+        cx: &CompilerCtxt<'tcx, compiler_interface::BridgeTys>,
     ) -> Self {
         Self {
             bytes,
diff --git a/compiler/rustc_public/src/mir/alloc.rs b/compiler/rustc_public/src/mir/alloc.rs
index 9a94551f3ec..07a979f3811 100644
--- a/compiler/rustc_public/src/mir/alloc.rs
+++ b/compiler/rustc_public/src/mir/alloc.rs
@@ -9,7 +9,7 @@ use crate::target::{Endian, MachineInfo};
 use crate::ty::{Allocation, Binder, ExistentialTraitRef, Ty};
 use crate::{Error, IndexedVal, with};
 
-/// An allocation in the SMIR global memory can be either a function pointer,
+/// An allocation in the rustc_public's IR global memory can be either a function pointer,
 /// a static, or a "real" allocation with some data in it.
 #[derive(Debug, Clone, Eq, PartialEq, Serialize)]
 pub enum GlobalAlloc {
diff --git a/compiler/rustc_public/src/mir/body.rs b/compiler/rustc_public/src/mir/body.rs
index 28a7aa6e758..3320b98cd61 100644
--- a/compiler/rustc_public/src/mir/body.rs
+++ b/compiler/rustc_public/src/mir/body.rs
@@ -10,7 +10,7 @@ use crate::ty::{
 };
 use crate::{Error, Opaque, Span, Symbol};
 
-/// The SMIR representation of a single function.
+/// The rustc_public's IR representation of a single function.
 #[derive(Clone, Debug, Serialize)]
 pub struct Body {
     pub blocks: Vec<BasicBlock>,
@@ -771,8 +771,8 @@ pub enum VarDebugInfoContents {
 // In MIR ProjectionElem is parameterized on the second Field argument and the Index argument. This
 // is so it can be used for both Places (for which the projection elements are of type
 // ProjectionElem<Local, Ty>) and user-provided type annotations (for which the projection elements
-// are of type ProjectionElem<(), ()>). In SMIR we don't need this generality, so we just use
-// ProjectionElem for Places.
+// are of type ProjectionElem<(), ()>).
+// In rustc_public's IR we don't need this generality, so we just use ProjectionElem for Places.
 #[derive(Clone, Debug, Eq, PartialEq, Serialize)]
 pub enum ProjectionElem {
     /// Dereference projections (e.g. `*_1`) project to the address referenced by the base place.
diff --git a/compiler/rustc_public/src/mir/mono.rs b/compiler/rustc_public/src/mir/mono.rs
index c85f0fa36f7..d488f5a25c7 100644
--- a/compiler/rustc_public/src/mir/mono.rs
+++ b/compiler/rustc_public/src/mir/mono.rs
@@ -1,7 +1,7 @@
 use std::fmt::{Debug, Formatter};
 use std::io;
 
-use rustc_public_bridge::bridge::SmirError;
+use rustc_public_bridge::bridge;
 use serde::Serialize;
 
 use crate::abi::FnAbi;
@@ -62,7 +62,7 @@ impl Instance {
     /// For more information on fallback body, see <https://github.com/rust-lang/rust/issues/93145>.
     ///
     /// This call is much cheaper than `instance.body().is_some()`, since it doesn't try to build
-    /// the StableMIR body.
+    /// the rustc_public's IR body.
     pub fn has_body(&self) -> bool {
         with(|cx| cx.has_body(self.def.def_id()))
     }
@@ -120,9 +120,9 @@ impl Instance {
     /// Resolve an instance starting from a function definition and generic arguments.
     pub fn resolve(def: FnDef, args: &GenericArgs) -> Result<Instance, Error> {
         with(|context| {
-            context
-                .resolve_instance(def, args)
-                .ok_or_else(|| Error::new(format!("Failed to resolve `{def:?}` with `{args:?}`")))
+            context.resolve_instance(def, args).ok_or_else(|| {
+                bridge::Error::new(format!("Failed to resolve `{def:?}` with `{args:?}`"))
+            })
         })
     }
 
@@ -134,9 +134,9 @@ impl Instance {
     /// Resolve an instance for a given function pointer.
     pub fn resolve_for_fn_ptr(def: FnDef, args: &GenericArgs) -> Result<Instance, Error> {
         with(|context| {
-            context
-                .resolve_for_fn_ptr(def, args)
-                .ok_or_else(|| Error::new(format!("Failed to resolve `{def:?}` with `{args:?}`")))
+            context.resolve_for_fn_ptr(def, args).ok_or_else(|| {
+                bridge::Error::new(format!("Failed to resolve `{def:?}` with `{args:?}`"))
+            })
         })
     }
 
@@ -147,9 +147,9 @@ impl Instance {
         kind: ClosureKind,
     ) -> Result<Instance, Error> {
         with(|context| {
-            context
-                .resolve_closure(def, args, kind)
-                .ok_or_else(|| Error::new(format!("Failed to resolve `{def:?}` with `{args:?}`")))
+            context.resolve_closure(def, args, kind).ok_or_else(|| {
+                bridge::Error::new(format!("Failed to resolve `{def:?}` with `{args:?}`"))
+            })
         })
     }
 
@@ -157,7 +157,7 @@ impl Instance {
     ///
     /// Allow users to check if this shim can be ignored when called directly.
     ///
-    /// We have decided not to export different types of Shims to StableMIR users, however, this
+    /// We have decided not to export different types of Shims to rustc_public users, however, this
     /// is a query that can be very helpful for users when processing DropGlue.
     ///
     /// When generating code for a Drop terminator, users can ignore an empty drop glue.
@@ -201,7 +201,7 @@ impl TryFrom<CrateItem> for Instance {
             if !context.requires_monomorphization(def_id) {
                 Ok(context.mono_instance(def_id))
             } else {
-                Err(Error::new("Item requires monomorphization".to_string()))
+                Err(bridge::Error::new("Item requires monomorphization".to_string()))
             }
         })
     }
@@ -217,7 +217,7 @@ impl TryFrom<Instance> for CrateItem {
             if value.kind == InstanceKind::Item && context.has_body(value.def.def_id()) {
                 Ok(CrateItem(context.instance_def_id(value.def)))
             } else {
-                Err(Error::new(format!("Item kind `{:?}` cannot be converted", value.kind)))
+                Err(bridge::Error::new(format!("Item kind `{:?}` cannot be converted", value.kind)))
             }
         })
     }
@@ -263,7 +263,7 @@ impl TryFrom<CrateItem> for StaticDef {
         if matches!(value.kind(), ItemKind::Static) {
             Ok(StaticDef(value.0))
         } else {
-            Err(Error::new(format!("Expected a static item, but found: {value:?}")))
+            Err(bridge::Error::new(format!("Expected a static item, but found: {value:?}")))
         }
     }
 }
diff --git a/compiler/rustc_public/src/mir/pretty.rs b/compiler/rustc_public/src/mir/pretty.rs
index f496d80053e..a433df2dba1 100644
--- a/compiler/rustc_public/src/mir/pretty.rs
+++ b/compiler/rustc_public/src/mir/pretty.rs
@@ -1,4 +1,4 @@
-//! Implement methods to pretty print stable MIR body.
+//! Implement methods to pretty print rustc_public's IR body.
 use std::fmt::Debug;
 use std::io::Write;
 use std::{fmt, io, iter};
diff --git a/compiler/rustc_public/src/mir/visit.rs b/compiler/rustc_public/src/mir/visit.rs
index 7dc99d1d1e1..04c4d4d2a82 100644
--- a/compiler/rustc_public/src/mir/visit.rs
+++ b/compiler/rustc_public/src/mir/visit.rs
@@ -1,4 +1,4 @@
-//! # The Stable MIR Visitor
+//! # The rustc_public's IR Visitor
 //!
 //! ## Overview
 //!
diff --git a/compiler/rustc_public/src/rustc_internal/mod.rs b/compiler/rustc_public/src/rustc_internal/mod.rs
index 01354fc7bd4..225c811ab3a 100644
--- a/compiler/rustc_public/src/rustc_internal/mod.rs
+++ b/compiler/rustc_public/src/rustc_internal/mod.rs
@@ -1,13 +1,13 @@
-//! Module that implements the bridge between Stable MIR and internal compiler MIR.
+//! Module that implements the bridge between rustc_public's IR and internal compiler MIR.
 //!
 //! For that, we define APIs that will temporarily be public to 3P that exposes rustc internal APIs
-//! until stable MIR is complete.
+//! until rustc_public's IR is complete.
 
 use std::cell::{Cell, RefCell};
 
 use rustc_middle::ty::TyCtxt;
-use rustc_public_bridge::context::SmirCtxt;
-use rustc_public_bridge::{Bridge, SmirContainer, Tables};
+use rustc_public_bridge::context::CompilerCtxt;
+use rustc_public_bridge::{Bridge, Container, Tables};
 use rustc_span::def_id::CrateNum;
 use scoped_tls::scoped_thread_local;
 
@@ -26,7 +26,7 @@ pub mod pretty;
 ///
 /// # Panics
 ///
-/// This function will panic if StableMIR has not been properly initialized.
+/// This function will panic if rustc_public has not been properly initialized.
 pub fn stable<'tcx, S: Stable<'tcx>>(item: S) -> S::T {
     with_container(|tables, cx| item.stable(tables, cx))
 }
@@ -41,7 +41,7 @@ pub fn stable<'tcx, S: Stable<'tcx>>(item: S) -> S::T {
 ///
 /// # Panics
 ///
-/// This function will panic if StableMIR has not been properly initialized.
+/// This function will panic if rustc_public has not been properly initialized.
 pub fn internal<'tcx, S>(tcx: TyCtxt<'tcx>, item: S) -> S::T<'tcx>
 where
     S: RustcInternal,
@@ -57,10 +57,10 @@ pub fn crate_num(item: &crate::Crate) -> CrateNum {
 }
 
 // A thread local variable that stores a pointer to the tables mapping between TyCtxt
-// datastructures and stable MIR datastructures
+// datastructures and rustc_public's IR datastructures
 scoped_thread_local! (static TLV: Cell<*const ()>);
 
-pub(crate) fn init<'tcx, F, T, B: Bridge>(container: &SmirContainer<'tcx, B>, f: F) -> T
+pub(crate) fn init<'tcx, F, T, B: Bridge>(container: &Container<'tcx, B>, f: F) -> T
 where
     F: FnOnce() -> T,
 {
@@ -72,13 +72,13 @@ where
 /// Loads the current context and calls a function with it.
 /// Do not nest these, as that will ICE.
 pub(crate) fn with_container<R, B: Bridge>(
-    f: impl for<'tcx> FnOnce(&mut Tables<'tcx, B>, &SmirCtxt<'tcx, B>) -> R,
+    f: impl for<'tcx> FnOnce(&mut Tables<'tcx, B>, &CompilerCtxt<'tcx, B>) -> R,
 ) -> R {
     assert!(TLV.is_set());
     TLV.with(|tlv| {
         let ptr = tlv.get();
         assert!(!ptr.is_null());
-        let container = ptr as *const SmirContainer<'_, B>;
+        let container = ptr as *const Container<'_, B>;
         let mut tables = unsafe { (*container).tables.borrow_mut() };
         let cx = unsafe { (*container).cx.borrow() };
         f(&mut *tables, &*cx)
@@ -89,8 +89,8 @@ pub fn run<F, T>(tcx: TyCtxt<'_>, f: F) -> Result<T, Error>
 where
     F: FnOnce() -> T,
 {
-    let smir_cx = RefCell::new(SmirCtxt::new(tcx));
-    let container = SmirContainer { tables: RefCell::new(Tables::default()), cx: smir_cx };
+    let compiler_cx = RefCell::new(CompilerCtxt::new(tcx));
+    let container = Container { tables: RefCell::new(Tables::default()), cx: compiler_cx };
 
     crate::compiler_interface::run(&container, || init(&container, f))
 }
@@ -176,7 +176,7 @@ macro_rules! optional {
 
 /// Prefer using [run!] and [run_with_tcx] instead.
 ///
-/// This macro implements the instantiation of a StableMIR driver, and it will invoke
+/// This macro implements the instantiation of a rustc_public driver, and it will invoke
 /// the given callback after the compiler analyses.
 ///
 /// The third argument determines whether the callback requires `tcx` as an argument.
@@ -191,7 +191,7 @@ macro_rules! run_driver {
         use rustc_public::CompilerError;
         use std::ops::ControlFlow;
 
-        pub struct StableMir<B = (), C = (), F = fn($($crate::optional!($with_tcx TyCtxt))?) -> ControlFlow<B, C>>
+        pub struct RustcPublic<B = (), C = (), F = fn($($crate::optional!($with_tcx TyCtxt))?) -> ControlFlow<B, C>>
         where
             B: Send,
             C: Send,
@@ -201,15 +201,15 @@ macro_rules! run_driver {
             result: Option<ControlFlow<B, C>>,
         }
 
-        impl<B, C, F> StableMir<B, C, F>
+        impl<B, C, F> RustcPublic<B, C, F>
         where
             B: Send,
             C: Send,
             F: FnOnce($($crate::optional!($with_tcx TyCtxt))?) -> ControlFlow<B, C> + Send,
         {
-            /// Creates a new `StableMir` instance, with given test_function and arguments.
+            /// Creates a new `RustcPublic` instance, with given test_function and arguments.
             pub fn new(callback: F) -> Self {
-                StableMir { callback: Some(callback), result: None }
+                RustcPublic { callback: Some(callback), result: None }
             }
 
             /// Runs the compiler against given target and tests it with `test_function`
@@ -236,7 +236,7 @@ macro_rules! run_driver {
             }
         }
 
-        impl<B, C, F> Callbacks for StableMir<B, C, F>
+        impl<B, C, F> Callbacks for RustcPublic<B, C, F>
         where
             B: Send,
             C: Send,
@@ -265,6 +265,6 @@ macro_rules! run_driver {
             }
         }
 
-        StableMir::new($callback).run($args)
+        RustcPublic::new($callback).run($args)
     }};
 }
diff --git a/compiler/rustc_public/src/rustc_internal/pretty.rs b/compiler/rustc_public/src/rustc_internal/pretty.rs
index 28c5280fe04..83522e51977 100644
--- a/compiler/rustc_public/src/rustc_internal/pretty.rs
+++ b/compiler/rustc_public/src/rustc_internal/pretty.rs
@@ -7,7 +7,7 @@ use super::run;
 pub fn write_smir_pretty<'tcx, W: io::Write>(tcx: TyCtxt<'tcx>, w: &mut W) -> io::Result<()> {
     writeln!(
         w,
-        "// WARNING: This is highly experimental output it's intended for stable-mir developers only."
+        "// WARNING: This is highly experimental output it's intended for rustc_public developers only."
     )?;
     writeln!(
         w,
diff --git a/compiler/rustc_public/src/unstable/convert/internal.rs b/compiler/rustc_public/src/unstable/convert/internal.rs
index 8a6238413b0..b2d38e497bc 100644
--- a/compiler/rustc_public/src/unstable/convert/internal.rs
+++ b/compiler/rustc_public/src/unstable/convert/internal.rs
@@ -1,4 +1,4 @@
-//! Module containing the translation from stable mir constructs to the rustc counterpart.
+//! Module containing the translation from rustc_public constructs to the rustc counterpart.
 //!
 //! This module will only include a few constructs to allow users to invoke internal rustc APIs
 //! due to incomplete stable coverage.
@@ -504,7 +504,7 @@ impl RustcInternal for ExistentialProjection {
         tables: &mut Tables<'_, BridgeTys>,
         tcx: impl InternalCx<'tcx>,
     ) -> Self::T<'tcx> {
-        use crate::unstable::internal_cx::SmirExistentialProjection;
+        use crate::unstable::internal_cx::ExistentialProjectionHelpers;
         tcx.new_from_args(
             self.def_id.0.internal(tables, tcx),
             self.generic_args.internal(tables, tcx),
@@ -536,7 +536,7 @@ impl RustcInternal for ExistentialTraitRef {
         tables: &mut Tables<'_, BridgeTys>,
         tcx: impl InternalCx<'tcx>,
     ) -> Self::T<'tcx> {
-        use crate::unstable::internal_cx::SmirExistentialTraitRef;
+        use crate::unstable::internal_cx::ExistentialTraitRefHelpers;
         tcx.new_from_args(
             self.def_id.0.internal(tables, tcx),
             self.generic_args.internal(tables, tcx),
@@ -552,7 +552,7 @@ impl RustcInternal for TraitRef {
         tables: &mut Tables<'_, BridgeTys>,
         tcx: impl InternalCx<'tcx>,
     ) -> Self::T<'tcx> {
-        use crate::unstable::internal_cx::SmirTraitRef;
+        use crate::unstable::internal_cx::TraitRefHelpers;
         tcx.new_from_args(self.def_id.0.internal(tables, tcx), self.args().internal(tables, tcx))
     }
 }
diff --git a/compiler/rustc_public/src/unstable/convert/mod.rs b/compiler/rustc_public/src/unstable/convert/mod.rs
index 85a71e09c3e..f20406631e3 100644
--- a/compiler/rustc_public/src/unstable/convert/mod.rs
+++ b/compiler/rustc_public/src/unstable/convert/mod.rs
@@ -1,4 +1,4 @@
-//! This module holds the logic to convert rustc internal ADTs into stable mir ADTs.
+//! This module holds the logic to convert rustc internal ADTs into rustc_public ADTs.
 //!
 //! The conversion from stable to internal is not meant to be complete,
 //! and it should be added as when needed to be passed as input to rustc_public_bridge functions.
@@ -9,7 +9,7 @@
 use std::ops::RangeInclusive;
 
 use rustc_public_bridge::Tables;
-use rustc_public_bridge::context::SmirCtxt;
+use rustc_public_bridge::context::CompilerCtxt;
 
 use super::Stable;
 use crate::compiler_interface::BridgeTys;
@@ -26,7 +26,7 @@ where
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         (*self).stable(tables, cx)
     }
@@ -41,7 +41,7 @@ where
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         self.as_ref().map(|value| value.stable(tables, cx))
     }
@@ -57,7 +57,7 @@ where
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             Ok(val) => Ok(val.stable(tables, cx)),
@@ -74,7 +74,7 @@ where
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         self.iter().map(|e| e.stable(tables, cx)).collect()
     }
@@ -89,7 +89,7 @@ where
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         (self.0.stable(tables, cx), self.1.stable(tables, cx))
     }
@@ -103,7 +103,7 @@ where
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         RangeInclusive::new(self.start().stable(tables, cx), self.end().stable(tables, cx))
     }
diff --git a/compiler/rustc_public/src/unstable/convert/stable/abi.rs b/compiler/rustc_public/src/unstable/convert/stable/abi.rs
index 40a8bf614e1..782e75a930e 100644
--- a/compiler/rustc_public/src/unstable/convert/stable/abi.rs
+++ b/compiler/rustc_public/src/unstable/convert/stable/abi.rs
@@ -5,7 +5,7 @@
 use rustc_abi::{ArmCall, CanonAbi, InterruptKind, X86Call};
 use rustc_middle::ty;
 use rustc_public_bridge::Tables;
-use rustc_public_bridge::context::SmirCtxt;
+use rustc_public_bridge::context::CompilerCtxt;
 use rustc_target::callconv;
 
 use crate::abi::{
@@ -21,7 +21,7 @@ use crate::{IndexedVal, opaque};
 
 impl<'tcx> Stable<'tcx> for rustc_abi::VariantIdx {
     type T = VariantIdx;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         VariantIdx::to_val(self.as_usize())
     }
 }
@@ -29,7 +29,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::VariantIdx {
 impl<'tcx> Stable<'tcx> for rustc_abi::Endian {
     type T = crate::target::Endian;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             rustc_abi::Endian::Little => crate::target::Endian::Little,
             rustc_abi::Endian::Big => crate::target::Endian::Big,
@@ -43,7 +43,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::TyAndLayout<'tcx, ty::Ty<'tcx>> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         TyAndLayout { ty: self.ty.stable(tables, cx), layout: self.layout.stable(tables, cx) }
     }
@@ -55,7 +55,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::Layout<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         tables.layout_id(cx.lift(*self).unwrap())
     }
@@ -67,7 +67,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::LayoutData<rustc_abi::FieldIdx, rustc_abi
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         LayoutShape {
             fields: self.fields.stable(tables, cx),
@@ -85,7 +85,7 @@ impl<'tcx> Stable<'tcx> for callconv::FnAbi<'tcx, ty::Ty<'tcx>> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         assert!(self.args.len() >= self.fixed_count as usize);
         assert!(!self.c_variadic || matches!(self.conv, CanonAbi::C));
@@ -105,7 +105,7 @@ impl<'tcx> Stable<'tcx> for callconv::ArgAbi<'tcx, ty::Ty<'tcx>> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         ArgAbi {
             ty: self.layout.ty.stable(tables, cx),
@@ -118,7 +118,7 @@ impl<'tcx> Stable<'tcx> for callconv::ArgAbi<'tcx, ty::Ty<'tcx>> {
 impl<'tcx> Stable<'tcx> for CanonAbi {
     type T = CallConvention;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             CanonAbi::C => CallConvention::C,
             CanonAbi::Rust => CallConvention::Rust,
@@ -154,7 +154,7 @@ impl<'tcx> Stable<'tcx> for CanonAbi {
 impl<'tcx> Stable<'tcx> for callconv::PassMode {
     type T = PassMode;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             callconv::PassMode::Ignore => PassMode::Ignore,
             callconv::PassMode::Direct(attr) => PassMode::Direct(opaque(attr)),
@@ -179,7 +179,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::FieldsShape<rustc_abi::FieldIdx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             rustc_abi::FieldsShape::Primitive => FieldsShape::Primitive,
@@ -200,7 +200,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::Variants<rustc_abi::FieldIdx, rustc_abi::
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             rustc_abi::Variants::Single { index } => {
@@ -225,7 +225,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::TagEncoding<rustc_abi::VariantIdx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             rustc_abi::TagEncoding::Direct => TagEncoding::Direct,
@@ -246,7 +246,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::BackendRepr {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match *self {
             rustc_abi::BackendRepr::Scalar(scalar) => ValueAbi::Scalar(scalar.stable(tables, cx)),
@@ -264,7 +264,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::BackendRepr {
 impl<'tcx> Stable<'tcx> for rustc_abi::Size {
     type T = Size;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         Size::from_bits(self.bits_usize())
     }
 }
@@ -272,7 +272,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::Size {
 impl<'tcx> Stable<'tcx> for rustc_abi::Align {
     type T = Align;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         self.bytes()
     }
 }
@@ -283,7 +283,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::Scalar {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             rustc_abi::Scalar::Initialized { value, valid_range } => Scalar::Initialized {
@@ -301,7 +301,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::Primitive {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             rustc_abi::Primitive::Int(length, signed) => {
@@ -318,7 +318,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::Primitive {
 impl<'tcx> Stable<'tcx> for rustc_abi::AddressSpace {
     type T = AddressSpace;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         AddressSpace(self.0)
     }
 }
@@ -326,7 +326,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::AddressSpace {
 impl<'tcx> Stable<'tcx> for rustc_abi::Integer {
     type T = IntegerLength;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             rustc_abi::Integer::I8 => IntegerLength::I8,
             rustc_abi::Integer::I16 => IntegerLength::I16,
@@ -340,7 +340,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::Integer {
 impl<'tcx> Stable<'tcx> for rustc_abi::Float {
     type T = FloatLength;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             rustc_abi::Float::F16 => FloatLength::F16,
             rustc_abi::Float::F32 => FloatLength::F32,
@@ -353,7 +353,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::Float {
 impl<'tcx> Stable<'tcx> for rustc_abi::WrappingRange {
     type T = WrappingRange;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         WrappingRange { start: self.start, end: self.end }
     }
 }
@@ -364,7 +364,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::ReprFlags {
     fn stable<'cx>(
         &self,
         _tables: &mut Tables<'cx, BridgeTys>,
-        _cx: &SmirCtxt<'cx, BridgeTys>,
+        _cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         ReprFlags {
             is_simd: self.intersects(Self::IS_SIMD),
@@ -381,7 +381,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::IntegerType {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             rustc_abi::IntegerType::Pointer(signed) => IntegerType::Pointer { is_signed: *signed },
@@ -398,7 +398,7 @@ impl<'tcx> Stable<'tcx> for rustc_abi::ReprOptions {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         ReprOptions {
             int: self.int.map(|int| int.stable(tables, cx)),
diff --git a/compiler/rustc_public/src/unstable/convert/stable/mir.rs b/compiler/rustc_public/src/unstable/convert/stable/mir.rs
index bd7d4807152..8dee579e598 100644
--- a/compiler/rustc_public/src/unstable/convert/stable/mir.rs
+++ b/compiler/rustc_public/src/unstable/convert/stable/mir.rs
@@ -2,9 +2,8 @@
 
 use rustc_middle::mir::mono::MonoItem;
 use rustc_middle::{bug, mir};
-use rustc_public_bridge::Tables;
-use rustc_public_bridge::bridge::SmirError;
-use rustc_public_bridge::context::SmirCtxt;
+use rustc_public_bridge::context::CompilerCtxt;
+use rustc_public_bridge::{Tables, bridge};
 
 use crate::compiler_interface::BridgeTys;
 use crate::mir::alloc::GlobalAlloc;
@@ -19,7 +18,7 @@ impl<'tcx> Stable<'tcx> for mir::Body<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         crate::mir::Body::new(
             self.basic_blocks
@@ -54,7 +53,7 @@ impl<'tcx> Stable<'tcx> for mir::VarDebugInfo<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         crate::mir::VarDebugInfo {
             name: self.name.to_string(),
@@ -71,7 +70,7 @@ impl<'tcx> Stable<'tcx> for mir::Statement<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         Statement {
             kind: self.kind.stable(tables, cx),
@@ -85,7 +84,7 @@ impl<'tcx> Stable<'tcx> for mir::SourceInfo {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         crate::mir::SourceInfo { span: self.span.stable(tables, cx), scope: self.scope.into() }
     }
@@ -96,7 +95,7 @@ impl<'tcx> Stable<'tcx> for mir::VarDebugInfoFragment<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         VarDebugInfoFragment {
             ty: self.ty.stable(tables, cx),
@@ -110,7 +109,7 @@ impl<'tcx> Stable<'tcx> for mir::VarDebugInfoContents<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             mir::VarDebugInfoContents::Place(place) => {
@@ -133,7 +132,7 @@ impl<'tcx> Stable<'tcx> for mir::StatementKind<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             mir::StatementKind::Assign(assign) => crate::mir::StatementKind::Assign(
@@ -195,7 +194,7 @@ impl<'tcx> Stable<'tcx> for mir::Rvalue<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::mir::Rvalue::*;
         match self {
@@ -259,7 +258,7 @@ impl<'tcx> Stable<'tcx> for mir::Rvalue<'tcx> {
 
 impl<'tcx> Stable<'tcx> for mir::Mutability {
     type T = crate::mir::Mutability;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_hir::Mutability::*;
         match *self {
             Not => crate::mir::Mutability::Not,
@@ -270,7 +269,7 @@ impl<'tcx> Stable<'tcx> for mir::Mutability {
 
 impl<'tcx> Stable<'tcx> for mir::RawPtrKind {
     type T = crate::mir::RawPtrKind;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use mir::RawPtrKind::*;
         match *self {
             Const => crate::mir::RawPtrKind::Const,
@@ -285,7 +284,7 @@ impl<'tcx> Stable<'tcx> for mir::BorrowKind {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::mir::BorrowKind::*;
         match *self {
@@ -298,7 +297,7 @@ impl<'tcx> Stable<'tcx> for mir::BorrowKind {
 
 impl<'tcx> Stable<'tcx> for mir::MutBorrowKind {
     type T = crate::mir::MutBorrowKind;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_middle::mir::MutBorrowKind::*;
         match *self {
             Default => crate::mir::MutBorrowKind::Default,
@@ -310,7 +309,7 @@ impl<'tcx> Stable<'tcx> for mir::MutBorrowKind {
 
 impl<'tcx> Stable<'tcx> for mir::FakeBorrowKind {
     type T = crate::mir::FakeBorrowKind;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_middle::mir::FakeBorrowKind::*;
         match *self {
             Deep => crate::mir::FakeBorrowKind::Deep,
@@ -324,7 +323,7 @@ impl<'tcx> Stable<'tcx> for mir::NullOp<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::mir::NullOp::*;
         match self {
@@ -344,7 +343,7 @@ impl<'tcx> Stable<'tcx> for mir::CastKind {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::mir::CastKind::*;
         match self {
@@ -364,7 +363,7 @@ impl<'tcx> Stable<'tcx> for mir::CastKind {
 
 impl<'tcx> Stable<'tcx> for mir::FakeReadCause {
     type T = crate::mir::FakeReadCause;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_middle::mir::FakeReadCause::*;
         match self {
             ForMatchGuard => crate::mir::FakeReadCause::ForMatchGuard,
@@ -383,7 +382,7 @@ impl<'tcx> Stable<'tcx> for mir::Operand<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::mir::Operand::*;
         match self {
@@ -400,7 +399,7 @@ impl<'tcx> Stable<'tcx> for mir::ConstOperand<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         crate::mir::ConstOperand {
             span: self.span.stable(tables, cx),
@@ -415,7 +414,7 @@ impl<'tcx> Stable<'tcx> for mir::Place<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         crate::mir::Place {
             local: self.local.as_usize(),
@@ -429,7 +428,7 @@ impl<'tcx> Stable<'tcx> for mir::PlaceElem<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::mir::ProjectionElem::*;
         match self {
@@ -464,21 +463,21 @@ impl<'tcx> Stable<'tcx> for mir::PlaceElem<'tcx> {
 impl<'tcx> Stable<'tcx> for mir::UserTypeProjection {
     type T = crate::mir::UserTypeProjection;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         UserTypeProjection { base: self.base.as_usize(), projection: opaque(&self.projs) }
     }
 }
 
 impl<'tcx> Stable<'tcx> for mir::Local {
     type T = crate::mir::Local;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         self.as_usize()
     }
 }
 
 impl<'tcx> Stable<'tcx> for mir::RetagKind {
     type T = crate::mir::RetagKind;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_middle::mir::RetagKind;
         match self {
             RetagKind::FnEntry => crate::mir::RetagKind::FnEntry,
@@ -491,7 +490,7 @@ impl<'tcx> Stable<'tcx> for mir::RetagKind {
 
 impl<'tcx> Stable<'tcx> for mir::UnwindAction {
     type T = crate::mir::UnwindAction;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_middle::mir::UnwindAction;
         match self {
             UnwindAction::Continue => crate::mir::UnwindAction::Continue,
@@ -508,7 +507,7 @@ impl<'tcx> Stable<'tcx> for mir::NonDivergingIntrinsic<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::mir::NonDivergingIntrinsic;
 
@@ -533,7 +532,7 @@ impl<'tcx> Stable<'tcx> for mir::AssertMessage<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::mir::AssertKind;
         match self {
@@ -580,7 +579,7 @@ impl<'tcx> Stable<'tcx> for mir::AssertMessage<'tcx> {
 
 impl<'tcx> Stable<'tcx> for mir::BinOp {
     type T = crate::mir::BinOp;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_middle::mir::BinOp;
         match self {
             BinOp::Add => crate::mir::BinOp::Add,
@@ -615,7 +614,7 @@ impl<'tcx> Stable<'tcx> for mir::BinOp {
 
 impl<'tcx> Stable<'tcx> for mir::UnOp {
     type T = crate::mir::UnOp;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_middle::mir::UnOp;
         match self {
             UnOp::Not => crate::mir::UnOp::Not,
@@ -630,7 +629,7 @@ impl<'tcx> Stable<'tcx> for mir::AggregateKind<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             mir::AggregateKind::Array(ty) => {
@@ -676,7 +675,7 @@ impl<'tcx> Stable<'tcx> for mir::InlineAsmOperand<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::mir::InlineAsmOperand;
 
@@ -703,7 +702,7 @@ impl<'tcx> Stable<'tcx> for mir::Terminator<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::mir::Terminator;
         Terminator {
@@ -718,7 +717,7 @@ impl<'tcx> Stable<'tcx> for mir::TerminatorKind<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::mir::TerminatorKind;
         match self {
@@ -807,7 +806,7 @@ impl<'tcx> Stable<'tcx> for mir::interpret::ConstAllocation<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         self.inner().stable(tables, cx)
     }
@@ -819,9 +818,9 @@ impl<'tcx> Stable<'tcx> for mir::interpret::Allocation {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
-        use rustc_public_bridge::context::SmirAllocRange;
+        use rustc_public_bridge::context::AllocRangeHelpers;
         alloc::allocation_filter(
             self,
             cx.alloc_range(rustc_abi::Size::ZERO, self.size()),
@@ -836,7 +835,7 @@ impl<'tcx> Stable<'tcx> for mir::interpret::AllocId {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        _: &SmirCtxt<'cx, BridgeTys>,
+        _: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         tables.create_alloc_id(*self)
     }
@@ -848,7 +847,7 @@ impl<'tcx> Stable<'tcx> for mir::interpret::GlobalAlloc<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             mir::interpret::GlobalAlloc::Function { instance, .. } => {
@@ -877,7 +876,7 @@ impl<'tcx> Stable<'tcx> for rustc_middle::mir::Const<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let id = tables.intern_mir_const(cx.lift(*self).unwrap());
         match *self {
@@ -913,8 +912,8 @@ impl<'tcx> Stable<'tcx> for rustc_middle::mir::Const<'tcx> {
 impl<'tcx> Stable<'tcx> for mir::interpret::ErrorHandled {
     type T = Error;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
-        Error::new(format!("{self:?}"))
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
+        bridge::Error::new(format!("{self:?}"))
     }
 }
 
@@ -924,7 +923,7 @@ impl<'tcx> Stable<'tcx> for MonoItem<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::mir::mono::MonoItem as StableMonoItem;
         match self {
diff --git a/compiler/rustc_public/src/unstable/convert/stable/mod.rs b/compiler/rustc_public/src/unstable/convert/stable/mod.rs
index ea78ca50eb3..add52fc18ca 100644
--- a/compiler/rustc_public/src/unstable/convert/stable/mod.rs
+++ b/compiler/rustc_public/src/unstable/convert/stable/mod.rs
@@ -2,7 +2,7 @@
 
 use rustc_abi::FieldIdx;
 use rustc_public_bridge::Tables;
-use rustc_public_bridge::context::SmirCtxt;
+use rustc_public_bridge::context::CompilerCtxt;
 
 use super::Stable;
 use crate::compiler_interface::BridgeTys;
@@ -13,7 +13,7 @@ mod ty;
 
 impl<'tcx> Stable<'tcx> for rustc_hir::Safety {
     type T = crate::mir::Safety;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             rustc_hir::Safety::Unsafe => crate::mir::Safety::Unsafe,
             rustc_hir::Safety::Safe => crate::mir::Safety::Safe,
@@ -23,14 +23,14 @@ impl<'tcx> Stable<'tcx> for rustc_hir::Safety {
 
 impl<'tcx> Stable<'tcx> for FieldIdx {
     type T = usize;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         self.as_usize()
     }
 }
 
 impl<'tcx> Stable<'tcx> for rustc_hir::CoroutineSource {
     type T = crate::mir::CoroutineSource;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_hir::CoroutineSource;
         match self {
             CoroutineSource::Block => crate::mir::CoroutineSource::Block,
@@ -45,7 +45,7 @@ impl<'tcx> Stable<'tcx> for rustc_hir::CoroutineKind {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_hir::{CoroutineDesugaring, CoroutineKind};
         match *self {
@@ -77,7 +77,7 @@ impl<'tcx> Stable<'tcx> for rustc_hir::CoroutineKind {
 impl<'tcx> Stable<'tcx> for rustc_span::Symbol {
     type T = crate::Symbol;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         self.to_string()
     }
 }
@@ -88,7 +88,7 @@ impl<'tcx> Stable<'tcx> for rustc_span::Span {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        _: &SmirCtxt<'cx, BridgeTys>,
+        _: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         tables.create_span(*self)
     }
diff --git a/compiler/rustc_public/src/unstable/convert/stable/ty.rs b/compiler/rustc_public/src/unstable/convert/stable/ty.rs
index 6b226b8a24d..d679615b3bd 100644
--- a/compiler/rustc_public/src/unstable/convert/stable/ty.rs
+++ b/compiler/rustc_public/src/unstable/convert/stable/ty.rs
@@ -3,7 +3,7 @@
 use rustc_middle::ty::Ty;
 use rustc_middle::{bug, mir, ty};
 use rustc_public_bridge::Tables;
-use rustc_public_bridge::context::SmirCtxt;
+use rustc_public_bridge::context::CompilerCtxt;
 
 use crate::alloc;
 use crate::compiler_interface::BridgeTys;
@@ -14,7 +14,7 @@ use crate::unstable::Stable;
 
 impl<'tcx> Stable<'tcx> for ty::AliasTyKind {
     type T = crate::ty::AliasKind;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             ty::Projection => crate::ty::AliasKind::Projection,
             ty::Inherent => crate::ty::AliasKind::Inherent,
@@ -29,7 +29,7 @@ impl<'tcx> Stable<'tcx> for ty::AliasTy<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let ty::AliasTy { args, def_id, .. } = self;
         crate::ty::AliasTy { def_id: tables.alias_def(*def_id), args: args.stable(tables, cx) }
@@ -41,7 +41,7 @@ impl<'tcx> Stable<'tcx> for ty::AliasTerm<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let ty::AliasTerm { args, def_id, .. } = self;
         crate::ty::AliasTerm { def_id: tables.alias_def(*def_id), args: args.stable(tables, cx) }
@@ -51,7 +51,7 @@ impl<'tcx> Stable<'tcx> for ty::AliasTerm<'tcx> {
 impl<'tcx> Stable<'tcx> for ty::DynKind {
     type T = crate::ty::DynKind;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             ty::Dyn => crate::ty::DynKind::Dyn,
         }
@@ -64,7 +64,7 @@ impl<'tcx> Stable<'tcx> for ty::ExistentialPredicate<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::ExistentialPredicate::*;
         match self {
@@ -85,7 +85,7 @@ impl<'tcx> Stable<'tcx> for ty::ExistentialTraitRef<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let ty::ExistentialTraitRef { def_id, args, .. } = self;
         crate::ty::ExistentialTraitRef {
@@ -101,7 +101,7 @@ impl<'tcx> Stable<'tcx> for ty::TermKind<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::TermKind;
         match self {
@@ -120,7 +120,7 @@ impl<'tcx> Stable<'tcx> for ty::ExistentialProjection<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let ty::ExistentialProjection { def_id, args, term, .. } = self;
         crate::ty::ExistentialProjection {
@@ -136,7 +136,7 @@ impl<'tcx> Stable<'tcx> for ty::adjustment::PointerCoercion {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::ty::adjustment::PointerCoercion;
         match self {
@@ -154,7 +154,7 @@ impl<'tcx> Stable<'tcx> for ty::adjustment::PointerCoercion {
 
 impl<'tcx> Stable<'tcx> for ty::UserTypeAnnotationIndex {
     type T = usize;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         self.as_usize()
     }
 }
@@ -162,7 +162,7 @@ impl<'tcx> Stable<'tcx> for ty::UserTypeAnnotationIndex {
 impl<'tcx> Stable<'tcx> for ty::AdtKind {
     type T = AdtKind;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             ty::AdtKind::Struct => AdtKind::Struct,
             ty::AdtKind::Union => AdtKind::Union,
@@ -177,7 +177,7 @@ impl<'tcx> Stable<'tcx> for ty::FieldDef {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         crate::ty::FieldDef {
             def: tables.create_def_id(self.did),
@@ -191,7 +191,7 @@ impl<'tcx> Stable<'tcx> for ty::GenericArgs<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         GenericArgs(self.iter().map(|arg| arg.kind().stable(tables, cx)).collect())
     }
@@ -203,7 +203,7 @@ impl<'tcx> Stable<'tcx> for ty::GenericArgKind<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::GenericArgKind;
         match self {
@@ -225,7 +225,7 @@ where
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::Binder;
 
@@ -249,7 +249,7 @@ where
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::EarlyBinder;
 
@@ -262,7 +262,7 @@ impl<'tcx> Stable<'tcx> for ty::FnSig<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::FnSig;
 
@@ -285,7 +285,7 @@ impl<'tcx> Stable<'tcx> for ty::BoundTyKind {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::BoundTyKind;
 
@@ -304,7 +304,7 @@ impl<'tcx> Stable<'tcx> for ty::BoundRegionKind {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::BoundRegionKind;
 
@@ -326,7 +326,7 @@ impl<'tcx> Stable<'tcx> for ty::BoundVariableKind {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::BoundVariableKind;
 
@@ -345,7 +345,7 @@ impl<'tcx> Stable<'tcx> for ty::BoundVariableKind {
 impl<'tcx> Stable<'tcx> for ty::IntTy {
     type T = IntTy;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             ty::IntTy::Isize => IntTy::Isize,
             ty::IntTy::I8 => IntTy::I8,
@@ -360,7 +360,7 @@ impl<'tcx> Stable<'tcx> for ty::IntTy {
 impl<'tcx> Stable<'tcx> for ty::UintTy {
     type T = UintTy;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             ty::UintTy::Usize => UintTy::Usize,
             ty::UintTy::U8 => UintTy::U8,
@@ -375,7 +375,7 @@ impl<'tcx> Stable<'tcx> for ty::UintTy {
 impl<'tcx> Stable<'tcx> for ty::FloatTy {
     type T = FloatTy;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             ty::FloatTy::F16 => FloatTy::F16,
             ty::FloatTy::F32 => FloatTy::F32,
@@ -390,7 +390,7 @@ impl<'tcx> Stable<'tcx> for Ty<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         tables.intern_ty(cx.lift(*self).unwrap())
     }
@@ -401,7 +401,7 @@ impl<'tcx> Stable<'tcx> for ty::TyKind<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match self {
             ty::Bool => TyKind::RigidTy(RigidTy::Bool),
@@ -487,7 +487,7 @@ impl<'tcx> Stable<'tcx> for ty::Pattern<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         match **self {
             ty::PatternKind::Range { start, end } => crate::ty::Pattern::Range {
@@ -507,7 +507,7 @@ impl<'tcx> Stable<'tcx> for ty::Const<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let ct = cx.lift(*self).unwrap();
         let kind = match ct.kind() {
@@ -540,7 +540,7 @@ impl<'tcx> Stable<'tcx> for ty::Const<'tcx> {
 
 impl<'tcx> Stable<'tcx> for ty::ParamConst {
     type T = crate::ty::ParamConst;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use crate::ty::ParamConst;
         ParamConst { index: self.index, name: self.name.to_string() }
     }
@@ -548,7 +548,7 @@ impl<'tcx> Stable<'tcx> for ty::ParamConst {
 
 impl<'tcx> Stable<'tcx> for ty::ParamTy {
     type T = crate::ty::ParamTy;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use crate::ty::ParamTy;
         ParamTy { index: self.index, name: self.name.to_string() }
     }
@@ -559,7 +559,7 @@ impl<'tcx> Stable<'tcx> for ty::BoundTy {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::BoundTy;
         BoundTy { var: self.var.as_usize(), kind: self.kind.stable(tables, cx) }
@@ -568,7 +568,7 @@ impl<'tcx> Stable<'tcx> for ty::BoundTy {
 
 impl<'tcx> Stable<'tcx> for ty::trait_def::TraitSpecializationKind {
     type T = crate::ty::TraitSpecializationKind;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use crate::ty::TraitSpecializationKind;
 
         match self {
@@ -586,7 +586,7 @@ impl<'tcx> Stable<'tcx> for ty::TraitDef {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::opaque;
         use crate::ty::TraitDecl;
@@ -616,7 +616,7 @@ impl<'tcx> Stable<'tcx> for ty::TraitRef<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::TraitRef;
 
@@ -630,7 +630,7 @@ impl<'tcx> Stable<'tcx> for ty::Generics {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::Generics;
 
@@ -655,7 +655,7 @@ impl<'tcx> Stable<'tcx> for ty::Generics {
 impl<'tcx> Stable<'tcx> for rustc_middle::ty::GenericParamDefKind {
     type T = crate::ty::GenericParamDefKind;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use crate::ty::GenericParamDefKind;
         match self {
             ty::GenericParamDefKind::Lifetime => GenericParamDefKind::Lifetime,
@@ -675,7 +675,7 @@ impl<'tcx> Stable<'tcx> for rustc_middle::ty::GenericParamDef {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         GenericParamDef {
             name: self.name.to_string(),
@@ -693,7 +693,7 @@ impl<'tcx> Stable<'tcx> for ty::PredicateKind<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::ty::PredicateKind;
         match self {
@@ -731,7 +731,7 @@ impl<'tcx> Stable<'tcx> for ty::ClauseKind<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use rustc_middle::ty::ClauseKind;
         match *self {
@@ -774,7 +774,7 @@ impl<'tcx> Stable<'tcx> for ty::ClauseKind<'tcx> {
 impl<'tcx> Stable<'tcx> for ty::ClosureKind {
     type T = crate::ty::ClosureKind;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_middle::ty::ClosureKind::*;
         match self {
             Fn => crate::ty::ClosureKind::Fn,
@@ -790,7 +790,7 @@ impl<'tcx> Stable<'tcx> for ty::SubtypePredicate<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let ty::SubtypePredicate { a, b, a_is_expected: _ } = self;
         crate::ty::SubtypePredicate { a: a.stable(tables, cx), b: b.stable(tables, cx) }
@@ -803,7 +803,7 @@ impl<'tcx> Stable<'tcx> for ty::CoercePredicate<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let ty::CoercePredicate { a, b } = self;
         crate::ty::CoercePredicate { a: a.stable(tables, cx), b: b.stable(tables, cx) }
@@ -813,7 +813,7 @@ impl<'tcx> Stable<'tcx> for ty::CoercePredicate<'tcx> {
 impl<'tcx> Stable<'tcx> for ty::AliasRelationDirection {
     type T = crate::ty::AliasRelationDirection;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_middle::ty::AliasRelationDirection::*;
         match self {
             Equate => crate::ty::AliasRelationDirection::Equate,
@@ -828,7 +828,7 @@ impl<'tcx> Stable<'tcx> for ty::TraitPredicate<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let ty::TraitPredicate { trait_ref, polarity } = self;
         crate::ty::TraitPredicate {
@@ -847,7 +847,7 @@ where
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let ty::OutlivesPredicate(a, b) = self;
         crate::ty::OutlivesPredicate(a.stable(tables, cx), b.stable(tables, cx))
@@ -860,7 +860,7 @@ impl<'tcx> Stable<'tcx> for ty::ProjectionPredicate<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let ty::ProjectionPredicate { projection_term, term } = self;
         crate::ty::ProjectionPredicate {
@@ -873,7 +873,7 @@ impl<'tcx> Stable<'tcx> for ty::ProjectionPredicate<'tcx> {
 impl<'tcx> Stable<'tcx> for ty::ImplPolarity {
     type T = crate::ty::ImplPolarity;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_middle::ty::ImplPolarity::*;
         match self {
             Positive => crate::ty::ImplPolarity::Positive,
@@ -886,7 +886,7 @@ impl<'tcx> Stable<'tcx> for ty::ImplPolarity {
 impl<'tcx> Stable<'tcx> for ty::PredicatePolarity {
     type T = crate::ty::PredicatePolarity;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_middle::ty::PredicatePolarity::*;
         match self {
             Positive => crate::ty::PredicatePolarity::Positive,
@@ -901,7 +901,7 @@ impl<'tcx> Stable<'tcx> for ty::Region<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         Region { kind: self.kind().stable(tables, cx) }
     }
@@ -913,7 +913,7 @@ impl<'tcx> Stable<'tcx> for ty::RegionKind<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::{BoundRegion, EarlyParamRegion, RegionKind};
         match self {
@@ -948,7 +948,7 @@ impl<'tcx> Stable<'tcx> for ty::Instance<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         let def = tables.instance_def(cx.lift(*self).unwrap());
         let kind = match self.def {
@@ -976,7 +976,7 @@ impl<'tcx> Stable<'tcx> for ty::Instance<'tcx> {
 
 impl<'tcx> Stable<'tcx> for ty::Variance {
     type T = crate::mir::Variance;
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             ty::Bivariant => crate::mir::Variance::Bivariant,
             ty::Contravariant => crate::mir::Variance::Contravariant,
@@ -989,7 +989,7 @@ impl<'tcx> Stable<'tcx> for ty::Variance {
 impl<'tcx> Stable<'tcx> for ty::Movability {
     type T = crate::ty::Movability;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         match self {
             ty::Movability::Static => crate::ty::Movability::Static,
             ty::Movability::Movable => crate::ty::Movability::Movable,
@@ -1000,7 +1000,7 @@ impl<'tcx> Stable<'tcx> for ty::Movability {
 impl<'tcx> Stable<'tcx> for rustc_abi::ExternAbi {
     type T = crate::ty::Abi;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use rustc_abi::ExternAbi;
 
         use crate::ty::Abi;
@@ -1042,7 +1042,7 @@ impl<'tcx> Stable<'tcx> for rustc_session::cstore::ForeignModule {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         crate::ty::ForeignModule {
             def_id: tables.foreign_module_def(self.def_id),
@@ -1057,7 +1057,7 @@ impl<'tcx> Stable<'tcx> for ty::AssocKind {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::{AssocKind, AssocTypeData};
         match *self {
@@ -1080,7 +1080,7 @@ impl<'tcx> Stable<'tcx> for ty::AssocKind {
 impl<'tcx> Stable<'tcx> for ty::AssocItemContainer {
     type T = crate::ty::AssocItemContainer;
 
-    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &SmirCtxt<'_, BridgeTys>) -> Self::T {
+    fn stable(&self, _: &mut Tables<'_, BridgeTys>, _: &CompilerCtxt<'_, BridgeTys>) -> Self::T {
         use crate::ty::AssocItemContainer;
         match self {
             ty::AssocItemContainer::Trait => AssocItemContainer::Trait,
@@ -1095,7 +1095,7 @@ impl<'tcx> Stable<'tcx> for ty::AssocItem {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         crate::ty::AssocItem {
             def_id: tables.assoc_def(self.def_id),
@@ -1112,7 +1112,7 @@ impl<'tcx> Stable<'tcx> for ty::ImplTraitInTraitData {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        _: &SmirCtxt<'cx, BridgeTys>,
+        _: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         use crate::ty::ImplTraitInTraitData;
         match self {
@@ -1135,7 +1135,7 @@ impl<'tcx> Stable<'tcx> for rustc_middle::ty::util::Discr<'tcx> {
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T {
         crate::ty::Discr { val: self.val, ty: self.ty.stable(tables, cx) }
     }
diff --git a/compiler/rustc_public/src/unstable/internal_cx/traits.rs b/compiler/rustc_public/src/unstable/internal_cx/helpers.rs
index da443cd78f1..da635c04d74 100644
--- a/compiler/rustc_public/src/unstable/internal_cx/traits.rs
+++ b/compiler/rustc_public/src/unstable/internal_cx/helpers.rs
@@ -5,7 +5,7 @@
 
 use rustc_middle::ty;
 
-pub(crate) trait SmirExistentialProjection<'tcx> {
+pub(crate) trait ExistentialProjectionHelpers<'tcx> {
     fn new_from_args(
         &self,
         def_id: rustc_span::def_id::DefId,
@@ -14,7 +14,7 @@ pub(crate) trait SmirExistentialProjection<'tcx> {
     ) -> ty::ExistentialProjection<'tcx>;
 }
 
-pub(crate) trait SmirExistentialTraitRef<'tcx> {
+pub(crate) trait ExistentialTraitRefHelpers<'tcx> {
     fn new_from_args(
         &self,
         trait_def_id: rustc_span::def_id::DefId,
@@ -22,7 +22,7 @@ pub(crate) trait SmirExistentialTraitRef<'tcx> {
     ) -> ty::ExistentialTraitRef<'tcx>;
 }
 
-pub(crate) trait SmirTraitRef<'tcx> {
+pub(crate) trait TraitRefHelpers<'tcx> {
     fn new_from_args(
         &self,
         trait_def_id: rustc_span::def_id::DefId,
diff --git a/compiler/rustc_public/src/unstable/internal_cx/mod.rs b/compiler/rustc_public/src/unstable/internal_cx/mod.rs
index 6b0a06e304c..601ca4fb5cf 100644
--- a/compiler/rustc_public/src/unstable/internal_cx/mod.rs
+++ b/compiler/rustc_public/src/unstable/internal_cx/mod.rs
@@ -1,14 +1,14 @@
 //! Implementation of InternalCx.
 
+pub(crate) use helpers::*;
 use rustc_middle::ty::{List, Ty, TyCtxt};
 use rustc_middle::{mir, ty};
-pub(crate) use traits::*;
 
 use super::InternalCx;
 
-pub(crate) mod traits;
+pub(crate) mod helpers;
 
-impl<'tcx, T: InternalCx<'tcx>> SmirExistentialProjection<'tcx> for T {
+impl<'tcx, T: InternalCx<'tcx>> ExistentialProjectionHelpers<'tcx> for T {
     fn new_from_args(
         &self,
         def_id: rustc_span::def_id::DefId,
@@ -19,7 +19,7 @@ impl<'tcx, T: InternalCx<'tcx>> SmirExistentialProjection<'tcx> for T {
     }
 }
 
-impl<'tcx, T: InternalCx<'tcx>> SmirExistentialTraitRef<'tcx> for T {
+impl<'tcx, T: InternalCx<'tcx>> ExistentialTraitRefHelpers<'tcx> for T {
     fn new_from_args(
         &self,
         trait_def_id: rustc_span::def_id::DefId,
@@ -29,7 +29,7 @@ impl<'tcx, T: InternalCx<'tcx>> SmirExistentialTraitRef<'tcx> for T {
     }
 }
 
-impl<'tcx, T: InternalCx<'tcx>> SmirTraitRef<'tcx> for T {
+impl<'tcx, T: InternalCx<'tcx>> TraitRefHelpers<'tcx> for T {
     fn new_from_args(
         &self,
         trait_def_id: rustc_span::def_id::DefId,
diff --git a/compiler/rustc_public/src/unstable/mod.rs b/compiler/rustc_public/src/unstable/mod.rs
index ce7c41a64fa..72b14cfa072 100644
--- a/compiler/rustc_public/src/unstable/mod.rs
+++ b/compiler/rustc_public/src/unstable/mod.rs
@@ -1,6 +1,6 @@
 //! Module that collects the things that have no stability guarantees.
 //!
-//! We want to keep StableMIR definitions and logic separate from
+//! We want to keep rustc_public's IR definitions and logic separate from
 //! any sort of conversion and usage of internal rustc code. So we
 //! restrict the usage of internal items to be inside this module.
 
@@ -10,7 +10,7 @@ use rustc_hir::def::DefKind;
 use rustc_middle::ty::{List, Ty, TyCtxt};
 use rustc_middle::{mir, ty};
 use rustc_public_bridge::Tables;
-use rustc_public_bridge::context::SmirCtxt;
+use rustc_public_bridge::context::CompilerCtxt;
 
 use super::compiler_interface::BridgeTys;
 use crate::{CtorKind, ItemKind};
@@ -21,7 +21,7 @@ mod internal_cx;
 /// Trait that defines the methods that are fine to call from [`RustcInternal`].
 ///
 /// This trait is only for [`RustcInternal`]. Any other other access to rustc's internals
-/// should go through [`rustc_public_bridge::context::SmirCtxt`].
+/// should go through [`rustc_public_bridge::context::CompilerCtxt`].
 pub trait InternalCx<'tcx>: Copy + Clone {
     fn tcx(self) -> TyCtxt<'tcx>;
 
@@ -53,29 +53,30 @@ pub trait InternalCx<'tcx>: Copy + Clone {
     fn adt_def(self, def_id: rustc_hir::def_id::DefId) -> ty::AdtDef<'tcx>;
 }
 
-/// Trait used to convert between an internal MIR type to a Stable MIR type.
+/// Trait used to convert between an internal MIR type to a rustc_public's IR type.
 ///
-/// This trait is currently exposed to users so they can have interoperability between internal MIR
-/// and StableMIR constructs. However, they should be used seldom and they have no influence
-/// in this crate semver.
+/// This trait is currently exposed to users so they can have interoperability
+/// between internal MIR and rustc_public's IR constructs.
+/// However, they should be used seldom and they have no influence in this crate semver.
 #[doc(hidden)]
 pub trait Stable<'tcx>: PointeeSized {
     /// The stable representation of the type implementing Stable.
     type T;
-    /// Converts an object to the equivalent Stable MIR representation.
+    /// Converts an object to the equivalent rustc_public's IR representation.
     fn stable<'cx>(
         &self,
         tables: &mut Tables<'cx, BridgeTys>,
-        cx: &SmirCtxt<'cx, BridgeTys>,
+        cx: &CompilerCtxt<'cx, BridgeTys>,
     ) -> Self::T;
 }
 
-/// Trait used to translate a stable construct to its rustc counterpart.
+/// Trait used to translate a rustc_public's IR construct to its rustc counterpart.
 ///
 /// This is basically a mirror of [Stable].
 ///
-/// This trait is currently exposed to users so they can have interoperability between internal MIR
-/// and StableMIR constructs. They should be used seldom as they have no stability guarantees.
+/// This trait is currently exposed to users so they can have interoperability
+/// between internal MIR and rustc_public's IR constructs.
+/// They should be used seldom as they have no stability guarantees.
 #[doc(hidden)]
 pub trait RustcInternal {
     type T<'tcx>;
diff --git a/compiler/rustc_public_bridge/src/alloc.rs b/compiler/rustc_public_bridge/src/alloc.rs
index 23bbaddce06..ecf9004562c 100644
--- a/compiler/rustc_public_bridge/src/alloc.rs
+++ b/compiler/rustc_public_bridge/src/alloc.rs
@@ -1,4 +1,4 @@
-//! Internal memory allocator implementation for StableMIR.
+//! Internal memory allocator implementation for rustc_public.
 //!
 //! This module handles all direct interactions with rustc queries and performs
 //! the actual memory allocations. The stable interface in `rustc_public::alloc`
@@ -10,22 +10,22 @@ use rustc_middle::mir::interpret::{
 };
 use rustc_middle::ty::{Ty, layout};
 
-use super::{SmirCtxt, Tables};
+use super::{CompilerCtxt, Tables};
 use crate::bridge::Allocation as _;
-use crate::{Bridge, SmirError};
+use crate::{Bridge, Error};
 
 pub fn create_ty_and_layout<'tcx, B: Bridge>(
-    cx: &SmirCtxt<'tcx, B>,
+    cx: &CompilerCtxt<'tcx, B>,
     ty: Ty<'tcx>,
 ) -> Result<TyAndLayout<'tcx, Ty<'tcx>>, &'tcx layout::LayoutError<'tcx>> {
-    use crate::context::SmirTypingEnv;
+    use crate::context::TypingEnvHelpers;
     cx.tcx.layout_of(cx.fully_monomorphized().as_query_input(ty))
 }
 
 pub fn try_new_scalar<'tcx, B: Bridge>(
     layout: TyAndLayout<'tcx, Ty<'tcx>>,
     scalar: Scalar,
-    cx: &SmirCtxt<'tcx, B>,
+    cx: &CompilerCtxt<'tcx, B>,
 ) -> Result<Allocation, B::Error> {
     let size = scalar.size();
     let mut allocation = Allocation::new(size, layout.align.abi, AllocInit::Uninit, ());
@@ -40,7 +40,7 @@ pub fn try_new_slice<'tcx, B: Bridge>(
     layout: TyAndLayout<'tcx, Ty<'tcx>>,
     data: ConstAllocation<'tcx>,
     meta: u64,
-    cx: &SmirCtxt<'tcx, B>,
+    cx: &CompilerCtxt<'tcx, B>,
 ) -> Result<Allocation, B::Error> {
     let alloc_id = cx.tcx.reserve_and_set_memory_alloc(data);
     let ptr = Pointer::new(alloc_id.into(), Size::ZERO);
@@ -60,7 +60,7 @@ pub fn try_new_slice<'tcx, B: Bridge>(
 
 pub fn try_new_indirect<'tcx, B: Bridge>(
     alloc_id: AllocId,
-    cx: &SmirCtxt<'tcx, B>,
+    cx: &CompilerCtxt<'tcx, B>,
 ) -> ConstAllocation<'tcx> {
     let alloc = cx.tcx.global_alloc(alloc_id).unwrap_memory();
 
@@ -72,7 +72,7 @@ pub fn allocation_filter<'tcx, B: Bridge>(
     alloc: &rustc_middle::mir::interpret::Allocation,
     alloc_range: AllocRange,
     tables: &mut Tables<'tcx, B>,
-    cx: &SmirCtxt<'tcx, B>,
+    cx: &CompilerCtxt<'tcx, B>,
 ) -> B::Allocation {
     let mut bytes: Vec<Option<u8>> = alloc
         .inspect_with_uninit_and_ptr_outside_interpreter(
diff --git a/compiler/rustc_public_bridge/src/bridge.rs b/compiler/rustc_public_bridge/src/bridge.rs
index 379a8da5df9..d4f4847c8d3 100644
--- a/compiler/rustc_public_bridge/src/bridge.rs
+++ b/compiler/rustc_public_bridge/src/bridge.rs
@@ -6,10 +6,10 @@
 
 use std::fmt::Debug;
 
-use super::context::SmirCtxt;
+use super::context::CompilerCtxt;
 use super::{Bridge, Tables};
 
-pub trait SmirError {
+pub trait Error {
     fn new(msg: String) -> Self;
     fn from_internal<T: Debug>(err: T) -> Self;
 }
@@ -25,7 +25,7 @@ pub trait Allocation<B: Bridge> {
         align: u64,
         mutability: rustc_middle::mir::Mutability,
         tables: &mut Tables<'tcx, B>,
-        cx: &SmirCtxt<'tcx, B>,
+        cx: &CompilerCtxt<'tcx, B>,
     ) -> Self;
 }
 
diff --git a/compiler/rustc_public_bridge/src/builder.rs b/compiler/rustc_public_bridge/src/builder.rs
index 2141053d09a..ea7f37d72d0 100644
--- a/compiler/rustc_public_bridge/src/builder.rs
+++ b/compiler/rustc_public_bridge/src/builder.rs
@@ -1,8 +1,7 @@
-//! Logic required to produce a monomorphic stable body.
+//! Logic required to produce a monomorphic body.
 //!
-//! We first retrieve and monomorphize the rustc body representation, i.e., we generate a
+//! We retrieve and monomorphize the rustc body representation, i.e., we generate a
 //! monomorphic body using internal representation.
-//! After that, we convert the internal representation into a stable one.
 
 use rustc_hir::def::DefKind;
 use rustc_middle::mir;
@@ -25,7 +24,7 @@ impl<'tcx> BodyBuilder<'tcx> {
         BodyBuilder { tcx, instance }
     }
 
-    /// Build a stable monomorphic body for a given instance based on the MIR body.
+    /// Build a monomorphic body for a given instance based on the MIR body.
     ///
     /// All constants are also evaluated.
     pub(crate) fn build(mut self) -> mir::Body<'tcx> {
diff --git a/compiler/rustc_public_bridge/src/context/traits.rs b/compiler/rustc_public_bridge/src/context/helpers.rs
index 8483bee4aad..21eef29e5f1 100644
--- a/compiler/rustc_public_bridge/src/context/traits.rs
+++ b/compiler/rustc_public_bridge/src/context/helpers.rs
@@ -1,6 +1,6 @@
 //! A set of traits that define a stable interface to rustc's internals.
 //!
-//! These traits abstract rustc's internal APIs, allowing StableMIR to maintain a stable
+//! These traits abstract rustc's internal APIs, allowing rustc_public to maintain a stable
 //! interface regardless of internal compiler changes.
 
 use rustc_middle::mir::interpret::AllocRange;
@@ -8,14 +8,14 @@ use rustc_middle::ty;
 use rustc_middle::ty::Ty;
 use rustc_span::def_id::DefId;
 
-pub trait SmirTy<'tcx> {
+pub trait TyHelpers<'tcx> {
     fn new_foreign(&self, def_id: DefId) -> Ty<'tcx>;
 }
 
-pub trait SmirTypingEnv<'tcx> {
+pub trait TypingEnvHelpers<'tcx> {
     fn fully_monomorphized(&self) -> ty::TypingEnv<'tcx>;
 }
 
-pub trait SmirAllocRange<'tcx> {
+pub trait AllocRangeHelpers<'tcx> {
     fn alloc_range(&self, offset: rustc_abi::Size, size: rustc_abi::Size) -> AllocRange;
 }
diff --git a/compiler/rustc_public_bridge/src/context/impls.rs b/compiler/rustc_public_bridge/src/context/impls.rs
index fdefad2821b..612e44b56b1 100644
--- a/compiler/rustc_public_bridge/src/context/impls.rs
+++ b/compiler/rustc_public_bridge/src/context/impls.rs
@@ -1,4 +1,4 @@
-//! Implementation of StableMIR Context.
+//! Implementation of CompilerCtxt.
 
 #![allow(rustc::usage_of_qualified_ty)]
 
@@ -24,23 +24,23 @@ use rustc_span::def_id::{CrateNum, DefId, LOCAL_CRATE};
 use rustc_span::{FileNameDisplayPreference, Span, Symbol};
 use rustc_target::callconv::FnAbi;
 
-use super::{SmirAllocRange, SmirCtxt, SmirTy, SmirTypingEnv};
+use super::{AllocRangeHelpers, CompilerCtxt, TyHelpers, TypingEnvHelpers};
 use crate::builder::BodyBuilder;
-use crate::{Bridge, SmirError, Tables, filter_def_ids};
+use crate::{Bridge, Error, Tables, filter_def_ids};
 
-impl<'tcx, B: Bridge> SmirTy<'tcx> for SmirCtxt<'tcx, B> {
+impl<'tcx, B: Bridge> TyHelpers<'tcx> for CompilerCtxt<'tcx, B> {
     fn new_foreign(&self, def_id: DefId) -> ty::Ty<'tcx> {
         ty::Ty::new_foreign(self.tcx, def_id)
     }
 }
 
-impl<'tcx, B: Bridge> SmirTypingEnv<'tcx> for SmirCtxt<'tcx, B> {
+impl<'tcx, B: Bridge> TypingEnvHelpers<'tcx> for CompilerCtxt<'tcx, B> {
     fn fully_monomorphized(&self) -> ty::TypingEnv<'tcx> {
         ty::TypingEnv::fully_monomorphized()
     }
 }
 
-impl<'tcx, B: Bridge> SmirAllocRange<'tcx> for SmirCtxt<'tcx, B> {
+impl<'tcx, B: Bridge> AllocRangeHelpers<'tcx> for CompilerCtxt<'tcx, B> {
     fn alloc_range(
         &self,
         offset: rustc_abi::Size,
@@ -50,7 +50,7 @@ impl<'tcx, B: Bridge> SmirAllocRange<'tcx> for SmirCtxt<'tcx, B> {
     }
 }
 
-impl<'tcx, B: Bridge> SmirCtxt<'tcx, B> {
+impl<'tcx, B: Bridge> CompilerCtxt<'tcx, B> {
     pub fn lift<T: ty::Lift<TyCtxt<'tcx>>>(&self, value: T) -> Option<T::Lifted> {
         self.tcx.lift(value)
     }
@@ -85,7 +85,7 @@ impl<'tcx, B: Bridge> SmirCtxt<'tcx, B> {
     /// Return whether the item has a body defined by the user.
     ///
     /// Note that intrinsics may have a placeholder body that shouldn't be used in practice.
-    /// In StableMIR, we handle this case as if the body is not available.
+    /// In rustc_public, we handle this case as if the body is not available.
     pub(crate) fn item_has_body(&self, def_id: DefId) -> bool {
         let must_override = if let Some(intrinsic) = self.tcx.intrinsic(def_id) {
             intrinsic.must_be_overridden
@@ -426,7 +426,7 @@ impl<'tcx, B: Bridge> SmirCtxt<'tcx, B> {
 
     /// Evaluate constant as a target usize.
     pub fn eval_target_usize(&self, cnst: MirConst<'tcx>) -> Result<u64, B::Error> {
-        use crate::context::SmirTypingEnv;
+        use crate::context::TypingEnvHelpers;
         cnst.try_eval_target_usize(self.tcx, self.fully_monomorphized())
             .ok_or_else(|| B::Error::new(format!("Const `{cnst:?}` cannot be encoded as u64")))
     }
diff --git a/compiler/rustc_public_bridge/src/context/mod.rs b/compiler/rustc_public_bridge/src/context/mod.rs
index da20be2a4b3..857a2d4e26b 100644
--- a/compiler/rustc_public_bridge/src/context/mod.rs
+++ b/compiler/rustc_public_bridge/src/context/mod.rs
@@ -1,4 +1,4 @@
-//! Implementation of StableMIR Context.
+//! Implementation of CompilerCtxt.
 
 #![allow(rustc::usage_of_qualified_ty)]
 
@@ -9,30 +9,30 @@ use rustc_middle::ty;
 use rustc_middle::ty::layout::{FnAbiOfHelpers, HasTyCtxt, HasTypingEnv, LayoutOfHelpers};
 use rustc_middle::ty::{Ty, TyCtxt};
 
-use crate::{Bridge, SmirError};
+use crate::{Bridge, Error};
 
+mod helpers;
 mod impls;
-mod traits;
 
-pub use traits::*;
+pub use helpers::*;
 
 /// Provides direct access to rustc's internal queries.
 ///
-/// `SmirInterface` must go through
-/// this context to obtain rustc-level information.
-pub struct SmirCtxt<'tcx, B: Bridge> {
+/// `CompilerInterface` must go through
+/// this context to obtain internal information.
+pub struct CompilerCtxt<'tcx, B: Bridge> {
     pub tcx: TyCtxt<'tcx>,
     _marker: PhantomData<B>,
 }
 
-impl<'tcx, B: Bridge> SmirCtxt<'tcx, B> {
+impl<'tcx, B: Bridge> CompilerCtxt<'tcx, B> {
     pub fn new(tcx: TyCtxt<'tcx>) -> Self {
         Self { tcx, _marker: Default::default() }
     }
 }
 
 /// Implement error handling for extracting function ABI information.
-impl<'tcx, B: Bridge> FnAbiOfHelpers<'tcx> for SmirCtxt<'tcx, B> {
+impl<'tcx, B: Bridge> FnAbiOfHelpers<'tcx> for CompilerCtxt<'tcx, B> {
     type FnAbiOfResult = Result<&'tcx rustc_target::callconv::FnAbi<'tcx, Ty<'tcx>>, B::Error>;
 
     #[inline]
@@ -46,7 +46,7 @@ impl<'tcx, B: Bridge> FnAbiOfHelpers<'tcx> for SmirCtxt<'tcx, B> {
     }
 }
 
-impl<'tcx, B: Bridge> LayoutOfHelpers<'tcx> for SmirCtxt<'tcx, B> {
+impl<'tcx, B: Bridge> LayoutOfHelpers<'tcx> for CompilerCtxt<'tcx, B> {
     type LayoutOfResult = Result<ty::layout::TyAndLayout<'tcx>, B::Error>;
 
     #[inline]
@@ -60,19 +60,19 @@ impl<'tcx, B: Bridge> LayoutOfHelpers<'tcx> for SmirCtxt<'tcx, B> {
     }
 }
 
-impl<'tcx, B: Bridge> HasTypingEnv<'tcx> for SmirCtxt<'tcx, B> {
+impl<'tcx, B: Bridge> HasTypingEnv<'tcx> for CompilerCtxt<'tcx, B> {
     fn typing_env(&self) -> ty::TypingEnv<'tcx> {
         ty::TypingEnv::fully_monomorphized()
     }
 }
 
-impl<'tcx, B: Bridge> HasTyCtxt<'tcx> for SmirCtxt<'tcx, B> {
+impl<'tcx, B: Bridge> HasTyCtxt<'tcx> for CompilerCtxt<'tcx, B> {
     fn tcx(&self) -> TyCtxt<'tcx> {
         self.tcx
     }
 }
 
-impl<'tcx, B: Bridge> HasDataLayout for SmirCtxt<'tcx, B> {
+impl<'tcx, B: Bridge> HasDataLayout for CompilerCtxt<'tcx, B> {
     fn data_layout(&self) -> &rustc_abi::TargetDataLayout {
         self.tcx.data_layout()
     }
diff --git a/compiler/rustc_public_bridge/src/lib.rs b/compiler/rustc_public_bridge/src/lib.rs
index 652a8093a87..dec3be70baf 100644
--- a/compiler/rustc_public_bridge/src/lib.rs
+++ b/compiler/rustc_public_bridge/src/lib.rs
@@ -1,6 +1,6 @@
-//! Crate that implements what will become the rustc side of Stable MIR.
+//! Crate that implements what will become the rustc side of rustc_public.
 //!
-//! This crate is responsible for building Stable MIR components from internal components.
+//! This crate serves as a proxy for making calls to rustc queries.
 //!
 //! This crate is not intended to be invoked directly by users.
 //! This crate is the public API of rustc that will be invoked by the `rustc_public` crate.
@@ -29,7 +29,7 @@ use std::hash::Hash;
 use std::ops::Index;
 
 use bridge::*;
-use context::SmirCtxt;
+use context::CompilerCtxt;
 use rustc_data_structures::fx::{self, FxIndexMap};
 use rustc_middle::mir;
 use rustc_middle::mir::interpret::AllocId;
@@ -46,9 +46,9 @@ pub mod context;
 pub mod rustc_internal {}
 
 /// A container which is used for TLS.
-pub struct SmirContainer<'tcx, B: Bridge> {
+pub struct Container<'tcx, B: Bridge> {
     pub tables: RefCell<Tables<'tcx, B>>,
-    pub cx: RefCell<SmirCtxt<'tcx, B>>,
+    pub cx: RefCell<CompilerCtxt<'tcx, B>>,
 }
 
 pub struct Tables<'tcx, B: Bridge> {
@@ -210,7 +210,7 @@ impl<'tcx, B: Bridge> Tables<'tcx, B> {
     }
 }
 
-/// A trait defining types that are used to emulate StableMIR components, which is really
+/// A trait defining types that are used to emulate rustc_public components, which is really
 /// useful when programming in rustc_public-agnostic settings.
 pub trait Bridge: Sized {
     type DefId: Copy + Debug + PartialEq + IndexedVal;
@@ -222,7 +222,7 @@ pub trait Bridge: Sized {
     type MirConstId: Copy + Debug + PartialEq + IndexedVal;
     type Layout: Copy + Debug + PartialEq + IndexedVal;
 
-    type Error: SmirError;
+    type Error: Error;
     type CrateItem: CrateItem<Self>;
     type AdtDef: AdtDef<Self>;
     type ForeignModuleDef: ForeignModuleDef<Self>;
diff --git a/compiler/rustc_resolve/messages.ftl b/compiler/rustc_resolve/messages.ftl
index aa818cc9c46..39e9a9cc58a 100644
--- a/compiler/rustc_resolve/messages.ftl
+++ b/compiler/rustc_resolve/messages.ftl
@@ -41,8 +41,6 @@ resolve_attempt_to_use_non_constant_value_in_constant_without_suggestion =
 resolve_attributes_starting_with_rustc_are_reserved =
     attributes starting with `rustc` are reserved for use by the `rustc` compiler
 
-resolve_bad_macro_import = bad macro import
-
 resolve_binding_in_never_pattern =
     never patterns cannot contain variable bindings
     .suggestion = use a wildcard `_` instead
diff --git a/compiler/rustc_resolve/src/build_reduced_graph.rs b/compiler/rustc_resolve/src/build_reduced_graph.rs
index 737577baa7a..fe7fa71a7fc 100644
--- a/compiler/rustc_resolve/src/build_reduced_graph.rs
+++ b/compiler/rustc_resolve/src/build_reduced_graph.rs
@@ -11,11 +11,14 @@ use std::sync::Arc;
 use rustc_ast::visit::{self, AssocCtxt, Visitor, WalkItemKind};
 use rustc_ast::{
     self as ast, AssocItem, AssocItemKind, Block, ConstItem, Delegation, Fn, ForeignItem,
-    ForeignItemKind, Impl, Item, ItemKind, MetaItemKind, NodeId, StaticItem, StmtKind, TyAlias,
+    ForeignItemKind, Impl, Item, ItemKind, NodeId, StaticItem, StmtKind, TyAlias,
 };
+use rustc_attr_data_structures::{AttributeKind, MacroUseArgs};
 use rustc_attr_parsing as attr;
+use rustc_attr_parsing::AttributeParser;
 use rustc_expand::base::ResolverExpand;
 use rustc_expand::expand::AstFragment;
+use rustc_hir::Attribute;
 use rustc_hir::def::{self, *};
 use rustc_hir::def_id::{CRATE_DEF_ID, DefId, LocalDefId};
 use rustc_index::bit_set::DenseBitSet;
@@ -25,6 +28,7 @@ use rustc_middle::metadata::ModChild;
 use rustc_middle::ty::{Feed, Visibility};
 use rustc_span::hygiene::{ExpnId, LocalExpnId, MacroKind};
 use rustc_span::{Ident, Span, Symbol, kw, sym};
+use thin_vec::ThinVec;
 use tracing::debug;
 
 use crate::Namespace::{MacroNS, TypeNS, ValueNS};
@@ -1019,42 +1023,31 @@ impl<'a, 'ra, 'tcx> BuildReducedGraphVisitor<'a, 'ra, 'tcx> {
     /// Returns `true` if we should consider the underlying `extern crate` to be used.
     fn process_macro_use_imports(&mut self, item: &Item, module: Module<'ra>) -> bool {
         let mut import_all = None;
-        let mut single_imports = Vec::new();
-        for attr in &item.attrs {
-            if attr.has_name(sym::macro_use) {
-                if self.parent_scope.module.parent.is_some() {
-                    self.r.dcx().emit_err(errors::ExternCrateLoadingMacroNotAtCrateRoot {
-                        span: item.span,
-                    });
-                }
-                if let ItemKind::ExternCrate(Some(orig_name), _) = item.kind
-                    && orig_name == kw::SelfLower
-                {
-                    self.r.dcx().emit_err(errors::MacroUseExternCrateSelf { span: attr.span });
-                }
-                let ill_formed = |span| {
-                    self.r.dcx().emit_err(errors::BadMacroImport { span });
-                };
-                match attr.meta() {
-                    Some(meta) => match meta.kind {
-                        MetaItemKind::Word => {
-                            import_all = Some(meta.span);
-                            break;
-                        }
-                        MetaItemKind::List(meta_item_inners) => {
-                            for meta_item_inner in meta_item_inners {
-                                match meta_item_inner.ident() {
-                                    Some(ident) if meta_item_inner.is_word() => {
-                                        single_imports.push(ident)
-                                    }
-                                    _ => ill_formed(meta_item_inner.span()),
-                                }
-                            }
-                        }
-                        MetaItemKind::NameValue(..) => ill_formed(meta.span),
-                    },
-                    None => ill_formed(attr.span),
-                }
+        let mut single_imports = ThinVec::new();
+        if let Some(Attribute::Parsed(AttributeKind::MacroUse { span, arguments })) =
+            AttributeParser::parse_limited(
+                self.r.tcx.sess,
+                &item.attrs,
+                sym::macro_use,
+                item.span,
+                item.id,
+                None,
+            )
+        {
+            if self.parent_scope.module.parent.is_some() {
+                self.r
+                    .dcx()
+                    .emit_err(errors::ExternCrateLoadingMacroNotAtCrateRoot { span: item.span });
+            }
+            if let ItemKind::ExternCrate(Some(orig_name), _) = item.kind
+                && orig_name == kw::SelfLower
+            {
+                self.r.dcx().emit_err(errors::MacroUseExternCrateSelf { span });
+            }
+
+            match arguments {
+                MacroUseArgs::UseAll => import_all = Some(span),
+                MacroUseArgs::UseSpecific(imports) => single_imports = imports,
             }
         }
 
diff --git a/compiler/rustc_resolve/src/errors.rs b/compiler/rustc_resolve/src/errors.rs
index b34bcb38f84..d6b1e4de6ea 100644
--- a/compiler/rustc_resolve/src/errors.rs
+++ b/compiler/rustc_resolve/src/errors.rs
@@ -816,13 +816,6 @@ pub(crate) struct ExternCrateLoadingMacroNotAtCrateRoot {
 }
 
 #[derive(Diagnostic)]
-#[diag(resolve_bad_macro_import, code = E0466)]
-pub(crate) struct BadMacroImport {
-    #[primary_span]
-    pub(crate) span: Span,
-}
-
-#[derive(Diagnostic)]
 #[diag(resolve_extern_crate_self_requires_renaming)]
 pub(crate) struct ExternCrateSelfRequiresRenaming {
     #[primary_span]
diff --git a/compiler/rustc_resolve/src/macros.rs b/compiler/rustc_resolve/src/macros.rs
index 77ef7f56c09..333fc808d1b 100644
--- a/compiler/rustc_resolve/src/macros.rs
+++ b/compiler/rustc_resolve/src/macros.rs
@@ -1,6 +1,7 @@
 //! A bunch of methods and structures more or less related to resolving macros and
 //! interface provided by `Resolver` to macro expander.
 
+use std::any::Any;
 use std::cell::Cell;
 use std::mem;
 use std::sync::Arc;
@@ -13,10 +14,10 @@ use rustc_expand::base::{
     Annotatable, DeriveResolution, Indeterminate, ResolverExpand, SyntaxExtension,
     SyntaxExtensionKind,
 };
-use rustc_expand::compile_declarative_macro;
 use rustc_expand::expand::{
     AstFragment, AstFragmentKind, Invocation, InvocationKind, SupportsMacroExpansion,
 };
+use rustc_expand::{MacroRulesMacroExpander, compile_declarative_macro};
 use rustc_hir::def::{self, DefKind, Namespace, NonMacroAttrKind};
 use rustc_hir::def_id::{CrateNum, DefId, LocalDefId};
 use rustc_middle::middle::stability;
@@ -357,8 +358,12 @@ impl<'ra, 'tcx> ResolverExpand for Resolver<'ra, 'tcx> {
             let SyntaxExtensionKind::LegacyBang(ref ext) = m.ext.kind else {
                 continue;
             };
+            let ext: &dyn Any = ext.as_ref();
+            let Some(m) = ext.downcast_ref::<MacroRulesMacroExpander>() else {
+                continue;
+            };
             for arm_i in unused_arms.iter() {
-                if let Some((ident, rule_span)) = ext.get_unused_rule(arm_i) {
+                if let Some((ident, rule_span)) = m.get_unused_rule(arm_i) {
                     self.lint_buffer.buffer_lint(
                         UNUSED_MACRO_RULES,
                         node_id,
diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs
index d6215e1de04..7bea8685724 100644
--- a/compiler/rustc_session/src/config.rs
+++ b/compiler/rustc_session/src/config.rs
@@ -226,6 +226,13 @@ pub enum CoverageLevel {
     Mcdc,
 }
 
+// The different settings that the `-Z offload` flag can have.
+#[derive(Clone, Copy, PartialEq, Hash, Debug)]
+pub enum Offload {
+    /// Enable the llvm offload pipeline
+    Enable,
+}
+
 /// The different settings that the `-Z autodiff` flag can have.
 #[derive(Clone, PartialEq, Hash, Debug)]
 pub enum AutoDiff {
@@ -2706,6 +2713,15 @@ pub fn build_session_options(early_dcx: &mut EarlyDiagCtxt, matches: &getopts::M
         )
     }
 
+    if !nightly_options::is_unstable_enabled(matches)
+        && unstable_opts.offload.contains(&Offload::Enable)
+    {
+        early_dcx.early_fatal(
+            "`-Zoffload=Enable` also requires `-Zunstable-options` \
+                and a nightly compiler",
+        )
+    }
+
     let target_triple = parse_target_triple(early_dcx, matches);
 
     // Ensure `-Z unstable-options` is required when using the unstable `-C link-self-contained` and
@@ -3178,7 +3194,7 @@ pub(crate) mod dep_tracking {
         AutoDiff, BranchProtection, CFGuard, CFProtection, CollapseMacroDebuginfo, CoverageOptions,
         CrateType, DebugInfo, DebugInfoCompression, ErrorOutputType, FmtDebug, FunctionReturn,
         InliningThreshold, InstrumentCoverage, InstrumentXRay, LinkerPluginLto, LocationDetail,
-        LtoCli, MirStripDebugInfo, NextSolverConfig, OomStrategy, OptLevel, OutFileName,
+        LtoCli, MirStripDebugInfo, NextSolverConfig, Offload, OomStrategy, OptLevel, OutFileName,
         OutputType, OutputTypes, PatchableFunctionEntry, Polonius, RemapPathScopeComponents,
         ResolveDocLinks, SourceFileHashAlgorithm, SplitDwarfKind, SwitchWithOptPath,
         SymbolManglingVersion, WasiExecModel,
@@ -3225,6 +3241,7 @@ pub(crate) mod dep_tracking {
     impl_dep_tracking_hash_via_hash!(
         (),
         AutoDiff,
+        Offload,
         bool,
         usize,
         NonZero<usize>,
diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs
index 2bdde2f887a..b33e3815ea4 100644
--- a/compiler/rustc_session/src/options.rs
+++ b/compiler/rustc_session/src/options.rs
@@ -726,6 +726,7 @@ mod desc {
     pub(crate) const parse_list_with_polarity: &str =
         "a comma-separated list of strings, with elements beginning with + or -";
     pub(crate) const parse_autodiff: &str = "a comma separated list of settings: `Enable`, `PrintSteps`, `PrintTA`, `PrintTAFn`, `PrintAA`, `PrintPerf`, `PrintModBefore`, `PrintModAfter`, `PrintModFinal`, `PrintPasses`, `NoPostopt`, `LooseTypes`, `Inline`";
+    pub(crate) const parse_offload: &str = "a comma separated list of settings: `Enable`";
     pub(crate) const parse_comma_list: &str = "a comma-separated list of strings";
     pub(crate) const parse_opt_comma_list: &str = parse_comma_list;
     pub(crate) const parse_number: &str = "a number";
@@ -1357,6 +1358,27 @@ pub mod parse {
         }
     }
 
+    pub(crate) fn parse_offload(slot: &mut Vec<Offload>, v: Option<&str>) -> bool {
+        let Some(v) = v else {
+            *slot = vec![];
+            return true;
+        };
+        let mut v: Vec<&str> = v.split(",").collect();
+        v.sort_unstable();
+        for &val in v.iter() {
+            let variant = match val {
+                "Enable" => Offload::Enable,
+                _ => {
+                    // FIXME(ZuseZ4): print an error saying which value is not recognized
+                    return false;
+                }
+            };
+            slot.push(variant);
+        }
+
+        true
+    }
+
     pub(crate) fn parse_autodiff(slot: &mut Vec<AutoDiff>, v: Option<&str>) -> bool {
         let Some(v) = v else {
             *slot = vec![];
@@ -2401,6 +2423,11 @@ options! {
         "do not use unique names for text and data sections when -Z function-sections is used"),
     normalize_docs: bool = (false, parse_bool, [TRACKED],
         "normalize associated items in rustdoc when generating documentation"),
+    offload: Vec<crate::config::Offload> = (Vec::new(), parse_offload, [TRACKED],
+        "a list of offload flags to enable
+        Mandatory setting:
+        `=Enable`
+        Currently the only option available"),
     on_broken_pipe: OnBrokenPipe = (OnBrokenPipe::Default, parse_on_broken_pipe, [TRACKED],
         "behavior of std::io::ErrorKind::BrokenPipe (SIGPIPE)"),
     oom: OomStrategy = (OomStrategy::Abort, parse_oom_strategy, [TRACKED],
diff --git a/compiler/rustc_span/src/symbol.rs b/compiler/rustc_span/src/symbol.rs
index d28a73bc139..d54175548e3 100644
--- a/compiler/rustc_span/src/symbol.rs
+++ b/compiler/rustc_span/src/symbol.rs
@@ -1698,7 +1698,6 @@ symbols! {
         ptr_slice_from_raw_parts_mut,
         ptr_swap,
         ptr_swap_nonoverlapping,
-        ptr_unique,
         ptr_write,
         ptr_write_bytes,
         ptr_write_unaligned,
@@ -1809,6 +1808,8 @@ symbols! {
         rust_out,
         rustc,
         rustc_abi,
+        // FIXME(#82232, #143834): temporary name to mitigate `#[align]` nameres ambiguity
+        rustc_align,
         rustc_allocator,
         rustc_allocator_zeroed,
         rustc_allow_const_fn_unstable,
diff --git a/compiler/rustc_target/src/spec/base/avr.rs b/compiler/rustc_target/src/spec/base/avr.rs
index 85b73e61e52..fb3ebb509ad 100644
--- a/compiler/rustc_target/src/spec/base/avr.rs
+++ b/compiler/rustc_target/src/spec/base/avr.rs
@@ -322,6 +322,9 @@ pub fn ef_avr_arch(target_cpu: &str) -> u32 {
         "attiny1624" => elf::EF_AVR_ARCH_XMEGA3,
         "attiny1626" => elf::EF_AVR_ARCH_XMEGA3,
         "attiny1627" => elf::EF_AVR_ARCH_XMEGA3,
+        "attiny3224" => elf::EF_AVR_ARCH_XMEGA3,
+        "attiny3226" => elf::EF_AVR_ARCH_XMEGA3,
+        "attiny3227" => elf::EF_AVR_ARCH_XMEGA3,
         "atmega808" => elf::EF_AVR_ARCH_XMEGA3,
         "atmega809" => elf::EF_AVR_ARCH_XMEGA3,
         "atmega1608" => elf::EF_AVR_ARCH_XMEGA3,
@@ -331,6 +334,70 @@ pub fn ef_avr_arch(target_cpu: &str) -> u32 {
         "atmega4808" => elf::EF_AVR_ARCH_XMEGA3,
         "atmega4809" => elf::EF_AVR_ARCH_XMEGA3,
 
+        "avr64da28" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64da32" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64da48" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64da64" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64db28" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64db32" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64db48" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64db64" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64dd14" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64dd20" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64dd28" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64dd32" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64du28" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64du32" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64ea28" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64ea32" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64ea48" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64sd28" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64sd32" => elf::EF_AVR_ARCH_XMEGA2,
+        "avr64sd48" => elf::EF_AVR_ARCH_XMEGA2,
+
+        "avr16dd20" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16dd28" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16dd32" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16du14" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16du20" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16du28" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16du32" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32da28" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32da32" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32da48" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32db28" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32db32" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32db48" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32dd14" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32dd20" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32dd28" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32dd32" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32du14" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32du20" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32du28" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32du32" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16eb14" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16eb20" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16eb28" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16eb32" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16ea28" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16ea32" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr16ea48" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32ea28" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32ea32" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32ea48" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32sd20" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32sd28" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr32sd32" => elf::EF_AVR_ARCH_XMEGA3,
+        "avr128da28" => elf::EF_AVR_ARCH_XMEGA4,
+        "avr128da32" => elf::EF_AVR_ARCH_XMEGA4,
+        "avr128da48" => elf::EF_AVR_ARCH_XMEGA4,
+        "avr128da64" => elf::EF_AVR_ARCH_XMEGA4,
+        "avr128db28" => elf::EF_AVR_ARCH_XMEGA4,
+        "avr128db32" => elf::EF_AVR_ARCH_XMEGA4,
+        "avr128db48" => elf::EF_AVR_ARCH_XMEGA4,
+        "avr128db64" => elf::EF_AVR_ARCH_XMEGA4,
+
         // Unknown target CPU => Unspecified/generic code
         _ => 0,
     }
diff --git a/library/Cargo.lock b/library/Cargo.lock
index 8b5275e5065..94155e08398 100644
--- a/library/Cargo.lock
+++ b/library/Cargo.lock
@@ -340,10 +340,10 @@ dependencies = [
 name = "std_detect"
 version = "0.1.5"
 dependencies = [
+ "alloc",
  "cfg-if",
+ "core",
  "libc",
- "rustc-std-workspace-alloc",
- "rustc-std-workspace-core",
 ]
 
 [[package]]
diff --git a/library/alloc/src/collections/vec_deque/drain.rs b/library/alloc/src/collections/vec_deque/drain.rs
index 44fcef4ed7d..321621d18be 100644
--- a/library/alloc/src/collections/vec_deque/drain.rs
+++ b/library/alloc/src/collections/vec_deque/drain.rs
@@ -192,7 +192,7 @@ impl<T, A: Allocator> Drop for Drain<'_, T, A> {
                     // this branch is never taken.
                     // We use `#[cold]` instead of `#[inline(never)]`, because inlining this
                     // function into the general case (`.drain(n..m)`) is fine.
-                    // See `tests/codegen/vecdeque-drain.rs` for a test.
+                    // See `tests/codegen-llvm/vecdeque-drain.rs` for a test.
                     #[cold]
                     fn join_head_and_tail_wrapping<T, A: Allocator>(
                         source_deque: &mut VecDeque<T, A>,
diff --git a/library/alloc/src/raw_vec/mod.rs b/library/alloc/src/raw_vec/mod.rs
index 3e006a2d1bd..40716755aad 100644
--- a/library/alloc/src/raw_vec/mod.rs
+++ b/library/alloc/src/raw_vec/mod.rs
@@ -761,7 +761,7 @@ impl<A: Allocator> RawVecInner<A> {
 }
 
 // not marked inline(never) since we want optimizers to be able to observe the specifics of this
-// function, see tests/codegen/vec-reserve-extend.rs.
+// function, see tests/codegen-llvm/vec-reserve-extend.rs.
 #[cold]
 fn finish_grow<A>(
     new_layout: Layout,
diff --git a/library/compiler-builtins/.github/workflows/rustc-pull.yml b/library/compiler-builtins/.github/workflows/rustc-pull.yml
new file mode 100644
index 00000000000..ba698492e42
--- /dev/null
+++ b/library/compiler-builtins/.github/workflows/rustc-pull.yml
@@ -0,0 +1,23 @@
+# Perform a subtree sync (pull) using the josh-sync tool once every few days (or on demand).
+name: rustc-pull
+
+on:
+  workflow_dispatch:
+  schedule:
+    # Run at 04:00 UTC every Monday and Thursday
+    - cron: '0 4 * * 1,4'
+
+jobs:
+  pull:
+    if: github.repository == 'rust-lang/compiler-builtins'
+    uses: rust-lang/josh-sync/.github/workflows/rustc-pull.yml@main
+    with:
+      # https://rust-lang.zulipchat.com/#narrow/channel/219381-t-libs/topic/compiler-builtins.20subtree.20sync.20automation/with/528482375
+      zulip-stream-id: 219381
+      zulip-topic: 'compiler-builtins subtree sync automation'
+      zulip-bot-email:  "compiler-builtins-ci-bot@rust-lang.zulipchat.com"
+      pr-base-branch: master
+      branch-name: rustc-pull
+    secrets:
+      zulip-api-token: ${{ secrets.ZULIP_API_TOKEN }}
+      token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/library/compiler-builtins/CONTRIBUTING.md b/library/compiler-builtins/CONTRIBUTING.md
index 9f67cfc3157..9ae4f893c60 100644
--- a/library/compiler-builtins/CONTRIBUTING.md
+++ b/library/compiler-builtins/CONTRIBUTING.md
@@ -165,3 +165,12 @@ cargo bench --no-default-features \
 
 [`iai-callgrind-runner`]: https://crates.io/crates/iai-callgrind-runner
 [Valgrind]: https://valgrind.org/
+
+## Subtree synchronization
+
+`compiler-builtins` is included as a [Josh subtree] in the main compiler
+repository (`rust-lang/rust`). You can find a guide on how to create synchronization
+(pull and push) PRs at the [`rustc-dev-guide` page].
+
+[Josh subtree]: https://rustc-dev-guide.rust-lang.org/external-repos.html#josh-subtrees
+[`rustc-dev-guide` page]: https://rustc-dev-guide.rust-lang.org/external-repos.html#synchronizing-a-josh-subtree
diff --git a/library/compiler-builtins/Cargo.toml b/library/compiler-builtins/Cargo.toml
index 41350c6cb99..956d738f3b1 100644
--- a/library/compiler-builtins/Cargo.toml
+++ b/library/compiler-builtins/Cargo.toml
@@ -3,7 +3,6 @@ resolver = "2"
 members = [
     "builtins-shim",
     "builtins-test",
-    "crates/josh-sync",
     "crates/libm-macros",
     "crates/musl-math-sys",
     "crates/panic-handler",
diff --git a/library/compiler-builtins/builtins-test/Cargo.toml b/library/compiler-builtins/builtins-test/Cargo.toml
index 093d4633f87..00a9d8579d1 100644
--- a/library/compiler-builtins/builtins-test/Cargo.toml
+++ b/library/compiler-builtins/builtins-test/Cargo.toml
@@ -12,9 +12,9 @@ license = "MIT AND Apache-2.0 WITH LLVM-exception AND (MIT OR Apache-2.0)"
 # `xoshiro128**` is used for its quality, size, and speed at generating `u32` shift amounts.
 rand_xoshiro = "0.7"
 # To compare float builtins against
-rustc_apfloat = "0.2.2"
+rustc_apfloat = "0.2.3"
 # Really a dev dependency, but dev dependencies can't be optional
-iai-callgrind = { version = "0.14.1", optional = true }
+iai-callgrind = { version = "0.15.2", optional = true }
 
 [dependencies.compiler_builtins]
 path = "../builtins-shim"
diff --git a/library/compiler-builtins/ci/bench-icount.sh b/library/compiler-builtins/ci/bench-icount.sh
index d2baebb52d8..12228b9da97 100755
--- a/library/compiler-builtins/ci/bench-icount.sh
+++ b/library/compiler-builtins/ci/bench-icount.sh
@@ -28,7 +28,7 @@ function run_icount_benchmarks() {
 
     iai_args=(
         "--home" "$(pwd)/$iai_home"
-        "--regression=ir=5.0"
+        "--callgrind-limits=ir=5.0"
         "--save-summary"
     )
 
diff --git a/library/compiler-builtins/compiler-builtins/src/mem/impls.rs b/library/compiler-builtins/compiler-builtins/src/mem/impls.rs
index 14a4787485d..da16dee25ce 100644
--- a/library/compiler-builtins/compiler-builtins/src/mem/impls.rs
+++ b/library/compiler-builtins/compiler-builtins/src/mem/impls.rs
@@ -15,6 +15,7 @@
 // this use. Of course this is not a guarantee that such use will work, it just means that this
 // crate doing wrapping pointer arithmetic with a method that must not wrap won't be the problem if
 // something does go wrong at runtime.
+use core::ffi::c_int;
 use core::intrinsics::likely;
 
 const WORD_SIZE: usize = core::mem::size_of::<usize>();
@@ -384,13 +385,13 @@ pub unsafe fn set_bytes(mut s: *mut u8, c: u8, mut n: usize) {
 }
 
 #[inline(always)]
-pub unsafe fn compare_bytes(s1: *const u8, s2: *const u8, n: usize) -> i32 {
+pub unsafe fn compare_bytes(s1: *const u8, s2: *const u8, n: usize) -> c_int {
     let mut i = 0;
     while i < n {
         let a = *s1.wrapping_add(i);
         let b = *s2.wrapping_add(i);
         if a != b {
-            return a as i32 - b as i32;
+            return c_int::from(a) - c_int::from(b);
         }
         i += 1;
     }
diff --git a/library/compiler-builtins/compiler-builtins/src/mem/mod.rs b/library/compiler-builtins/compiler-builtins/src/mem/mod.rs
index 6828f3804e0..a227f60a294 100644
--- a/library/compiler-builtins/compiler-builtins/src/mem/mod.rs
+++ b/library/compiler-builtins/compiler-builtins/src/mem/mod.rs
@@ -3,13 +3,6 @@
 // FIXME(e2024): this eventually needs to be removed.
 #![allow(unsafe_op_in_unsafe_fn)]
 
-#[allow(warnings)]
-#[cfg(target_pointer_width = "16")]
-type c_int = i16;
-#[allow(warnings)]
-#[cfg(not(target_pointer_width = "16"))]
-type c_int = i32;
-
 // memcpy/memmove/memset have optimized implementations on some architectures
 #[cfg_attr(
     all(not(feature = "no-asm"), target_arch = "x86_64"),
@@ -38,18 +31,18 @@ intrinsics! {
     }
 
     #[mem_builtin]
-    pub unsafe extern "C" fn memset(s: *mut u8, c: crate::mem::c_int, n: usize) -> *mut u8 {
+    pub unsafe extern "C" fn memset(s: *mut u8, c: core::ffi::c_int, n: usize) -> *mut u8 {
         impls::set_bytes(s, c as u8, n);
         s
     }
 
     #[mem_builtin]
-    pub unsafe extern "C" fn memcmp(s1: *const u8, s2: *const u8, n: usize) -> i32 {
+    pub unsafe extern "C" fn memcmp(s1: *const u8, s2: *const u8, n: usize) -> core::ffi::c_int {
         impls::compare_bytes(s1, s2, n)
     }
 
     #[mem_builtin]
-    pub unsafe extern "C" fn bcmp(s1: *const u8, s2: *const u8, n: usize) -> i32 {
+    pub unsafe extern "C" fn bcmp(s1: *const u8, s2: *const u8, n: usize) -> core::ffi::c_int {
         memcmp(s1, s2, n)
     }
 
diff --git a/library/compiler-builtins/crates/josh-sync/Cargo.toml b/library/compiler-builtins/crates/josh-sync/Cargo.toml
deleted file mode 100644
index 8e2e891db54..00000000000
--- a/library/compiler-builtins/crates/josh-sync/Cargo.toml
+++ /dev/null
@@ -1,8 +0,0 @@
-[package]
-name = "josh-sync"
-edition = "2024"
-publish = false
-
-[dependencies]
-directories = "6.0.0"
-regex-lite = "0.1.6"
diff --git a/library/compiler-builtins/crates/josh-sync/src/main.rs b/library/compiler-builtins/crates/josh-sync/src/main.rs
deleted file mode 100644
index 7f0b1190033..00000000000
--- a/library/compiler-builtins/crates/josh-sync/src/main.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-use std::io::{Read, Write};
-use std::process::exit;
-use std::{env, io};
-
-use crate::sync::{GitSync, Josh};
-
-mod sync;
-
-const USAGE: &str = r#"Utility for synchroniing compiler-builtins with rust-lang/rust
-
-Usage:
-
-    josh-sync rustc-pull
-
-        Pull from rust-lang/rust to compiler-builtins. Creates a commit
-        updating the version file, followed by a merge commit.
-
-    josh-sync rustc-push GITHUB_USERNAME [BRANCH]
-
-        Create a branch off of rust-lang/rust updating compiler-builtins.
-"#;
-
-fn main() {
-    let sync = GitSync::from_current_dir();
-
-    // Collect args, then recollect as str refs so we can match on them
-    let args: Vec<_> = env::args().collect();
-    let args: Vec<&str> = args.iter().map(String::as_str).collect();
-
-    match args.as_slice()[1..] {
-        ["rustc-pull"] => sync.rustc_pull(None),
-        ["rustc-push", github_user, branch] => sync.rustc_push(github_user, Some(branch)),
-        ["rustc-push", github_user] => sync.rustc_push(github_user, None),
-        ["start-josh"] => {
-            let _josh = Josh::start();
-            println!("press enter to stop");
-            io::stdout().flush().unwrap();
-            let _ = io::stdin().read(&mut [0u8]).unwrap();
-        }
-        _ => {
-            println!("{USAGE}");
-            exit(1);
-        }
-    }
-}
diff --git a/library/compiler-builtins/crates/josh-sync/src/sync.rs b/library/compiler-builtins/crates/josh-sync/src/sync.rs
deleted file mode 100644
index 2d89d2d1cea..00000000000
--- a/library/compiler-builtins/crates/josh-sync/src/sync.rs
+++ /dev/null
@@ -1,401 +0,0 @@
-use std::borrow::Cow;
-use std::net::{SocketAddr, TcpStream};
-use std::process::{Command, Stdio, exit};
-use std::time::Duration;
-use std::{env, fs, process, thread};
-
-use regex_lite::Regex;
-
-const JOSH_PORT: u16 = 42042;
-const DEFAULT_PR_BRANCH: &str = "update-builtins";
-
-pub struct GitSync {
-    upstream_repo: String,
-    upstream_ref: String,
-    upstream_url: String,
-    josh_filter: String,
-    josh_url_base: String,
-}
-
-/// This code was adapted from the miri repository, via the rustc-dev-guide
-/// (<https://github.com/rust-lang/rustc-dev-guide/tree/c51adbd12d/josh-sync>)
-impl GitSync {
-    pub fn from_current_dir() -> Self {
-        let upstream_repo =
-            env::var("UPSTREAM_ORG").unwrap_or_else(|_| "rust-lang".to_owned()) + "/rust";
-
-        Self {
-            upstream_url: format!("https://github.com/{upstream_repo}"),
-            upstream_repo,
-            upstream_ref: env::var("UPSTREAM_REF").unwrap_or_else(|_| "HEAD".to_owned()),
-            josh_filter: ":/library/compiler-builtins".to_owned(),
-            josh_url_base: format!("http://localhost:{JOSH_PORT}"),
-        }
-    }
-
-    /// Pull from rust-lang/rust to compiler-builtins.
-    pub fn rustc_pull(&self, commit: Option<String>) {
-        let Self {
-            upstream_ref,
-            upstream_url,
-            upstream_repo,
-            ..
-        } = self;
-
-        let new_upstream_base = commit.unwrap_or_else(|| {
-            let out = check_output(["git", "ls-remote", upstream_url, upstream_ref]);
-            out.split_whitespace()
-                .next()
-                .unwrap_or_else(|| panic!("could not split output: '{out}'"))
-                .to_owned()
-        });
-
-        ensure_clean();
-
-        // Make sure josh is running.
-        let _josh = Josh::start();
-        let josh_url_filtered = self.josh_url(
-            &self.upstream_repo,
-            Some(&new_upstream_base),
-            Some(&self.josh_filter),
-        );
-
-        let previous_upstream_base = fs::read_to_string("rust-version")
-            .expect("failed to read `rust-version`")
-            .trim()
-            .to_string();
-        assert_ne!(previous_upstream_base, new_upstream_base, "nothing to pull");
-
-        let orig_head = check_output(["git", "rev-parse", "HEAD"]);
-        println!("original upstream base: {previous_upstream_base}");
-        println!("new upstream base: {new_upstream_base}");
-        println!("original HEAD: {orig_head}");
-
-        // Fetch the latest upstream HEAD so we can get a summary. Use the Josh URL for caching.
-        run([
-            "git",
-            "fetch",
-            &self.josh_url(&self.upstream_repo, Some(&new_upstream_base), Some(":/")),
-            &new_upstream_base,
-            "--depth=1",
-        ]);
-        let new_summary = check_output(["git", "log", "-1", "--format=%h %s", &new_upstream_base]);
-        let new_summary = replace_references(&new_summary, &self.upstream_repo);
-
-        // Update rust-version file. As a separate commit, since making it part of
-        // the merge has confused the heck out of josh in the past.
-        // We pass `--no-verify` to avoid running git hooks.
-        // We do this before the merge so that if there are merge conflicts, we have
-        // the right rust-version file while resolving them.
-        fs::write("rust-version", format!("{new_upstream_base}\n"))
-            .expect("failed to write rust-version");
-
-        let prep_message = format!(
-            "Update the upstream Rust version\n\n\
-            To prepare for merging from {upstream_repo}, set the version file to:\n\n    \
-            {new_summary}\n\
-            ",
-        );
-        run([
-            "git",
-            "commit",
-            "rust-version",
-            "--no-verify",
-            "-m",
-            &prep_message,
-        ]);
-
-        // Fetch given rustc commit.
-        run(["git", "fetch", &josh_url_filtered]);
-        let incoming_ref = check_output(["git", "rev-parse", "FETCH_HEAD"]);
-        println!("incoming ref: {incoming_ref}");
-
-        let merge_message = format!(
-            "Merge ref '{upstream_head_short}{filter}' from {upstream_url}\n\n\
-            Pull recent changes from {upstream_repo} via Josh.\n\n\
-            Upstream ref: {new_upstream_base}\n\
-            Filtered ref: {incoming_ref}\n\
-            ",
-            upstream_head_short = &new_upstream_base[..12],
-            filter = self.josh_filter
-        );
-
-        // This should not add any new root commits. So count those before and after merging.
-        let num_roots = || -> u32 {
-            let out = check_output(["git", "rev-list", "HEAD", "--max-parents=0", "--count"]);
-            out.trim()
-                .parse::<u32>()
-                .unwrap_or_else(|e| panic!("failed to parse `{out}`: {e}"))
-        };
-        let num_roots_before = num_roots();
-
-        let pre_merge_sha = check_output(["git", "rev-parse", "HEAD"]);
-        println!("pre-merge HEAD: {pre_merge_sha}");
-
-        // Merge the fetched commit.
-        run([
-            "git",
-            "merge",
-            "FETCH_HEAD",
-            "--no-verify",
-            "--no-ff",
-            "-m",
-            &merge_message,
-        ]);
-
-        let current_sha = check_output(["git", "rev-parse", "HEAD"]);
-        if current_sha == pre_merge_sha {
-            run(["git", "reset", "--hard", &orig_head]);
-            eprintln!(
-                "No merge was performed, no changes to pull were found. \
-                Rolled back the preparation commit."
-            );
-            exit(1);
-        }
-
-        // Check that the number of roots did not increase.
-        assert_eq!(
-            num_roots(),
-            num_roots_before,
-            "Josh created a new root commit. This is probably not the history you want."
-        );
-    }
-
-    /// Construct an update to rust-lang/rust from compiler-builtins.
-    pub fn rustc_push(&self, github_user: &str, branch: Option<&str>) {
-        let Self {
-            josh_filter,
-            upstream_url,
-            ..
-        } = self;
-
-        let branch = branch.unwrap_or(DEFAULT_PR_BRANCH);
-        let josh_url = self.josh_url(&format!("{github_user}/rust"), None, Some(josh_filter));
-        let user_upstream_url = format!("git@github.com:{github_user}/rust.git");
-
-        let Ok(rustc_git) = env::var("RUSTC_GIT") else {
-            panic!("the RUSTC_GIT environment variable must be set to a rust-lang/rust checkout")
-        };
-
-        ensure_clean();
-        let base = fs::read_to_string("rust-version")
-            .expect("failed to read `rust-version`")
-            .trim()
-            .to_string();
-
-        // Make sure josh is running.
-        let _josh = Josh::start();
-
-        // Prepare the branch. Pushing works much better if we use as base exactly
-        // the commit that we pulled from last time, so we use the `rust-version`
-        // file to find out which commit that would be.
-        println!("Preparing {github_user}/rust (base: {base})...");
-
-        if Command::new("git")
-            .args(["-C", &rustc_git, "fetch", &user_upstream_url, branch])
-            .output() // capture output
-            .expect("could not run fetch")
-            .status
-            .success()
-        {
-            panic!(
-                "The branch '{branch}' seems to already exist in '{user_upstream_url}'. \
-                 Please delete it and try again."
-            );
-        }
-
-        run(["git", "-C", &rustc_git, "fetch", upstream_url, &base]);
-
-        run_cfg("git", |c| {
-            c.args([
-                "-C",
-                &rustc_git,
-                "push",
-                &user_upstream_url,
-                &format!("{base}:refs/heads/{branch}"),
-            ])
-            .stdout(Stdio::null())
-            .stderr(Stdio::null()) // silence the "create GitHub PR" message
-        });
-        println!("pushed PR branch");
-
-        // Do the actual push.
-        println!("Pushing changes...");
-        run(["git", "push", &josh_url, &format!("HEAD:{branch}")]);
-        println!();
-
-        // Do a round-trip check to make sure the push worked as expected.
-        run(["git", "fetch", &josh_url, branch]);
-
-        let head = check_output(["git", "rev-parse", "HEAD"]);
-        let fetch_head = check_output(["git", "rev-parse", "FETCH_HEAD"]);
-        assert_eq!(
-            head, fetch_head,
-            "Josh created a non-roundtrip push! Do NOT merge this into rustc!\n\
-             Expected {head}, got {fetch_head}."
-        );
-        println!(
-            "Confirmed that the push round-trips back to compiler-builtins properly. Please \
-            create a rustc PR:"
-        );
-        // Open PR with `subtree update` title to silence the `no-merges` triagebot check
-        println!(
-            "    {upstream_url}/compare/{github_user}:{branch}?quick_pull=1\
-            &title=Update%20the%20%60compiler-builtins%60%20subtree\
-            &body=Update%20the%20Josh%20subtree%20to%20https%3A%2F%2Fgithub.com%2Frust-lang%2F\
-            compiler-builtins%2Fcommit%2F{head_short}.%0A%0Ar%3F%20%40ghost",
-            head_short = &head[..12],
-        );
-    }
-
-    /// Construct a url to the local Josh server with (optionally)
-    fn josh_url(&self, repo: &str, rev: Option<&str>, filter: Option<&str>) -> String {
-        format!(
-            "{base}/{repo}.git{at}{rev}{filter}{filt_git}",
-            base = self.josh_url_base,
-            at = if rev.is_some() { "@" } else { "" },
-            rev = rev.unwrap_or_default(),
-            filter = filter.unwrap_or_default(),
-            filt_git = if filter.is_some() { ".git" } else { "" }
-        )
-    }
-}
-
-/// Fail if there are files that need to be checked in.
-fn ensure_clean() {
-    let read = check_output(["git", "status", "--untracked-files=no", "--porcelain"]);
-    assert!(
-        read.is_empty(),
-        "working directory must be clean before performing rustc pull"
-    );
-}
-
-/* Helpers for running commands with logged invocations */
-
-/// Run a command from an array, passing its output through.
-fn run<'a, Args: AsRef<[&'a str]>>(l: Args) {
-    let l = l.as_ref();
-    run_cfg(l[0], |c| c.args(&l[1..]));
-}
-
-/// Run a command from an array, collecting its output.
-fn check_output<'a, Args: AsRef<[&'a str]>>(l: Args) -> String {
-    let l = l.as_ref();
-    check_output_cfg(l[0], |c| c.args(&l[1..]))
-}
-
-/// [`run`] with configuration.
-fn run_cfg(prog: &str, f: impl FnOnce(&mut Command) -> &mut Command) {
-    // self.read(l.as_ref());
-    check_output_cfg(prog, |c| f(c.stdout(Stdio::inherit())));
-}
-
-/// [`read`] with configuration. All shell helpers print the command and pass stderr.
-fn check_output_cfg(prog: &str, f: impl FnOnce(&mut Command) -> &mut Command) -> String {
-    let mut cmd = Command::new(prog);
-    cmd.stderr(Stdio::inherit());
-    f(&mut cmd);
-    eprintln!("+ {cmd:?}");
-    let out = cmd.output().expect("command failed");
-    assert!(out.status.success());
-    String::from_utf8(out.stdout.trim_ascii().to_vec()).expect("non-UTF8 output")
-}
-
-/// Replace `#1234`-style issue/PR references with `repo#1234` to ensure links work across
-/// repositories.
-fn replace_references<'a>(s: &'a str, repo: &str) -> Cow<'a, str> {
-    let re = Regex::new(r"\B(?P<id>#\d+)\b").unwrap();
-    re.replace(s, &format!("{repo}$id"))
-}
-
-/// Create a wrapper that stops Josh on drop.
-pub struct Josh(process::Child);
-
-impl Josh {
-    pub fn start() -> Self {
-        // Determine cache directory.
-        let user_dirs =
-            directories::ProjectDirs::from("org", "rust-lang", "rustc-compiler-builtins-josh")
-                .unwrap();
-        let local_dir = user_dirs.cache_dir().to_owned();
-
-        // Start josh, silencing its output.
-        #[expect(clippy::zombie_processes, reason = "clippy can't handle the loop")]
-        let josh = process::Command::new("josh-proxy")
-            .arg("--local")
-            .arg(local_dir)
-            .args([
-                "--remote=https://github.com",
-                &format!("--port={JOSH_PORT}"),
-                "--no-background",
-            ])
-            .stdout(Stdio::null())
-            .stderr(Stdio::null())
-            .spawn()
-            .expect("failed to start josh-proxy, make sure it is installed");
-
-        // Wait until the port is open. We try every 10ms until 1s passed.
-        for _ in 0..100 {
-            // This will generally fail immediately when the port is still closed.
-            let addr = SocketAddr::from(([127, 0, 0, 1], JOSH_PORT));
-            let josh_ready = TcpStream::connect_timeout(&addr, Duration::from_millis(1));
-
-            if josh_ready.is_ok() {
-                println!("josh up and running");
-                return Josh(josh);
-            }
-
-            // Not ready yet.
-            thread::sleep(Duration::from_millis(10));
-        }
-        panic!("Even after waiting for 1s, josh-proxy is still not available.")
-    }
-}
-
-impl Drop for Josh {
-    fn drop(&mut self) {
-        if cfg!(unix) {
-            // Try to gracefully shut it down.
-            Command::new("kill")
-                .args(["-s", "INT", &self.0.id().to_string()])
-                .output()
-                .expect("failed to SIGINT josh-proxy");
-            // Sadly there is no "wait with timeout"... so we just give it some time to finish.
-            thread::sleep(Duration::from_millis(100));
-            // Now hopefully it is gone.
-            if self
-                .0
-                .try_wait()
-                .expect("failed to wait for josh-proxy")
-                .is_some()
-            {
-                return;
-            }
-        }
-        // If that didn't work (or we're not on Unix), kill it hard.
-        eprintln!(
-            "I have to kill josh-proxy the hard way, let's hope this does not \
-            break anything."
-        );
-        self.0.kill().expect("failed to SIGKILL josh-proxy");
-    }
-}
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[test]
-    fn test_replace() {
-        assert_eq!(replace_references("#1234", "r-l/rust"), "r-l/rust#1234");
-        assert_eq!(replace_references("#1234x", "r-l/rust"), "#1234x");
-        assert_eq!(
-            replace_references("merge #1234", "r-l/rust"),
-            "merge r-l/rust#1234"
-        );
-        assert_eq!(
-            replace_references("foo/bar#1234", "r-l/rust"),
-            "foo/bar#1234"
-        );
-    }
-}
diff --git a/library/compiler-builtins/crates/libm-macros/Cargo.toml b/library/compiler-builtins/crates/libm-macros/Cargo.toml
index 6bbf47784ff..100a8d0ec30 100644
--- a/library/compiler-builtins/crates/libm-macros/Cargo.toml
+++ b/library/compiler-builtins/crates/libm-macros/Cargo.toml
@@ -12,7 +12,7 @@ proc-macro = true
 heck = "0.5.0"
 proc-macro2 = "1.0.95"
 quote = "1.0.40"
-syn = { version = "2.0.101", features = ["full", "extra-traits", "visit-mut"] }
+syn = { version = "2.0.104", features = ["full", "extra-traits", "visit-mut"] }
 
 [lints.rust]
 # Values used during testing
diff --git a/library/compiler-builtins/crates/musl-math-sys/Cargo.toml b/library/compiler-builtins/crates/musl-math-sys/Cargo.toml
index 3b88117343b..39f6fa9065b 100644
--- a/library/compiler-builtins/crates/musl-math-sys/Cargo.toml
+++ b/library/compiler-builtins/crates/musl-math-sys/Cargo.toml
@@ -11,4 +11,4 @@ license = "MIT OR Apache-2.0"
 libm = { path = "../../libm" }
 
 [build-dependencies]
-cc = "1.2.25"
+cc = "1.2.29"
diff --git a/library/compiler-builtins/josh-sync.toml b/library/compiler-builtins/josh-sync.toml
new file mode 100644
index 00000000000..599a12af8e5
--- /dev/null
+++ b/library/compiler-builtins/josh-sync.toml
@@ -0,0 +1,3 @@
+org = "rust-lang"
+repo = "compiler-builtins"
+path = "library/compiler-builtins"
diff --git a/library/compiler-builtins/libm-test/Cargo.toml b/library/compiler-builtins/libm-test/Cargo.toml
index 05fcc3234e0..0af6b0c1da5 100644
--- a/library/compiler-builtins/libm-test/Cargo.toml
+++ b/library/compiler-builtins/libm-test/Cargo.toml
@@ -31,8 +31,8 @@ short-benchmarks = []
 anyhow = "1.0.98"
 # This is not directly used but is required so we can enable `gmp-mpfr-sys/force-cross`.
 gmp-mpfr-sys = { version = "1.6.5", optional = true, default-features = false }
-iai-callgrind = { version = "0.14.1", optional = true }
-indicatif = { version = "0.17.11", default-features = false }
+iai-callgrind = { version = "0.15.2", optional = true }
+indicatif = { version = "0.18.0", default-features = false }
 libm = { path = "../libm", features = ["unstable-public-internals"] }
 libm-macros = { path = "../crates/libm-macros" }
 musl-math-sys = { path = "../crates/musl-math-sys", optional = true }
diff --git a/library/compiler-builtins/libm/src/math/support/float_traits.rs b/library/compiler-builtins/libm/src/math/support/float_traits.rs
index c3e7eeec245..fb790e69615 100644
--- a/library/compiler-builtins/libm/src/math/support/float_traits.rs
+++ b/library/compiler-builtins/libm/src/math/support/float_traits.rs
@@ -363,6 +363,7 @@ pub const fn f32_from_bits(bits: u32) -> f32 {
 }
 
 /// `f32::to_bits`
+#[allow(dead_code)] // workaround for false positive RUST-144060
 #[allow(unnecessary_transmutes)] // lint appears in newer versions of Rust
 pub const fn f32_to_bits(x: f32) -> u32 {
     // SAFETY: POD cast with no preconditions
@@ -377,6 +378,7 @@ pub const fn f64_from_bits(bits: u64) -> f64 {
 }
 
 /// `f64::to_bits`
+#[allow(dead_code)] // workaround for false positive RUST-144060
 #[allow(unnecessary_transmutes)] // lint appears in newer versions of Rust
 pub const fn f64_to_bits(x: f64) -> u64 {
     // SAFETY: POD cast with no preconditions
diff --git a/library/compiler-builtins/rust-version b/library/compiler-builtins/rust-version
index 73183983599..a4db05a8796 100644
--- a/library/compiler-builtins/rust-version
+++ b/library/compiler-builtins/rust-version
@@ -1 +1 @@
-d087f112b7d1323446c7b39a8b616aee7fa56b3d
+82310651b93a594a3fd69015e1562186a080d94c
diff --git a/library/compiler-builtins/triagebot.toml b/library/compiler-builtins/triagebot.toml
index ecc05da0195..8a2356c2b1c 100644
--- a/library/compiler-builtins/triagebot.toml
+++ b/library/compiler-builtins/triagebot.toml
@@ -4,7 +4,7 @@
 # Warns when a PR contains merge commits
 # Documentation at: https://forge.rust-lang.org/triagebot/no-merge.html
 [no-merges]
-exclude_titles = ["Update from"]
+exclude_titles = ["Rustc pull update"]
 
 # Canonicalize issue numbers to avoid closing the wrong issue
 # when commits are included in subtrees, as well as warning links in commits.
@@ -19,3 +19,6 @@ check-commits = false
 # Enable issue transfers within the org
 # Documentation at: https://forge.rust-lang.org/triagebot/transfer.html
 [transfer]
+
+# Automatically close and reopen PRs made by bots to run CI on them
+[bot-pull-requests]
diff --git a/library/core/src/array/mod.rs b/library/core/src/array/mod.rs
index 62203e132b7..1c23218552a 100644
--- a/library/core/src/array/mod.rs
+++ b/library/core/src/array/mod.rs
@@ -198,7 +198,8 @@ impl Error for TryFromSliceError {
 }
 
 #[stable(feature = "try_from_slice_error", since = "1.36.0")]
-impl From<Infallible> for TryFromSliceError {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<Infallible> for TryFromSliceError {
     fn from(x: Infallible) -> TryFromSliceError {
         match x {}
     }
diff --git a/library/core/src/ascii/ascii_char.rs b/library/core/src/ascii/ascii_char.rs
index 0b72b4780f1..054ddf84470 100644
--- a/library/core/src/ascii/ascii_char.rs
+++ b/library/core/src/ascii/ascii_char.rs
@@ -546,7 +546,8 @@ macro_rules! into_int_impl {
     ($($ty:ty)*) => {
         $(
             #[unstable(feature = "ascii_char", issue = "110998")]
-            impl From<AsciiChar> for $ty {
+            #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+            impl const From<AsciiChar> for $ty {
                 #[inline]
                 fn from(chr: AsciiChar) -> $ty {
                     chr as u8 as $ty
diff --git a/library/core/src/char/convert.rs b/library/core/src/char/convert.rs
index 78cd89fefae..23061cb663b 100644
--- a/library/core/src/char/convert.rs
+++ b/library/core/src/char/convert.rs
@@ -36,7 +36,8 @@ pub(super) const unsafe fn from_u32_unchecked(i: u32) -> char {
 }
 
 #[stable(feature = "char_convert", since = "1.13.0")]
-impl From<char> for u32 {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<char> for u32 {
     /// Converts a [`char`] into a [`u32`].
     ///
     /// # Examples
@@ -53,7 +54,8 @@ impl From<char> for u32 {
 }
 
 #[stable(feature = "more_char_conversions", since = "1.51.0")]
-impl From<char> for u64 {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<char> for u64 {
     /// Converts a [`char`] into a [`u64`].
     ///
     /// # Examples
@@ -72,7 +74,8 @@ impl From<char> for u64 {
 }
 
 #[stable(feature = "more_char_conversions", since = "1.51.0")]
-impl From<char> for u128 {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<char> for u128 {
     /// Converts a [`char`] into a [`u128`].
     ///
     /// # Examples
@@ -157,7 +160,8 @@ impl TryFrom<char> for u16 {
 /// for a superset of Windows-1252 that fills the remaining blanks with corresponding
 /// C0 and C1 control codes.
 #[stable(feature = "char_convert", since = "1.13.0")]
-impl From<u8> for char {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<u8> for char {
     /// Converts a [`u8`] into a [`char`].
     ///
     /// # Examples
@@ -247,7 +251,8 @@ const fn char_try_from_u32(i: u32) -> Result<char, CharTryFromError> {
 }
 
 #[stable(feature = "try_from", since = "1.34.0")]
-impl TryFrom<u32> for char {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const TryFrom<u32> for char {
     type Error = CharTryFromError;
 
     #[inline]
diff --git a/library/core/src/convert/mod.rs b/library/core/src/convert/mod.rs
index 38381dbdf23..220a24caf09 100644
--- a/library/core/src/convert/mod.rs
+++ b/library/core/src/convert/mod.rs
@@ -216,6 +216,8 @@ pub const fn identity<T>(x: T) -> T {
 /// ```
 #[stable(feature = "rust1", since = "1.0.0")]
 #[rustc_diagnostic_item = "AsRef"]
+#[const_trait]
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
 pub trait AsRef<T: PointeeSized>: PointeeSized {
     /// Converts this type into a shared reference of the (usually inferred) input type.
     #[stable(feature = "rust1", since = "1.0.0")]
@@ -367,6 +369,8 @@ pub trait AsRef<T: PointeeSized>: PointeeSized {
 /// `&mut Vec<u8>`, for example, is the better choice (callers need to pass the correct type then).
 #[stable(feature = "rust1", since = "1.0.0")]
 #[rustc_diagnostic_item = "AsMut"]
+#[const_trait]
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
 pub trait AsMut<T: PointeeSized>: PointeeSized {
     /// Converts this type into a mutable reference of the (usually inferred) input type.
     #[stable(feature = "rust1", since = "1.0.0")]
@@ -710,9 +714,10 @@ pub trait TryFrom<T>: Sized {
 
 // As lifts over &
 #[stable(feature = "rust1", since = "1.0.0")]
-impl<T: PointeeSized, U: PointeeSized> AsRef<U> for &T
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T: PointeeSized, U: PointeeSized> const AsRef<U> for &T
 where
-    T: AsRef<U>,
+    T: ~const AsRef<U>,
 {
     #[inline]
     fn as_ref(&self) -> &U {
@@ -722,9 +727,10 @@ where
 
 // As lifts over &mut
 #[stable(feature = "rust1", since = "1.0.0")]
-impl<T: PointeeSized, U: PointeeSized> AsRef<U> for &mut T
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T: PointeeSized, U: PointeeSized> const AsRef<U> for &mut T
 where
-    T: AsRef<U>,
+    T: ~const AsRef<U>,
 {
     #[inline]
     fn as_ref(&self) -> &U {
@@ -742,9 +748,10 @@ where
 
 // AsMut lifts over &mut
 #[stable(feature = "rust1", since = "1.0.0")]
-impl<T: PointeeSized, U: PointeeSized> AsMut<U> for &mut T
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T: PointeeSized, U: PointeeSized> const AsMut<U> for &mut T
 where
-    T: AsMut<U>,
+    T: ~const AsMut<U>,
 {
     #[inline]
     fn as_mut(&mut self) -> &mut U {
@@ -840,7 +847,8 @@ where
 ////////////////////////////////////////////////////////////////////////////////
 
 #[stable(feature = "rust1", since = "1.0.0")]
-impl<T> AsRef<[T]> for [T] {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T> const AsRef<[T]> for [T] {
     #[inline(always)]
     fn as_ref(&self) -> &[T] {
         self
@@ -848,7 +856,8 @@ impl<T> AsRef<[T]> for [T] {
 }
 
 #[stable(feature = "rust1", since = "1.0.0")]
-impl<T> AsMut<[T]> for [T] {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T> const AsMut<[T]> for [T] {
     #[inline(always)]
     fn as_mut(&mut self) -> &mut [T] {
         self
@@ -856,7 +865,8 @@ impl<T> AsMut<[T]> for [T] {
 }
 
 #[stable(feature = "rust1", since = "1.0.0")]
-impl AsRef<str> for str {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const AsRef<str> for str {
     #[inline(always)]
     fn as_ref(&self) -> &str {
         self
@@ -864,7 +874,8 @@ impl AsRef<str> for str {
 }
 
 #[stable(feature = "as_mut_str_for_str", since = "1.51.0")]
-impl AsMut<str> for str {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const AsMut<str> for str {
     #[inline(always)]
     fn as_mut(&mut self) -> &mut str {
         self
@@ -925,7 +936,8 @@ impl AsMut<str> for str {
 pub enum Infallible {}
 
 #[stable(feature = "convert_infallible", since = "1.34.0")]
-impl Clone for Infallible {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const Clone for Infallible {
     fn clone(&self) -> Infallible {
         match *self {}
     }
@@ -953,7 +965,8 @@ impl Error for Infallible {
 }
 
 #[stable(feature = "convert_infallible", since = "1.34.0")]
-impl PartialEq for Infallible {
+#[rustc_const_unstable(feature = "const_cmp", issue = "143800")]
+impl const PartialEq for Infallible {
     fn eq(&self, _: &Infallible) -> bool {
         match *self {}
     }
@@ -977,7 +990,8 @@ impl Ord for Infallible {
 }
 
 #[stable(feature = "convert_infallible", since = "1.34.0")]
-impl From<!> for Infallible {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<!> for Infallible {
     #[inline]
     fn from(x: !) -> Self {
         x
diff --git a/library/core/src/convert/num.rs b/library/core/src/convert/num.rs
index 50616732b77..affb4eb64d3 100644
--- a/library/core/src/convert/num.rs
+++ b/library/core/src/convert/num.rs
@@ -69,7 +69,8 @@ macro_rules! impl_from {
     };
     ($Small:ty => $Large:ty, #[$attr:meta], $doc:expr $(,)?) => {
         #[$attr]
-        impl From<$Small> for $Large {
+        #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+        impl const From<$Small> for $Large {
             // Rustdocs on the impl block show a "[+] show undocumented items" toggle.
             // Rustdocs on functions do not.
             #[doc = $doc]
@@ -200,7 +201,8 @@ macro_rules! impl_float_from_bool {
         )?
     ) => {
         #[stable(feature = "float_from_bool", since = "1.68.0")]
-        impl From<bool> for $float {
+        #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+            impl const From<bool> for $float {
             #[doc = concat!("Converts a [`bool`] to [`", stringify!($float),"`] losslessly.")]
             /// The resulting value is positive `0.0` for `false` and `1.0` for `true` values.
             ///
@@ -250,7 +252,8 @@ impl_float_from_bool!(
 macro_rules! impl_try_from_unbounded {
     ($source:ty => $($target:ty),+) => {$(
         #[stable(feature = "try_from", since = "1.34.0")]
-        impl TryFrom<$source> for $target {
+        #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+        impl const TryFrom<$source> for $target {
             type Error = TryFromIntError;
 
             /// Tries to create the target number type from a source
@@ -268,7 +271,8 @@ macro_rules! impl_try_from_unbounded {
 macro_rules! impl_try_from_lower_bounded {
     ($source:ty => $($target:ty),+) => {$(
         #[stable(feature = "try_from", since = "1.34.0")]
-        impl TryFrom<$source> for $target {
+        #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+        impl const TryFrom<$source> for $target {
             type Error = TryFromIntError;
 
             /// Tries to create the target number type from a source
@@ -290,7 +294,8 @@ macro_rules! impl_try_from_lower_bounded {
 macro_rules! impl_try_from_upper_bounded {
     ($source:ty => $($target:ty),+) => {$(
         #[stable(feature = "try_from", since = "1.34.0")]
-        impl TryFrom<$source> for $target {
+        #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+        impl const TryFrom<$source> for $target {
             type Error = TryFromIntError;
 
             /// Tries to create the target number type from a source
@@ -312,7 +317,8 @@ macro_rules! impl_try_from_upper_bounded {
 macro_rules! impl_try_from_both_bounded {
     ($source:ty => $($target:ty),+) => {$(
         #[stable(feature = "try_from", since = "1.34.0")]
-        impl TryFrom<$source> for $target {
+        #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+        impl const TryFrom<$source> for $target {
             type Error = TryFromIntError;
 
             /// Tries to create the target number type from a source
@@ -450,7 +456,8 @@ use crate::num::NonZero;
 macro_rules! impl_nonzero_int_from_nonzero_int {
     ($Small:ty => $Large:ty) => {
         #[stable(feature = "nz_int_conv", since = "1.41.0")]
-        impl From<NonZero<$Small>> for NonZero<$Large> {
+        #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+        impl const From<NonZero<$Small>> for NonZero<$Large> {
             // Rustdocs on the impl block show a "[+] show undocumented items" toggle.
             // Rustdocs on functions do not.
             #[doc = concat!("Converts <code>[NonZero]\\<[", stringify!($Small), "]></code> ")]
@@ -540,7 +547,8 @@ impl_nonzero_int_try_from_int!(isize);
 macro_rules! impl_nonzero_int_try_from_nonzero_int {
     ($source:ty => $($target:ty),+) => {$(
         #[stable(feature = "nzint_try_from_nzint_conv", since = "1.49.0")]
-        impl TryFrom<NonZero<$source>> for NonZero<$target> {
+        #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+        impl const TryFrom<NonZero<$source>> for NonZero<$target> {
             type Error = TryFromIntError;
 
             // Rustdocs on the impl block show a "[+] show undocumented items" toggle.
diff --git a/library/core/src/net/ip_addr.rs b/library/core/src/net/ip_addr.rs
index 49a7ae5de5c..6adeb2aa3fd 100644
--- a/library/core/src/net/ip_addr.rs
+++ b/library/core/src/net/ip_addr.rs
@@ -1088,7 +1088,8 @@ impl fmt::Debug for IpAddr {
 }
 
 #[stable(feature = "ip_from_ip", since = "1.16.0")]
-impl From<Ipv4Addr> for IpAddr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<Ipv4Addr> for IpAddr {
     /// Copies this address to a new `IpAddr::V4`.
     ///
     /// # Examples
@@ -1110,7 +1111,8 @@ impl From<Ipv4Addr> for IpAddr {
 }
 
 #[stable(feature = "ip_from_ip", since = "1.16.0")]
-impl From<Ipv6Addr> for IpAddr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<Ipv6Addr> for IpAddr {
     /// Copies this address to a new `IpAddr::V6`.
     ///
     /// # Examples
@@ -1220,7 +1222,8 @@ impl Ord for Ipv4Addr {
 }
 
 #[stable(feature = "ip_u32", since = "1.1.0")]
-impl From<Ipv4Addr> for u32 {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<Ipv4Addr> for u32 {
     /// Uses [`Ipv4Addr::to_bits`] to convert an IPv4 address to a host byte order `u32`.
     #[inline]
     fn from(ip: Ipv4Addr) -> u32 {
@@ -1229,7 +1232,8 @@ impl From<Ipv4Addr> for u32 {
 }
 
 #[stable(feature = "ip_u32", since = "1.1.0")]
-impl From<u32> for Ipv4Addr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<u32> for Ipv4Addr {
     /// Uses [`Ipv4Addr::from_bits`] to convert a host byte order `u32` into an IPv4 address.
     #[inline]
     fn from(ip: u32) -> Ipv4Addr {
@@ -1238,7 +1242,8 @@ impl From<u32> for Ipv4Addr {
 }
 
 #[stable(feature = "from_slice_v4", since = "1.9.0")]
-impl From<[u8; 4]> for Ipv4Addr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<[u8; 4]> for Ipv4Addr {
     /// Creates an `Ipv4Addr` from a four element byte array.
     ///
     /// # Examples
@@ -1256,7 +1261,8 @@ impl From<[u8; 4]> for Ipv4Addr {
 }
 
 #[stable(feature = "ip_from_slice", since = "1.17.0")]
-impl From<[u8; 4]> for IpAddr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<[u8; 4]> for IpAddr {
     /// Creates an `IpAddr::V4` from a four element byte array.
     ///
     /// # Examples
@@ -2210,7 +2216,8 @@ impl Ord for Ipv6Addr {
 }
 
 #[stable(feature = "i128", since = "1.26.0")]
-impl From<Ipv6Addr> for u128 {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<Ipv6Addr> for u128 {
     /// Uses [`Ipv6Addr::to_bits`] to convert an IPv6 address to a host byte order `u128`.
     #[inline]
     fn from(ip: Ipv6Addr) -> u128 {
@@ -2218,7 +2225,8 @@ impl From<Ipv6Addr> for u128 {
     }
 }
 #[stable(feature = "i128", since = "1.26.0")]
-impl From<u128> for Ipv6Addr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<u128> for Ipv6Addr {
     /// Uses [`Ipv6Addr::from_bits`] to convert a host byte order `u128` to an IPv6 address.
     #[inline]
     fn from(ip: u128) -> Ipv6Addr {
@@ -2227,7 +2235,8 @@ impl From<u128> for Ipv6Addr {
 }
 
 #[stable(feature = "ipv6_from_octets", since = "1.9.0")]
-impl From<[u8; 16]> for Ipv6Addr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<[u8; 16]> for Ipv6Addr {
     /// Creates an `Ipv6Addr` from a sixteen element byte array.
     ///
     /// # Examples
@@ -2254,7 +2263,8 @@ impl From<[u8; 16]> for Ipv6Addr {
 }
 
 #[stable(feature = "ipv6_from_segments", since = "1.16.0")]
-impl From<[u16; 8]> for Ipv6Addr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<[u16; 8]> for Ipv6Addr {
     /// Creates an `Ipv6Addr` from an eight element 16-bit array.
     ///
     /// # Examples
@@ -2282,7 +2292,8 @@ impl From<[u16; 8]> for Ipv6Addr {
 }
 
 #[stable(feature = "ip_from_slice", since = "1.17.0")]
-impl From<[u8; 16]> for IpAddr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<[u8; 16]> for IpAddr {
     /// Creates an `IpAddr::V6` from a sixteen element byte array.
     ///
     /// # Examples
@@ -2309,7 +2320,8 @@ impl From<[u8; 16]> for IpAddr {
 }
 
 #[stable(feature = "ip_from_slice", since = "1.17.0")]
-impl From<[u16; 8]> for IpAddr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<[u16; 8]> for IpAddr {
     /// Creates an `IpAddr::V6` from an eight element 16-bit array.
     ///
     /// # Examples
diff --git a/library/core/src/net/socket_addr.rs b/library/core/src/net/socket_addr.rs
index 936f9f64930..69924199f99 100644
--- a/library/core/src/net/socket_addr.rs
+++ b/library/core/src/net/socket_addr.rs
@@ -592,7 +592,8 @@ impl SocketAddrV6 {
 }
 
 #[stable(feature = "ip_from_ip", since = "1.16.0")]
-impl From<SocketAddrV4> for SocketAddr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<SocketAddrV4> for SocketAddr {
     /// Converts a [`SocketAddrV4`] into a [`SocketAddr::V4`].
     #[inline]
     fn from(sock4: SocketAddrV4) -> SocketAddr {
@@ -601,7 +602,8 @@ impl From<SocketAddrV4> for SocketAddr {
 }
 
 #[stable(feature = "ip_from_ip", since = "1.16.0")]
-impl From<SocketAddrV6> for SocketAddr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<SocketAddrV6> for SocketAddr {
     /// Converts a [`SocketAddrV6`] into a [`SocketAddr::V6`].
     #[inline]
     fn from(sock6: SocketAddrV6) -> SocketAddr {
@@ -610,7 +612,8 @@ impl From<SocketAddrV6> for SocketAddr {
 }
 
 #[stable(feature = "addr_from_into_ip", since = "1.17.0")]
-impl<I: Into<IpAddr>> From<(I, u16)> for SocketAddr {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<I: ~const Into<IpAddr>> const From<(I, u16)> for SocketAddr {
     /// Converts a tuple struct (Into<[`IpAddr`]>, `u16`) into a [`SocketAddr`].
     ///
     /// This conversion creates a [`SocketAddr::V4`] for an [`IpAddr::V4`]
diff --git a/library/core/src/num/error.rs b/library/core/src/num/error.rs
index f9c4cdd0ebe..cfedd465cab 100644
--- a/library/core/src/num/error.rs
+++ b/library/core/src/num/error.rs
@@ -26,14 +26,16 @@ impl Error for TryFromIntError {
 }
 
 #[stable(feature = "try_from", since = "1.34.0")]
-impl From<Infallible> for TryFromIntError {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<Infallible> for TryFromIntError {
     fn from(x: Infallible) -> TryFromIntError {
         match x {}
     }
 }
 
 #[unstable(feature = "never_type", issue = "35121")]
-impl From<!> for TryFromIntError {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<!> for TryFromIntError {
     #[inline]
     fn from(never: !) -> TryFromIntError {
         // Match rather than coerce to make sure that code like
diff --git a/library/core/src/num/flt2dec/mod.rs b/library/core/src/num/flt2dec/mod.rs
index 7601e3e2c58..e79a00a8659 100644
--- a/library/core/src/num/flt2dec/mod.rs
+++ b/library/core/src/num/flt2dec/mod.rs
@@ -150,23 +150,19 @@ pub fn round_up(d: &mut [u8]) -> Option<u8> {
         Some(i) => {
             // d[i+1..n] is all nines
             d[i] += 1;
-            for j in i + 1..d.len() {
-                d[j] = b'0';
-            }
+            d[i + 1..].fill(b'0');
             None
         }
-        None if d.len() > 0 => {
+        None if d.is_empty() => {
+            // an empty buffer rounds up (a bit strange but reasonable)
+            Some(b'1')
+        }
+        None => {
             // 999..999 rounds to 1000..000 with an increased exponent
             d[0] = b'1';
-            for j in 1..d.len() {
-                d[j] = b'0';
-            }
+            d[1..].fill(b'0');
             Some(b'0')
         }
-        None => {
-            // an empty buffer rounds up (a bit strange but reasonable)
-            Some(b'1')
-        }
     }
 }
 
diff --git a/library/core/src/num/mod.rs b/library/core/src/num/mod.rs
index faa41ddf13c..acfe38b7a37 100644
--- a/library/core/src/num/mod.rs
+++ b/library/core/src/num/mod.rs
@@ -1378,7 +1378,8 @@ const fn from_ascii_radix_panic(radix: u32) -> ! {
 macro_rules! from_str_int_impl {
     ($signedness:ident $($int_ty:ty)+) => {$(
         #[stable(feature = "rust1", since = "1.0.0")]
-        impl FromStr for $int_ty {
+        #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+        impl const FromStr for $int_ty {
             type Err = ParseIntError;
 
             /// Parses an integer from a string slice with decimal digits.
diff --git a/library/core/src/num/nonzero.rs b/library/core/src/num/nonzero.rs
index b8900c4113a..f793602de50 100644
--- a/library/core/src/num/nonzero.rs
+++ b/library/core/src/num/nonzero.rs
@@ -297,7 +297,8 @@ where
 }
 
 #[stable(feature = "from_nonzero", since = "1.31.0")]
-impl<T> From<NonZero<T>> for T
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T> const From<NonZero<T>> for T
 where
     T: ZeroablePrimitive,
 {
diff --git a/library/core/src/ops/try_trait.rs b/library/core/src/ops/try_trait.rs
index aebbddb4f1c..a889c824be5 100644
--- a/library/core/src/ops/try_trait.rs
+++ b/library/core/src/ops/try_trait.rs
@@ -128,7 +128,9 @@ use crate::ops::ControlFlow;
 )]
 #[doc(alias = "?")]
 #[lang = "Try"]
-pub trait Try: FromResidual {
+#[const_trait]
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+pub trait Try: ~const FromResidual {
     /// The type of the value produced by `?` when *not* short-circuiting.
     #[unstable(feature = "try_trait_v2", issue = "84277", old_name = "try_trait")]
     type Output;
@@ -304,6 +306,8 @@ pub trait Try: FromResidual {
 )]
 #[rustc_diagnostic_item = "FromResidual"]
 #[unstable(feature = "try_trait_v2", issue = "84277", old_name = "try_trait")]
+#[const_trait]
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
 pub trait FromResidual<R = <Self as Try>::Residual> {
     /// Constructs the type from a compatible `Residual` type.
     ///
@@ -357,6 +361,8 @@ where
 /// and in the other direction,
 /// `<Result<Infallible, E> as Residual<T>>::TryType = Result<T, E>`.
 #[unstable(feature = "try_trait_v2_residual", issue = "91285")]
+#[const_trait]
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
 pub trait Residual<O> {
     /// The "return" type of this meta-function.
     #[unstable(feature = "try_trait_v2_residual", issue = "91285")]
diff --git a/library/core/src/option.rs b/library/core/src/option.rs
index 8036c59e893..ed070fbd227 100644
--- a/library/core/src/option.rs
+++ b/library/core/src/option.rs
@@ -842,7 +842,7 @@ impl<T> Option<T> {
         // just needs to be aligned, which it is because `&self` is aligned and
         // the offset used is a multiple of alignment.
         //
-        // In the new version, the intrinsic always returns a pointer to an
+        // Here we assume that `offset_of!` always returns an offset to an
         // in-bounds and correctly aligned position for a `T` (even if in the
         // `None` case it's just padding).
         unsafe {
@@ -2144,9 +2144,12 @@ const fn expect_failed(msg: &str) -> ! {
 /////////////////////////////////////////////////////////////////////////////
 
 #[stable(feature = "rust1", since = "1.0.0")]
-impl<T> Clone for Option<T>
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T> const Clone for Option<T>
 where
-    T: Clone,
+    // FIXME(const_hack): the T: ~const Destruct should be inferred from the Self: ~const Destruct in clone_from.
+    // See https://github.com/rust-lang/rust/issues/144207
+    T: ~const Clone + ~const Destruct,
 {
     #[inline]
     fn clone(&self) -> Self {
@@ -2230,7 +2233,8 @@ impl<'a, T> IntoIterator for &'a mut Option<T> {
 }
 
 #[stable(since = "1.12.0", feature = "option_from")]
-impl<T> From<T> for Option<T> {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T> const From<T> for Option<T> {
     /// Moves `val` into a new [`Some`].
     ///
     /// # Examples
@@ -2246,7 +2250,8 @@ impl<T> From<T> for Option<T> {
 }
 
 #[stable(feature = "option_ref_from_ref_option", since = "1.30.0")]
-impl<'a, T> From<&'a Option<T>> for Option<&'a T> {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<'a, T> const From<&'a Option<T>> for Option<&'a T> {
     /// Converts from `&Option<T>` to `Option<&T>`.
     ///
     /// # Examples
@@ -2273,7 +2278,8 @@ impl<'a, T> From<&'a Option<T>> for Option<&'a T> {
 }
 
 #[stable(feature = "option_ref_from_ref_option", since = "1.30.0")]
-impl<'a, T> From<&'a mut Option<T>> for Option<&'a mut T> {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<'a, T> const From<&'a mut Option<T>> for Option<&'a mut T> {
     /// Converts from `&mut Option<T>` to `Option<&mut T>`
     ///
     /// # Examples
@@ -2593,7 +2599,8 @@ impl<A, V: FromIterator<A>> FromIterator<Option<A>> for Option<V> {
 }
 
 #[unstable(feature = "try_trait_v2", issue = "84277", old_name = "try_trait")]
-impl<T> ops::Try for Option<T> {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T> const ops::Try for Option<T> {
     type Output = T;
     type Residual = Option<convert::Infallible>;
 
@@ -2612,9 +2619,10 @@ impl<T> ops::Try for Option<T> {
 }
 
 #[unstable(feature = "try_trait_v2", issue = "84277", old_name = "try_trait")]
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
 // Note: manually specifying the residual type instead of using the default to work around
 // https://github.com/rust-lang/rust/issues/99940
-impl<T> ops::FromResidual<Option<convert::Infallible>> for Option<T> {
+impl<T> const ops::FromResidual<Option<convert::Infallible>> for Option<T> {
     #[inline]
     fn from_residual(residual: Option<convert::Infallible>) -> Self {
         match residual {
@@ -2625,7 +2633,8 @@ impl<T> ops::FromResidual<Option<convert::Infallible>> for Option<T> {
 
 #[diagnostic::do_not_recommend]
 #[unstable(feature = "try_trait_v2_yeet", issue = "96374")]
-impl<T> ops::FromResidual<ops::Yeet<()>> for Option<T> {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T> const ops::FromResidual<ops::Yeet<()>> for Option<T> {
     #[inline]
     fn from_residual(ops::Yeet(()): ops::Yeet<()>) -> Self {
         None
@@ -2633,7 +2642,8 @@ impl<T> ops::FromResidual<ops::Yeet<()>> for Option<T> {
 }
 
 #[unstable(feature = "try_trait_v2_residual", issue = "91285")]
-impl<T> ops::Residual<T> for Option<convert::Infallible> {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T> const ops::Residual<T> for Option<convert::Infallible> {
     type TryType = Option<T>;
 }
 
diff --git a/library/core/src/ptr/alignment.rs b/library/core/src/ptr/alignment.rs
index 6d473a4bd56..bd5b4e21baa 100644
--- a/library/core/src/ptr/alignment.rs
+++ b/library/core/src/ptr/alignment.rs
@@ -189,7 +189,8 @@ impl TryFrom<usize> for Alignment {
 }
 
 #[unstable(feature = "ptr_alignment_type", issue = "102070")]
-impl From<Alignment> for NonZero<usize> {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<Alignment> for NonZero<usize> {
     #[inline]
     fn from(align: Alignment) -> NonZero<usize> {
         align.as_nonzero()
@@ -197,7 +198,8 @@ impl From<Alignment> for NonZero<usize> {
 }
 
 #[unstable(feature = "ptr_alignment_type", issue = "102070")]
-impl From<Alignment> for usize {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<Alignment> for usize {
     #[inline]
     fn from(align: Alignment) -> usize {
         align.as_usize()
diff --git a/library/core/src/ptr/unique.rs b/library/core/src/ptr/unique.rs
index c069314ff7d..e9e13f9e97f 100644
--- a/library/core/src/ptr/unique.rs
+++ b/library/core/src/ptr/unique.rs
@@ -32,8 +32,6 @@ use crate::ptr::NonNull;
 )]
 #[doc(hidden)]
 #[repr(transparent)]
-// Lang item used experimentally by Miri to define the semantics of `Unique`.
-#[lang = "ptr_unique"]
 pub struct Unique<T: PointeeSized> {
     pointer: NonNull<T>,
     // NOTE: this marker has no consequences for variance, but is necessary
diff --git a/library/core/src/result.rs b/library/core/src/result.rs
index 7f3f2964985..f65257ff59b 100644
--- a/library/core/src/result.rs
+++ b/library/core/src/result.rs
@@ -1288,9 +1288,11 @@ impl<T, E> Result<T, E> {
     /// ```
     #[unstable(feature = "unwrap_infallible", reason = "newly added", issue = "61695")]
     #[inline]
-    pub fn into_ok(self) -> T
+    #[rustc_allow_const_fn_unstable(const_precise_live_drops)]
+    #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+    pub const fn into_ok(self) -> T
     where
-        E: Into<!>,
+        E: ~const Into<!>,
     {
         match self {
             Ok(x) => x,
@@ -1323,9 +1325,11 @@ impl<T, E> Result<T, E> {
     /// ```
     #[unstable(feature = "unwrap_infallible", reason = "newly added", issue = "61695")]
     #[inline]
-    pub fn into_err(self) -> E
+    #[rustc_allow_const_fn_unstable(const_precise_live_drops)]
+    #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+    pub const fn into_err(self) -> E
     where
-        T: Into<!>,
+        T: ~const Into<!>,
     {
         match self {
             Ok(x) => x.into(),
@@ -2052,7 +2056,8 @@ impl<A, E, V: FromIterator<A>> FromIterator<Result<A, E>> for Result<V, E> {
 }
 
 #[unstable(feature = "try_trait_v2", issue = "84277", old_name = "try_trait")]
-impl<T, E> ops::Try for Result<T, E> {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T, E> const ops::Try for Result<T, E> {
     type Output = T;
     type Residual = Result<convert::Infallible, E>;
 
@@ -2071,7 +2076,10 @@ impl<T, E> ops::Try for Result<T, E> {
 }
 
 #[unstable(feature = "try_trait_v2", issue = "84277", old_name = "try_trait")]
-impl<T, E, F: From<E>> ops::FromResidual<Result<convert::Infallible, E>> for Result<T, F> {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T, E, F: ~const From<E>> const ops::FromResidual<Result<convert::Infallible, E>>
+    for Result<T, F>
+{
     #[inline]
     #[track_caller]
     fn from_residual(residual: Result<convert::Infallible, E>) -> Self {
@@ -2082,7 +2090,8 @@ impl<T, E, F: From<E>> ops::FromResidual<Result<convert::Infallible, E>> for Res
 }
 #[diagnostic::do_not_recommend]
 #[unstable(feature = "try_trait_v2_yeet", issue = "96374")]
-impl<T, E, F: From<E>> ops::FromResidual<ops::Yeet<E>> for Result<T, F> {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T, E, F: ~const From<E>> const ops::FromResidual<ops::Yeet<E>> for Result<T, F> {
     #[inline]
     fn from_residual(ops::Yeet(e): ops::Yeet<E>) -> Self {
         Err(From::from(e))
@@ -2090,6 +2099,7 @@ impl<T, E, F: From<E>> ops::FromResidual<ops::Yeet<E>> for Result<T, F> {
 }
 
 #[unstable(feature = "try_trait_v2_residual", issue = "91285")]
-impl<T, E> ops::Residual<T> for Result<convert::Infallible, E> {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl<T, E> const ops::Residual<T> for Result<convert::Infallible, E> {
     type TryType = Result<T, E>;
 }
diff --git a/library/core/src/str/traits.rs b/library/core/src/str/traits.rs
index d0f2b9226bf..1597d1c1fa8 100644
--- a/library/core/src/str/traits.rs
+++ b/library/core/src/str/traits.rs
@@ -825,6 +825,8 @@ unsafe impl const SliceIndex<str> for ops::RangeToInclusive<usize> {
 /// assert!(Point::from_str("(1 2)").is_err());
 /// ```
 #[stable(feature = "rust1", since = "1.0.0")]
+#[const_trait]
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
 pub trait FromStr: Sized {
     /// The associated error which can be returned from parsing.
     #[stable(feature = "rust1", since = "1.0.0")]
diff --git a/library/core/src/sync/atomic.rs b/library/core/src/sync/atomic.rs
index 04c8d1473b0..546f3d91a80 100644
--- a/library/core/src/sync/atomic.rs
+++ b/library/core/src/sync/atomic.rs
@@ -2518,7 +2518,8 @@ impl<T> AtomicPtr<T> {
 
 #[cfg(target_has_atomic_load_store = "8")]
 #[stable(feature = "atomic_bool_from", since = "1.24.0")]
-impl From<bool> for AtomicBool {
+#[rustc_const_unstable(feature = "const_try", issue = "74935")]
+impl const From<bool> for AtomicBool {
     /// Converts a `bool` into an `AtomicBool`.
     ///
     /// # Examples
@@ -2615,7 +2616,8 @@ macro_rules! atomic_int {
         }
 
         #[$stable_from]
-        impl From<$int_type> for $atomic_type {
+        #[rustc_const_unstable(feature = "const_try", issue = "74935")]
+        impl const From<$int_type> for $atomic_type {
             #[doc = concat!("Converts an `", stringify!($int_type), "` into an `", stringify!($atomic_type), "`.")]
             #[inline]
             fn from(v: $int_type) -> Self { Self::new(v) }
diff --git a/library/std/Cargo.toml b/library/std/Cargo.toml
index 5c3132a7375..ba1e1f5218a 100644
--- a/library/std/Cargo.toml
+++ b/library/std/Cargo.toml
@@ -23,9 +23,7 @@ unwind = { path = "../unwind" }
 hashbrown = { version = "0.15", default-features = false, features = [
     'rustc-dep-of-std',
 ] }
-std_detect = { path = "../stdarch/crates/std_detect", public = true, default-features = false, features = [
-    'rustc-dep-of-std',
-] }
+std_detect = { path = "../std_detect", public = true }
 
 # Dependencies of the `backtrace` crate
 rustc-demangle = { version = "0.1.24", features = ['rustc-dep-of-std'] }
@@ -118,8 +116,7 @@ optimize_for_size = ["core/optimize_for_size", "alloc/optimize_for_size"]
 debug_refcell = ["core/debug_refcell"]
 
 
-# Enable std_detect default features for stdarch/crates/std_detect:
-# https://github.com/rust-lang/stdarch/blob/master/crates/std_detect/Cargo.toml
+# Enable std_detect features:
 std_detect_file_io = ["std_detect/std_detect_file_io"]
 std_detect_dlsym_getauxval = ["std_detect/std_detect_dlsym_getauxval"]
 
diff --git a/library/std/src/sys/thread_local/guard/windows.rs b/library/std/src/sys/thread_local/guard/windows.rs
index b15a0d7c0bd..f747129465d 100644
--- a/library/std/src/sys/thread_local/guard/windows.rs
+++ b/library/std/src/sys/thread_local/guard/windows.rs
@@ -58,7 +58,7 @@
 //! We don't actually use the `/INCLUDE` linker flag here like the article
 //! mentions because the Rust compiler doesn't propagate linker flags, but
 //! instead we use a shim function which performs a volatile 1-byte load from
-//! the address of the symbol to ensure it sticks around.
+//! the address of the _tls_used symbol to ensure it sticks around.
 //!
 //! [1]: https://www.codeproject.com/Articles/8113/Thread-Local-Storage-The-C-Way
 //! [2]: https://github.com/ChromiumWebApps/chromium/blob/master/base/threading/thread_local_storage_win.cc#L42
@@ -68,9 +68,20 @@ use core::ffi::c_void;
 use crate::ptr;
 use crate::sys::c;
 
+unsafe extern "C" {
+    #[link_name = "_tls_used"]
+    static TLS_USED: u8;
+}
 pub fn enable() {
-    // When destructors are used, we don't want LLVM eliminating CALLBACK for any
-    // reason. Once the symbol makes it to the linker, it will do the rest.
+    // When destructors are used, we need to add a reference to the _tls_used
+    // symbol provided by the CRT, otherwise the TLS support code will get
+    // GC'd by the linker and our callback won't be called.
+    unsafe { ptr::from_ref(&TLS_USED).read_volatile() };
+    // We also need to reference CALLBACK to make sure it does not get GC'd
+    // by the compiler/LLVM. The callback will end up inside the TLS
+    // callback array pointed to by _TLS_USED through linker shenanigans,
+    // but as far as the compiler is concerned, it looks like the data is
+    // unused, so we need this hack to prevent it from disappearing.
     unsafe { ptr::from_ref(&CALLBACK).read_volatile() };
 }
 
diff --git a/library/stdarch/crates/std_detect/Cargo.toml b/library/std_detect/Cargo.toml
index f990e724125..8d91454726b 100644
--- a/library/stdarch/crates/std_detect/Cargo.toml
+++ b/library/std_detect/Cargo.toml
@@ -22,20 +22,14 @@ maintenance = { status = "experimental" }
 
 [dependencies]
 cfg-if = "1.0.0"
-
-# When built as part of libstd
-core = { version = "1.0.0", optional = true, package = "rustc-std-workspace-core" }
-alloc = { version = "1.0.0", optional = true, package = "rustc-std-workspace-alloc" }
+core = { path = "../core" }
+alloc = { path = "../alloc" }
 
 [target.'cfg(not(windows))'.dependencies]
 libc = { version = "0.2.0", optional = true, default-features = false }
 
 [features]
-default = [ "std_detect_dlsym_getauxval", "std_detect_file_io" ]
+default = []
 std_detect_file_io = [ "libc" ]
 std_detect_dlsym_getauxval = [ "libc" ]
 std_detect_env_override = [ "libc" ]
-rustc-dep-of-std = [
-    "core",
-    "alloc",
-]
diff --git a/library/stdarch/crates/std_detect/README.md b/library/std_detect/README.md
index 091f5542e0e..edc90d319a1 100644
--- a/library/stdarch/crates/std_detect/README.md
+++ b/library/std_detect/README.md
@@ -55,7 +55,7 @@ crate from working on applications in which `std` is not available.
   application.
 
 * Linux/Android:
-  * `arm{32, 64}`, `mips{32,64}{,el}`, `powerpc{32,64}{,le}`, `loongarch64`, `s390x`:
+  * `arm{32, 64}`, `mips{32,64}{,el}`, `powerpc{32,64}{,le}`, `loongarch{32,64}`, `s390x`:
     `std_detect` supports these on Linux by querying ELF auxiliary vectors (using `getauxval`
     when available), and if that fails, by querying `/proc/self/auxv`.
   * `arm64`: partial support for doing run-time feature detection by directly
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/aarch64.rs b/library/std_detect/src/detect/arch/aarch64.rs
index 13570a25c1c..13570a25c1c 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/aarch64.rs
+++ b/library/std_detect/src/detect/arch/aarch64.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/arm.rs b/library/std_detect/src/detect/arch/arm.rs
index c3c8883ce31..c3c8883ce31 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/arm.rs
+++ b/library/std_detect/src/detect/arch/arm.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/loongarch.rs b/library/std_detect/src/detect/arch/loongarch.rs
index e9d68f6a9bf..68fc600fa8e 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/loongarch.rs
+++ b/library/std_detect/src/detect/arch/loongarch.rs
@@ -2,7 +2,7 @@
 
 features! {
     @TARGET: loongarch;
-    @CFG: target_arch = "loongarch64";
+    @CFG: any(target_arch = "loongarch32", target_arch = "loongarch64");
     @MACRO_NAME: is_loongarch_feature_detected;
     @MACRO_ATTRS:
     /// Checks if `loongarch` feature is enabled.
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/mips.rs b/library/std_detect/src/detect/arch/mips.rs
index e185fdfcaac..e185fdfcaac 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/mips.rs
+++ b/library/std_detect/src/detect/arch/mips.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/mips64.rs b/library/std_detect/src/detect/arch/mips64.rs
index 69fe4869d30..69fe4869d30 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/mips64.rs
+++ b/library/std_detect/src/detect/arch/mips64.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/mod.rs b/library/std_detect/src/detect/arch/mod.rs
index d5a13acc028..b0be554ed89 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/mod.rs
+++ b/library/std_detect/src/detect/arch/mod.rs
@@ -49,7 +49,7 @@ cfg_if! {
     } else if #[cfg(target_arch = "mips64")] {
         #[unstable(feature = "stdarch_mips_feature_detection", issue = "111188")]
         pub use mips64::*;
-    } else if #[cfg(target_arch = "loongarch64")] {
+    } else if #[cfg(any(target_arch = "loongarch32", target_arch = "loongarch64"))] {
         #[stable(feature = "stdarch_loongarch_feature", since = "1.89.0")]
         pub use loongarch::*;
     } else if #[cfg(target_arch = "s390x")] {
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/powerpc.rs b/library/std_detect/src/detect/arch/powerpc.rs
index c390993a48a..c390993a48a 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/powerpc.rs
+++ b/library/std_detect/src/detect/arch/powerpc.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/powerpc64.rs b/library/std_detect/src/detect/arch/powerpc64.rs
index cf05baa6f79..cf05baa6f79 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/powerpc64.rs
+++ b/library/std_detect/src/detect/arch/powerpc64.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/riscv.rs b/library/std_detect/src/detect/arch/riscv.rs
index b86190d7bbf..b86190d7bbf 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/riscv.rs
+++ b/library/std_detect/src/detect/arch/riscv.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/s390x.rs b/library/std_detect/src/detect/arch/s390x.rs
index 4c20d011680..4c20d011680 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/s390x.rs
+++ b/library/std_detect/src/detect/arch/s390x.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/arch/x86.rs b/library/std_detect/src/detect/arch/x86.rs
index 28b3e3cfb35..28b3e3cfb35 100644
--- a/library/stdarch/crates/std_detect/src/detect/arch/x86.rs
+++ b/library/std_detect/src/detect/arch/x86.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/bit.rs b/library/std_detect/src/detect/bit.rs
index 6f06c5523e4..6f06c5523e4 100644
--- a/library/stdarch/crates/std_detect/src/detect/bit.rs
+++ b/library/std_detect/src/detect/bit.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/cache.rs b/library/std_detect/src/detect/cache.rs
index 83bcedea612..1a42e091463 100644
--- a/library/stdarch/crates/std_detect/src/detect/cache.rs
+++ b/library/std_detect/src/detect/cache.rs
@@ -3,9 +3,7 @@
 
 #![allow(dead_code)] // not used on all platforms
 
-use core::sync::atomic::Ordering;
-
-use core::sync::atomic::AtomicUsize;
+use core::sync::atomic::{AtomicUsize, Ordering};
 
 /// Sets the `bit` of `x`.
 #[inline]
@@ -40,20 +38,14 @@ impl Initializer {
     /// Tests the `bit` of the cache.
     #[inline]
     pub(crate) fn test(self, bit: u32) -> bool {
-        debug_assert!(
-            bit < CACHE_CAPACITY,
-            "too many features, time to increase the cache size!"
-        );
+        debug_assert!(bit < CACHE_CAPACITY, "too many features, time to increase the cache size!");
         test_bit(self.0, bit)
     }
 
     /// Sets the `bit` of the cache.
     #[inline]
     pub(crate) fn set(&mut self, bit: u32) {
-        debug_assert!(
-            bit < CACHE_CAPACITY,
-            "too many features, time to increase the cache size!"
-        );
+        debug_assert!(bit < CACHE_CAPACITY, "too many features, time to increase the cache size!");
         let v = self.0;
         self.0 = set_bit(v, bit);
     }
@@ -61,10 +53,7 @@ impl Initializer {
     /// Unsets the `bit` of the cache.
     #[inline]
     pub(crate) fn unset(&mut self, bit: u32) {
-        debug_assert!(
-            bit < CACHE_CAPACITY,
-            "too many features, time to increase the cache size!"
-        );
+        debug_assert!(bit < CACHE_CAPACITY, "too many features, time to increase the cache size!");
         let v = self.0;
         self.0 = unset_bit(v, bit);
     }
@@ -73,11 +62,7 @@ impl Initializer {
 /// This global variable is a cache of the features supported by the CPU.
 // Note: the third slot is only used in x86
 // Another Slot can be added if needed without any change to `Initializer`
-static CACHE: [Cache; 3] = [
-    Cache::uninitialized(),
-    Cache::uninitialized(),
-    Cache::uninitialized(),
-];
+static CACHE: [Cache; 3] = [Cache::uninitialized(), Cache::uninitialized(), Cache::uninitialized()];
 
 /// Feature cache with capacity for `size_of::<usize>() * 8 - 1` features.
 ///
@@ -104,19 +89,14 @@ impl Cache {
     #[inline]
     pub(crate) fn test(&self, bit: u32) -> Option<bool> {
         let cached = self.0.load(Ordering::Relaxed);
-        if cached == 0 {
-            None
-        } else {
-            Some(test_bit(cached as u128, bit))
-        }
+        if cached == 0 { None } else { Some(test_bit(cached as u128, bit)) }
     }
 
     /// Initializes the cache.
     #[inline]
     fn initialize(&self, value: usize) -> usize {
         debug_assert_eq!((value & !Cache::MASK), 0);
-        self.0
-            .store(value | Cache::INITIALIZED_BIT, Ordering::Relaxed);
+        self.0.store(value | Cache::INITIALIZED_BIT, Ordering::Relaxed);
         value
     }
 }
@@ -217,7 +197,5 @@ pub(crate) fn test(bit: u32) -> bool {
     } else {
         (bit - 2 * Cache::CAPACITY, 2)
     };
-    CACHE[idx]
-        .test(relative_bit)
-        .unwrap_or_else(|| detect_and_initialize().test(bit))
+    CACHE[idx].test(relative_bit).unwrap_or_else(|| detect_and_initialize().test(bit))
 }
diff --git a/library/stdarch/crates/std_detect/src/detect/macros.rs b/library/std_detect/src/detect/macros.rs
index a2994fb7daa..c2a006d3753 100644
--- a/library/stdarch/crates/std_detect/src/detect/macros.rs
+++ b/library/std_detect/src/detect/macros.rs
@@ -131,7 +131,7 @@ macro_rules! features {
             };
         }
 
-        #[test]
+        #[test] //tidy:skip
         #[deny(unexpected_cfgs)]
         #[deny(unfulfilled_lint_expectations)]
         fn unexpected_cfgs() {
diff --git a/library/stdarch/crates/std_detect/src/detect/mod.rs b/library/std_detect/src/detect/mod.rs
index 8fd3d957932..f936a5a1345 100644
--- a/library/stdarch/crates/std_detect/src/detect/mod.rs
+++ b/library/std_detect/src/detect/mod.rs
@@ -29,7 +29,6 @@ mod arch;
 #[doc(hidden)]
 #[unstable(feature = "stdarch_internal", issue = "none")]
 pub use self::arch::__is_feature_detected;
-
 pub(crate) use self::arch::Feature;
 
 mod bit;
@@ -103,6 +102,7 @@ pub fn features() -> impl Iterator<Item = (&'static str, bool)> {
             target_arch = "powerpc64",
             target_arch = "mips",
             target_arch = "mips64",
+            target_arch = "loongarch32",
             target_arch = "loongarch64",
             target_arch = "s390x",
         ))] {
diff --git a/library/stdarch/crates/std_detect/src/detect/os/aarch64.rs b/library/std_detect/src/detect/os/aarch64.rs
index 1ff2a17e6e1..c2c754ccf8d 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/aarch64.rs
+++ b/library/std_detect/src/detect/os/aarch64.rs
@@ -17,9 +17,10 @@
 //! - [Linux documentation](https://www.kernel.org/doc/Documentation/arm64/cpu-feature-registers.txt)
 //! - [ARM documentation](https://developer.arm.com/documentation/ddi0601/2022-12/AArch64-Registers?lang=en)
 
-use crate::detect::{Feature, cache};
 use core::arch::asm;
 
+use crate::detect::{Feature, cache};
+
 /// Try to read the features from the system registers.
 ///
 /// This will cause SIGILL if the current OS is not trapping the mrs instruction.
@@ -104,10 +105,7 @@ pub(crate) fn parse_system_registers(
         let sha2 = bits_shift(aa64isar0, 15, 12) >= 1;
         enable_feature(Feature::sha2, asimd && sha1 && sha2);
         enable_feature(Feature::rdm, asimd && bits_shift(aa64isar0, 31, 28) >= 1);
-        enable_feature(
-            Feature::dotprod,
-            asimd && bits_shift(aa64isar0, 47, 44) >= 1,
-        );
+        enable_feature(Feature::dotprod, asimd && bits_shift(aa64isar0, 47, 44) >= 1);
         enable_feature(Feature::sve, asimd && bits_shift(aa64pfr0, 35, 32) >= 1);
     }
 
diff --git a/library/stdarch/crates/std_detect/src/detect/os/darwin/aarch64.rs b/library/std_detect/src/detect/os/darwin/aarch64.rs
index 44d921689e5..f5409361d93 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/darwin/aarch64.rs
+++ b/library/std_detect/src/detect/os/darwin/aarch64.rs
@@ -2,9 +2,10 @@
 //!
 //! <https://developer.apple.com/documentation/kernel/1387446-sysctlbyname/determining_instruction_set_characteristics>
 
-use crate::detect::{Feature, cache};
 use core::ffi::CStr;
 
+use crate::detect::{Feature, cache};
+
 #[inline]
 fn _sysctlbyname(name: &CStr) -> bool {
     use libc;
@@ -14,13 +15,7 @@ fn _sysctlbyname(name: &CStr) -> bool {
     let enabled_ptr = &mut enabled as *mut i32 as *mut libc::c_void;
 
     let ret = unsafe {
-        libc::sysctlbyname(
-            name.as_ptr(),
-            enabled_ptr,
-            &mut enabled_len,
-            core::ptr::null_mut(),
-            0,
-        )
+        libc::sysctlbyname(name.as_ptr(), enabled_ptr, &mut enabled_len, core::ptr::null_mut(), 0)
     };
 
     match ret {
diff --git a/library/stdarch/crates/std_detect/src/detect/os/freebsd/aarch64.rs b/library/std_detect/src/detect/os/freebsd/aarch64.rs
index ccc48f53605..ccc48f53605 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/freebsd/aarch64.rs
+++ b/library/std_detect/src/detect/os/freebsd/aarch64.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/os/freebsd/arm.rs b/library/std_detect/src/detect/os/freebsd/arm.rs
index 0a15156e1bd..0a15156e1bd 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/freebsd/arm.rs
+++ b/library/std_detect/src/detect/os/freebsd/arm.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/os/freebsd/auxvec.rs b/library/std_detect/src/detect/os/freebsd/auxvec.rs
index 4e72bf22d76..2a7b87c05d1 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/freebsd/auxvec.rs
+++ b/library/std_detect/src/detect/os/freebsd/auxvec.rs
@@ -54,11 +54,8 @@ fn archauxv(key: libc::c_int) -> usize {
         // https://github.com/freebsd/freebsd-src/blob/release/11.4.0/sys/sys/auxv.h
         // FreeBSD 11 support in std has been removed in Rust 1.75 (https://github.com/rust-lang/rust/pull/114521),
         // so we can safely use this function.
-        let res = libc::elf_aux_info(
-            key,
-            &mut out as *mut libc::c_ulong as *mut libc::c_void,
-            OUT_LEN,
-        );
+        let res =
+            libc::elf_aux_info(key, &mut out as *mut libc::c_ulong as *mut libc::c_void, OUT_LEN);
         // If elf_aux_info fails, `out` will be left at zero (which is the proper default value).
         debug_assert!(res == 0 || out == 0);
     }
diff --git a/library/stdarch/crates/std_detect/src/detect/os/freebsd/mod.rs b/library/std_detect/src/detect/os/freebsd/mod.rs
index ade7fb6269d..ade7fb6269d 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/freebsd/mod.rs
+++ b/library/std_detect/src/detect/os/freebsd/mod.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/os/freebsd/powerpc.rs b/library/std_detect/src/detect/os/freebsd/powerpc.rs
index d03af68cd08..d03af68cd08 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/freebsd/powerpc.rs
+++ b/library/std_detect/src/detect/os/freebsd/powerpc.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/os/linux/aarch64.rs b/library/std_detect/src/detect/os/linux/aarch64.rs
index 22a9cefff7b..87a9d6ebb88 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/linux/aarch64.rs
+++ b/library/std_detect/src/detect/os/linux/aarch64.rs
@@ -343,14 +343,8 @@ impl AtHwcap {
             enable_feature(Feature::sve2, sve2);
             enable_feature(Feature::sve2p1, self.sve2p1 && sve2);
             // SVE2 extensions require SVE2 and crypto features
-            enable_feature(
-                Feature::sve2_aes,
-                self.sveaes && self.svepmull && sve2 && self.aes,
-            );
-            enable_feature(
-                Feature::sve2_sm4,
-                self.svesm4 && sve2 && self.sm3 && self.sm4,
-            );
+            enable_feature(Feature::sve2_aes, self.sveaes && self.svepmull && sve2 && self.aes);
+            enable_feature(Feature::sve2_sm4, self.svesm4 && sve2 && self.sm3 && self.sm4);
             enable_feature(
                 Feature::sve2_sha3,
                 self.svesha3 && sve2 && self.sha512 && self.sha3 && self.sha1 && self.sha2,
@@ -401,84 +395,4 @@ impl AtHwcap {
 
 #[cfg(target_endian = "little")]
 #[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[cfg(feature = "std_detect_file_io")]
-    mod auxv_from_file {
-        use super::auxvec::auxv_from_file;
-        use super::*;
-        // The baseline hwcaps used in the (artificial) auxv test files.
-        fn baseline_hwcaps() -> AtHwcap {
-            AtHwcap {
-                fp: true,
-                asimd: true,
-                aes: true,
-                pmull: true,
-                sha1: true,
-                sha2: true,
-                crc32: true,
-                atomics: true,
-                fphp: true,
-                asimdhp: true,
-                asimdrdm: true,
-                lrcpc: true,
-                dcpop: true,
-                asimddp: true,
-                ssbs: true,
-                ..AtHwcap::default()
-            }
-        }
-
-        #[test]
-        fn linux_empty_hwcap2_aarch64() {
-            let file = concat!(
-                env!("CARGO_MANIFEST_DIR"),
-                "/src/detect/test_data/linux-empty-hwcap2-aarch64.auxv"
-            );
-            println!("file: {file}");
-            let v = auxv_from_file(file).unwrap();
-            println!("HWCAP : 0x{:0x}", v.hwcap);
-            println!("HWCAP2: 0x{:0x}", v.hwcap2);
-            assert_eq!(AtHwcap::from(v), baseline_hwcaps());
-        }
-        #[test]
-        fn linux_no_hwcap2_aarch64() {
-            let file = concat!(
-                env!("CARGO_MANIFEST_DIR"),
-                "/src/detect/test_data/linux-no-hwcap2-aarch64.auxv"
-            );
-            println!("file: {file}");
-            let v = auxv_from_file(file).unwrap();
-            println!("HWCAP : 0x{:0x}", v.hwcap);
-            println!("HWCAP2: 0x{:0x}", v.hwcap2);
-            assert_eq!(AtHwcap::from(v), baseline_hwcaps());
-        }
-        #[test]
-        fn linux_hwcap2_aarch64() {
-            let file = concat!(
-                env!("CARGO_MANIFEST_DIR"),
-                "/src/detect/test_data/linux-hwcap2-aarch64.auxv"
-            );
-            println!("file: {file}");
-            let v = auxv_from_file(file).unwrap();
-            println!("HWCAP : 0x{:0x}", v.hwcap);
-            println!("HWCAP2: 0x{:0x}", v.hwcap2);
-            assert_eq!(
-                AtHwcap::from(v),
-                AtHwcap {
-                    // Some other HWCAP bits.
-                    paca: true,
-                    pacg: true,
-                    // HWCAP2-only bits.
-                    dcpodp: true,
-                    frint: true,
-                    rng: true,
-                    bti: true,
-                    mte: true,
-                    ..baseline_hwcaps()
-                }
-            );
-        }
-    }
-}
+mod tests;
diff --git a/library/std_detect/src/detect/os/linux/aarch64/tests.rs b/library/std_detect/src/detect/os/linux/aarch64/tests.rs
new file mode 100644
index 00000000000..a3562f2fd93
--- /dev/null
+++ b/library/std_detect/src/detect/os/linux/aarch64/tests.rs
@@ -0,0 +1,77 @@
+use super::*;
+
+#[cfg(feature = "std_detect_file_io")]
+mod auxv_from_file {
+    use super::auxvec::auxv_from_file;
+    use super::*;
+    // The baseline hwcaps used in the (artificial) auxv test files.
+    fn baseline_hwcaps() -> AtHwcap {
+        AtHwcap {
+            fp: true,
+            asimd: true,
+            aes: true,
+            pmull: true,
+            sha1: true,
+            sha2: true,
+            crc32: true,
+            atomics: true,
+            fphp: true,
+            asimdhp: true,
+            asimdrdm: true,
+            lrcpc: true,
+            dcpop: true,
+            asimddp: true,
+            ssbs: true,
+            ..AtHwcap::default()
+        }
+    }
+
+    #[test]
+    fn linux_empty_hwcap2_aarch64() {
+        let file = concat!(
+            env!("CARGO_MANIFEST_DIR"),
+            "/src/detect/test_data/linux-empty-hwcap2-aarch64.auxv"
+        );
+        println!("file: {file}");
+        let v = auxv_from_file(file).unwrap();
+        println!("HWCAP : 0x{:0x}", v.hwcap);
+        println!("HWCAP2: 0x{:0x}", v.hwcap2);
+        assert_eq!(AtHwcap::from(v), baseline_hwcaps());
+    }
+    #[test]
+    fn linux_no_hwcap2_aarch64() {
+        let file = concat!(
+            env!("CARGO_MANIFEST_DIR"),
+            "/src/detect/test_data/linux-no-hwcap2-aarch64.auxv"
+        );
+        println!("file: {file}");
+        let v = auxv_from_file(file).unwrap();
+        println!("HWCAP : 0x{:0x}", v.hwcap);
+        println!("HWCAP2: 0x{:0x}", v.hwcap2);
+        assert_eq!(AtHwcap::from(v), baseline_hwcaps());
+    }
+    #[test]
+    fn linux_hwcap2_aarch64() {
+        let file =
+            concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-hwcap2-aarch64.auxv");
+        println!("file: {file}");
+        let v = auxv_from_file(file).unwrap();
+        println!("HWCAP : 0x{:0x}", v.hwcap);
+        println!("HWCAP2: 0x{:0x}", v.hwcap2);
+        assert_eq!(
+            AtHwcap::from(v),
+            AtHwcap {
+                // Some other HWCAP bits.
+                paca: true,
+                pacg: true,
+                // HWCAP2-only bits.
+                dcpodp: true,
+                frint: true,
+                rng: true,
+                bti: true,
+                mte: true,
+                ..baseline_hwcaps()
+            }
+        );
+    }
+}
diff --git a/library/stdarch/crates/std_detect/src/detect/os/linux/arm.rs b/library/std_detect/src/detect/os/linux/arm.rs
index bbb173227d0..bbb173227d0 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/linux/arm.rs
+++ b/library/std_detect/src/detect/os/linux/arm.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/os/linux/auxvec.rs b/library/std_detect/src/detect/os/linux/auxvec.rs
index c30379ff065..443caaaa186 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/linux/auxvec.rs
+++ b/library/std_detect/src/detect/os/linux/auxvec.rs
@@ -80,6 +80,7 @@ pub(crate) fn auxv() -> Result<AuxVec, ()> {
             target_arch = "riscv64",
             target_arch = "mips",
             target_arch = "mips64",
+            target_arch = "loongarch32",
             target_arch = "loongarch64",
         ))]
         {
@@ -118,7 +119,7 @@ pub(crate) fn auxv() -> Result<AuxVec, ()> {
     {
         // If calling getauxval fails, try to read the auxiliary vector from
         // its file:
-        auxv_from_file("/proc/self/auxv")
+        auxv_from_file("/proc/self/auxv").map_err(|_| ())
     }
     #[cfg(not(feature = "std_detect_file_io"))]
     {
@@ -156,17 +157,22 @@ fn getauxval(key: usize) -> Result<usize, ()> {
 /// Tries to read the auxiliary vector from the `file`. If this fails, this
 /// function returns `Err`.
 #[cfg(feature = "std_detect_file_io")]
-pub(super) fn auxv_from_file(file: &str) -> Result<AuxVec, ()> {
+pub(super) fn auxv_from_file(file: &str) -> Result<AuxVec, alloc::string::String> {
     let file = super::read_file(file)?;
+    auxv_from_file_bytes(&file)
+}
 
+/// Read auxiliary vector from a slice of bytes.
+#[cfg(feature = "std_detect_file_io")]
+pub(super) fn auxv_from_file_bytes(bytes: &[u8]) -> Result<AuxVec, alloc::string::String> {
     // See <https://github.com/torvalds/linux/blob/v5.15/include/uapi/linux/auxvec.h>.
     //
     // The auxiliary vector contains at most 34 (key,value) fields: from
     // `AT_MINSIGSTKSZ` to `AT_NULL`, but its number may increase.
-    let len = file.len();
+    let len = bytes.len();
     let mut buf = alloc::vec![0_usize; 1 + len / core::mem::size_of::<usize>()];
     unsafe {
-        core::ptr::copy_nonoverlapping(file.as_ptr(), buf.as_mut_ptr() as *mut u8, len);
+        core::ptr::copy_nonoverlapping(bytes.as_ptr(), buf.as_mut_ptr() as *mut u8, len);
     }
 
     auxv_from_buf(&buf)
@@ -175,13 +181,14 @@ pub(super) fn auxv_from_file(file: &str) -> Result<AuxVec, ()> {
 /// Tries to interpret the `buffer` as an auxiliary vector. If that fails, this
 /// function returns `Err`.
 #[cfg(feature = "std_detect_file_io")]
-fn auxv_from_buf(buf: &[usize]) -> Result<AuxVec, ()> {
+fn auxv_from_buf(buf: &[usize]) -> Result<AuxVec, alloc::string::String> {
     // Targets with only AT_HWCAP:
     #[cfg(any(
         target_arch = "riscv32",
         target_arch = "riscv64",
         target_arch = "mips",
         target_arch = "mips64",
+        target_arch = "loongarch32",
         target_arch = "loongarch64",
     ))]
     {
@@ -220,120 +227,8 @@ fn auxv_from_buf(buf: &[usize]) -> Result<AuxVec, ()> {
     }
     // Suppress unused variable
     let _ = buf;
-    Err(())
+    Err(alloc::string::String::from("hwcap not found"))
 }
 
 #[cfg(test)]
-mod tests {
-    use super::*;
-
-    // FIXME: on mips/mips64 getauxval returns 0, and /proc/self/auxv
-    // does not always contain the AT_HWCAP key under qemu.
-    #[cfg(any(
-        target_arch = "arm",
-        target_arch = "powerpc",
-        target_arch = "powerpc64",
-        target_arch = "s390x",
-    ))]
-    #[test]
-    fn auxv_crate() {
-        let v = auxv();
-        if let Ok(hwcap) = getauxval(AT_HWCAP) {
-            let rt_hwcap = v.expect("failed to find hwcap key").hwcap;
-            assert_eq!(rt_hwcap, hwcap);
-        }
-
-        // Targets with AT_HWCAP and AT_HWCAP2:
-        #[cfg(any(
-            target_arch = "aarch64",
-            target_arch = "arm",
-            target_arch = "powerpc",
-            target_arch = "powerpc64",
-            target_arch = "s390x",
-        ))]
-        {
-            if let Ok(hwcap2) = getauxval(AT_HWCAP2) {
-                let rt_hwcap2 = v.expect("failed to find hwcap2 key").hwcap2;
-                assert_eq!(rt_hwcap2, hwcap2);
-            }
-        }
-    }
-
-    #[test]
-    fn auxv_dump() {
-        if let Ok(auxvec) = auxv() {
-            println!("{:?}", auxvec);
-        } else {
-            println!("both getauxval() and reading /proc/self/auxv failed!");
-        }
-    }
-
-    #[cfg(feature = "std_detect_file_io")]
-    cfg_if::cfg_if! {
-        if #[cfg(target_arch = "arm")] {
-            #[test]
-            fn linux_rpi3() {
-                let file = concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-rpi3.auxv");
-                println!("file: {file}");
-                let v = auxv_from_file(file).unwrap();
-                assert_eq!(v.hwcap, 4174038);
-                assert_eq!(v.hwcap2, 16);
-            }
-
-            #[test]
-            fn linux_macos_vb() {
-                let file = concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/macos-virtualbox-linux-x86-4850HQ.auxv");
-                println!("file: {file}");
-                // The file contains HWCAP but not HWCAP2. In that case, we treat HWCAP2 as zero.
-                let v = auxv_from_file(file).unwrap();
-                assert_eq!(v.hwcap, 126614527);
-                assert_eq!(v.hwcap2, 0);
-            }
-        } else if #[cfg(target_arch = "aarch64")] {
-            #[cfg(target_endian = "little")]
-            #[test]
-            fn linux_artificial_aarch64() {
-                let file = concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-artificial-aarch64.auxv");
-                println!("file: {file}");
-                let v = auxv_from_file(file).unwrap();
-                assert_eq!(v.hwcap, 0x0123456789abcdef);
-                assert_eq!(v.hwcap2, 0x02468ace13579bdf);
-            }
-            #[cfg(target_endian = "little")]
-            #[test]
-            fn linux_no_hwcap2_aarch64() {
-                let file = concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-no-hwcap2-aarch64.auxv");
-                println!("file: {file}");
-                let v = auxv_from_file(file).unwrap();
-                // An absent HWCAP2 is treated as zero, and does not prevent acceptance of HWCAP.
-                assert_ne!(v.hwcap, 0);
-                assert_eq!(v.hwcap2, 0);
-            }
-        }
-    }
-
-    #[test]
-    #[cfg(feature = "std_detect_file_io")]
-    fn auxv_dump_procfs() {
-        if let Ok(auxvec) = auxv_from_file("/proc/self/auxv") {
-            println!("{:?}", auxvec);
-        } else {
-            println!("reading /proc/self/auxv failed!");
-        }
-    }
-
-    #[cfg(any(
-        target_arch = "aarch64",
-        target_arch = "arm",
-        target_arch = "powerpc",
-        target_arch = "powerpc64",
-        target_arch = "s390x",
-    ))]
-    #[test]
-    #[cfg(feature = "std_detect_file_io")]
-    fn auxv_crate_procfs() {
-        if let Ok(procfs_auxv) = auxv_from_file("/proc/self/auxv") {
-            assert_eq!(auxv().unwrap(), procfs_auxv);
-        }
-    }
-}
+mod tests;
diff --git a/library/std_detect/src/detect/os/linux/auxvec/tests.rs b/library/std_detect/src/detect/os/linux/auxvec/tests.rs
new file mode 100644
index 00000000000..536615fa272
--- /dev/null
+++ b/library/std_detect/src/detect/os/linux/auxvec/tests.rs
@@ -0,0 +1,109 @@
+use super::*;
+
+// FIXME: on mips/mips64 getauxval returns 0, and /proc/self/auxv
+// does not always contain the AT_HWCAP key under qemu.
+#[cfg(any(
+    target_arch = "arm",
+    target_arch = "powerpc",
+    target_arch = "powerpc64",
+    target_arch = "s390x",
+))]
+#[test]
+fn auxv_crate() {
+    let v = auxv();
+    if let Ok(hwcap) = getauxval(AT_HWCAP) {
+        let rt_hwcap = v.expect("failed to find hwcap key").hwcap;
+        assert_eq!(rt_hwcap, hwcap);
+    }
+
+    // Targets with AT_HWCAP and AT_HWCAP2:
+    #[cfg(any(
+        target_arch = "aarch64",
+        target_arch = "arm",
+        target_arch = "powerpc",
+        target_arch = "powerpc64",
+        target_arch = "s390x",
+    ))]
+    {
+        if let Ok(hwcap2) = getauxval(AT_HWCAP2) {
+            let rt_hwcap2 = v.expect("failed to find hwcap2 key").hwcap2;
+            assert_eq!(rt_hwcap2, hwcap2);
+        }
+    }
+}
+
+#[test]
+fn auxv_dump() {
+    if let Ok(auxvec) = auxv() {
+        println!("{:?}", auxvec);
+    } else {
+        println!("both getauxval() and reading /proc/self/auxv failed!");
+    }
+}
+
+#[cfg(feature = "std_detect_file_io")]
+cfg_if::cfg_if! {
+    if #[cfg(target_arch = "arm")] {
+        // The tests below can be executed under qemu, where we do not have access to the test
+        // files on disk, so we need to embed them with `include_bytes!`.
+        #[test]
+        fn linux_rpi3() {
+            let auxv = include_bytes!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-rpi3.auxv"));
+            let v = auxv_from_file_bytes(auxv).unwrap();
+            assert_eq!(v.hwcap, 4174038);
+            assert_eq!(v.hwcap2, 16);
+        }
+
+        #[test]
+        fn linux_macos_vb() {
+            let auxv = include_bytes!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/macos-virtualbox-linux-x86-4850HQ.auxv"));
+            // The file contains HWCAP but not HWCAP2. In that case, we treat HWCAP2 as zero.
+            let v = auxv_from_file_bytes(auxv).unwrap();
+            assert_eq!(v.hwcap, 126614527);
+            assert_eq!(v.hwcap2, 0);
+        }
+    } else if #[cfg(target_arch = "aarch64")] {
+        #[cfg(target_endian = "little")]
+        #[test]
+        fn linux_artificial_aarch64() {
+            let auxv = include_bytes!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-artificial-aarch64.auxv"));
+            let v = auxv_from_file_bytes(auxv).unwrap();
+            assert_eq!(v.hwcap, 0x0123456789abcdef);
+            assert_eq!(v.hwcap2, 0x02468ace13579bdf);
+        }
+        #[cfg(target_endian = "little")]
+        #[test]
+        fn linux_no_hwcap2_aarch64() {
+            let auxv = include_bytes!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/detect/test_data/linux-no-hwcap2-aarch64.auxv"));
+            let v = auxv_from_file_bytes(auxv).unwrap();
+            // An absent HWCAP2 is treated as zero, and does not prevent acceptance of HWCAP.
+            assert_ne!(v.hwcap, 0);
+            assert_eq!(v.hwcap2, 0);
+        }
+    }
+}
+
+#[test]
+#[cfg(feature = "std_detect_file_io")]
+fn auxv_dump_procfs() {
+    if let Ok(auxvec) = auxv_from_file("/proc/self/auxv") {
+        println!("{:?}", auxvec);
+    } else {
+        println!("reading /proc/self/auxv failed!");
+    }
+}
+
+#[cfg(any(
+    target_arch = "aarch64",
+    target_arch = "arm",
+    target_arch = "powerpc",
+    target_arch = "powerpc64",
+    target_arch = "s390x",
+))]
+#[test]
+#[cfg(feature = "std_detect_file_io")]
+fn auxv_crate_procfs() {
+    if let Ok(procfs_auxv) = auxv_from_file("/proc/self/auxv") {
+        assert_eq!(auxv().unwrap(), procfs_auxv);
+    }
+}
diff --git a/library/stdarch/crates/std_detect/src/detect/os/linux/loongarch.rs b/library/std_detect/src/detect/os/linux/loongarch.rs
index 14cc7a73183..e97fda11d08 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/linux/loongarch.rs
+++ b/library/std_detect/src/detect/os/linux/loongarch.rs
@@ -1,8 +1,9 @@
 //! Run-time feature detection for LoongArch on Linux.
 
+use core::arch::asm;
+
 use super::auxvec;
 use crate::detect::{Feature, bit, cache};
-use core::arch::asm;
 
 /// Try to read the features from the auxiliary vector.
 pub(crate) fn detect_features() -> cache::Initializer {
@@ -43,16 +44,8 @@ pub(crate) fn detect_features() -> cache::Initializer {
     //
     // [hwcap]: https://github.com/torvalds/linux/blob/master/arch/loongarch/include/uapi/asm/hwcap.h
     if let Ok(auxv) = auxvec::auxv() {
-        enable_feature(
-            &mut value,
-            Feature::f,
-            bit::test(cpucfg2, 1) && bit::test(auxv.hwcap, 3),
-        );
-        enable_feature(
-            &mut value,
-            Feature::d,
-            bit::test(cpucfg2, 2) && bit::test(auxv.hwcap, 3),
-        );
+        enable_feature(&mut value, Feature::f, bit::test(cpucfg2, 1) && bit::test(auxv.hwcap, 3));
+        enable_feature(&mut value, Feature::d, bit::test(cpucfg2, 2) && bit::test(auxv.hwcap, 3));
         enable_feature(&mut value, Feature::lsx, bit::test(auxv.hwcap, 4));
         enable_feature(&mut value, Feature::lasx, bit::test(auxv.hwcap, 5));
         enable_feature(
diff --git a/library/stdarch/crates/std_detect/src/detect/os/linux/mips.rs b/library/std_detect/src/detect/os/linux/mips.rs
index 0cfa8869887..0cfa8869887 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/linux/mips.rs
+++ b/library/std_detect/src/detect/os/linux/mips.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/os/linux/mod.rs b/library/std_detect/src/detect/os/linux/mod.rs
index 8c689d0b1f0..5ae2aaeab5b 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/linux/mod.rs
+++ b/library/std_detect/src/detect/os/linux/mod.rs
@@ -6,14 +6,16 @@ use alloc::vec::Vec;
 mod auxvec;
 
 #[cfg(feature = "std_detect_file_io")]
-fn read_file(path: &str) -> Result<Vec<u8>, ()> {
-    let mut path = Vec::from(path.as_bytes());
+fn read_file(orig_path: &str) -> Result<Vec<u8>, alloc::string::String> {
+    use alloc::format;
+
+    let mut path = Vec::from(orig_path.as_bytes());
     path.push(0);
 
     unsafe {
         let file = libc::open(path.as_ptr() as *const libc::c_char, libc::O_RDONLY);
         if file == -1 {
-            return Err(());
+            return Err(format!("Cannot open file at {orig_path}"));
         }
 
         let mut data = Vec::new();
@@ -23,7 +25,7 @@ fn read_file(path: &str) -> Result<Vec<u8>, ()> {
             match libc::read(file, spare.as_mut_ptr() as *mut _, spare.len()) {
                 -1 => {
                     libc::close(file);
-                    return Err(());
+                    return Err(format!("Error while reading from file at {orig_path}"));
                 }
                 0 => break,
                 n => data.set_len(data.len() + n as usize),
@@ -51,7 +53,7 @@ cfg_if::cfg_if! {
     } else if #[cfg(any(target_arch = "powerpc", target_arch = "powerpc64"))] {
         mod powerpc;
         pub(crate) use self::powerpc::detect_features;
-    } else if #[cfg(target_arch = "loongarch64")] {
+    } else if #[cfg(any(target_arch = "loongarch32", target_arch = "loongarch64"))] {
         mod loongarch;
         pub(crate) use self::loongarch::detect_features;
     } else if #[cfg(target_arch = "s390x")] {
diff --git a/library/stdarch/crates/std_detect/src/detect/os/linux/powerpc.rs b/library/std_detect/src/detect/os/linux/powerpc.rs
index 6a4f7e715d9..6a4f7e715d9 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/linux/powerpc.rs
+++ b/library/std_detect/src/detect/os/linux/powerpc.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/os/linux/riscv.rs b/library/std_detect/src/detect/os/linux/riscv.rs
index db20538af95..dbb3664890e 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/linux/riscv.rs
+++ b/library/std_detect/src/detect/os/linux/riscv.rs
@@ -119,16 +119,7 @@ fn _riscv_hwprobe(out: &mut [riscv_hwprobe]) -> bool {
         cpus: *mut libc::c_ulong,
         flags: libc::c_uint,
     ) -> libc::c_long {
-        unsafe {
-            libc::syscall(
-                __NR_riscv_hwprobe,
-                pairs,
-                pair_count,
-                cpu_set_size,
-                cpus,
-                flags,
-            )
-        }
+        unsafe { libc::syscall(__NR_riscv_hwprobe, pairs, pair_count, cpu_set_size, cpus, flags) }
     }
 
     unsafe { __riscv_hwprobe(out.as_mut_ptr(), out.len(), 0, ptr::null_mut(), 0) == 0 }
diff --git a/library/stdarch/crates/std_detect/src/detect/os/linux/s390x.rs b/library/std_detect/src/detect/os/linux/s390x.rs
index 9b53f526d61..9b53f526d61 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/linux/s390x.rs
+++ b/library/std_detect/src/detect/os/linux/s390x.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/os/openbsd/aarch64.rs b/library/std_detect/src/detect/os/openbsd/aarch64.rs
index cfe4ad10ad6..2fae47b05c4 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/openbsd/aarch64.rs
+++ b/library/std_detect/src/detect/os/openbsd/aarch64.rs
@@ -4,8 +4,10 @@
 //! https://github.com/openbsd/src/commit/d335af936b9d7dd9cf655cae1ce19560c45de6c8
 //! https://github.com/golang/go/commit/cd54ef1f61945459486e9eea2f016d99ef1da925
 
+use core::mem::MaybeUninit;
+use core::ptr;
+
 use crate::detect::cache;
-use core::{mem::MaybeUninit, ptr};
 
 // Defined in machine/cpu.h.
 // https://github.com/openbsd/src/blob/72ccc03bd11da614f31f7ff76e3f6fce99bc1c79/sys/arch/arm64/include/cpu.h#L25-L40
diff --git a/library/stdarch/crates/std_detect/src/detect/os/other.rs b/library/std_detect/src/detect/os/other.rs
index 091fafc4ebf..091fafc4ebf 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/other.rs
+++ b/library/std_detect/src/detect/os/other.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/os/riscv.rs b/library/std_detect/src/detect/os/riscv.rs
index 4c59ede8029..46b7dd71eb3 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/riscv.rs
+++ b/library/std_detect/src/detect/os/riscv.rs
@@ -135,69 +135,4 @@ pub(crate) fn imply_features(mut value: cache::Initializer) -> cache::Initialize
 }
 
 #[cfg(test)]
-mod tests {
-    use super::*;
-
-    #[test]
-    fn simple_direct() {
-        let mut value = cache::Initializer::default();
-        value.set(Feature::f as u32);
-        // F (and other extensions with CSRs) -> Zicsr
-        assert!(imply_features(value).test(Feature::zicsr as u32));
-    }
-
-    #[test]
-    fn simple_indirect() {
-        let mut value = cache::Initializer::default();
-        value.set(Feature::q as u32);
-        // Q -> D, D -> F, F -> Zicsr
-        assert!(imply_features(value).test(Feature::zicsr as u32));
-    }
-
-    #[test]
-    fn complex_zcd() {
-        let mut value = cache::Initializer::default();
-        // C & D -> Zcd
-        value.set(Feature::c as u32);
-        assert!(!imply_features(value).test(Feature::zcd as u32));
-        value.set(Feature::d as u32);
-        assert!(imply_features(value).test(Feature::zcd as u32));
-    }
-
-    #[test]
-    fn group_simple_forward() {
-        let mut value = cache::Initializer::default();
-        // A -> Zalrsc & Zaamo (forward implication)
-        value.set(Feature::a as u32);
-        let value = imply_features(value);
-        assert!(value.test(Feature::zalrsc as u32));
-        assert!(value.test(Feature::zaamo as u32));
-    }
-
-    #[test]
-    fn group_simple_backward() {
-        let mut value = cache::Initializer::default();
-        // Zalrsc & Zaamo -> A (reverse implication)
-        value.set(Feature::zalrsc as u32);
-        value.set(Feature::zaamo as u32);
-        assert!(imply_features(value).test(Feature::a as u32));
-    }
-
-    #[test]
-    fn group_complex_convergence() {
-        let mut value = cache::Initializer::default();
-        // Needs 3 iterations to converge
-        // (and 4th iteration for convergence checking):
-        // 1.  [Zvksc] -> Zvks & Zvbc
-        // 2.  Zvks -> Zvksed & Zvksh & Zvkb & Zvkt
-        // 3a. [Zvkned] & [Zvknhb] & [Zvkb] & Zvkt -> {Zvkn}
-        // 3b. Zvkn & Zvbc -> {Zvknc}
-        value.set(Feature::zvksc as u32);
-        value.set(Feature::zvkned as u32);
-        value.set(Feature::zvknhb as u32);
-        value.set(Feature::zvkb as u32);
-        let value = imply_features(value);
-        assert!(value.test(Feature::zvkn as u32));
-        assert!(value.test(Feature::zvknc as u32));
-    }
-}
+mod tests;
diff --git a/library/std_detect/src/detect/os/riscv/tests.rs b/library/std_detect/src/detect/os/riscv/tests.rs
new file mode 100644
index 00000000000..99a81dee05a
--- /dev/null
+++ b/library/std_detect/src/detect/os/riscv/tests.rs
@@ -0,0 +1,64 @@
+use super::*;
+
+#[test]
+fn simple_direct() {
+    let mut value = cache::Initializer::default();
+    value.set(Feature::f as u32);
+    // F (and other extensions with CSRs) -> Zicsr
+    assert!(imply_features(value).test(Feature::zicsr as u32));
+}
+
+#[test]
+fn simple_indirect() {
+    let mut value = cache::Initializer::default();
+    value.set(Feature::q as u32);
+    // Q -> D, D -> F, F -> Zicsr
+    assert!(imply_features(value).test(Feature::zicsr as u32));
+}
+
+#[test]
+fn complex_zcd() {
+    let mut value = cache::Initializer::default();
+    // C & D -> Zcd
+    value.set(Feature::c as u32);
+    assert!(!imply_features(value).test(Feature::zcd as u32));
+    value.set(Feature::d as u32);
+    assert!(imply_features(value).test(Feature::zcd as u32));
+}
+
+#[test]
+fn group_simple_forward() {
+    let mut value = cache::Initializer::default();
+    // A -> Zalrsc & Zaamo (forward implication)
+    value.set(Feature::a as u32);
+    let value = imply_features(value);
+    assert!(value.test(Feature::zalrsc as u32));
+    assert!(value.test(Feature::zaamo as u32));
+}
+
+#[test]
+fn group_simple_backward() {
+    let mut value = cache::Initializer::default();
+    // Zalrsc & Zaamo -> A (reverse implication)
+    value.set(Feature::zalrsc as u32);
+    value.set(Feature::zaamo as u32);
+    assert!(imply_features(value).test(Feature::a as u32));
+}
+
+#[test]
+fn group_complex_convergence() {
+    let mut value = cache::Initializer::default();
+    // Needs 3 iterations to converge
+    // (and 4th iteration for convergence checking):
+    // 1.  [Zvksc] -> Zvks & Zvbc
+    // 2.  Zvks -> Zvksed & Zvksh & Zvkb & Zvkt
+    // 3a. [Zvkned] & [Zvknhb] & [Zvkb] & Zvkt -> {Zvkn}
+    // 3b. Zvkn & Zvbc -> {Zvknc}
+    value.set(Feature::zvksc as u32);
+    value.set(Feature::zvkned as u32);
+    value.set(Feature::zvknhb as u32);
+    value.set(Feature::zvkb as u32);
+    let value = imply_features(value);
+    assert!(value.test(Feature::zvkn as u32));
+    assert!(value.test(Feature::zvknc as u32));
+}
diff --git a/library/stdarch/crates/std_detect/src/detect/os/windows/aarch64.rs b/library/std_detect/src/detect/os/windows/aarch64.rs
index 937f9f26eed..937f9f26eed 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/windows/aarch64.rs
+++ b/library/std_detect/src/detect/os/windows/aarch64.rs
diff --git a/library/stdarch/crates/std_detect/src/detect/os/x86.rs b/library/std_detect/src/detect/os/x86.rs
index 8565c2f85e2..20f848ab05c 100644
--- a/library/stdarch/crates/std_detect/src/detect/os/x86.rs
+++ b/library/std_detect/src/detect/os/x86.rs
@@ -4,7 +4,6 @@
 use core::arch::x86::*;
 #[cfg(target_arch = "x86_64")]
 use core::arch::x86_64::*;
-
 use core::mem;
 
 use crate::detect::{Feature, bit, cache};
@@ -42,12 +41,7 @@ pub(crate) fn detect_features() -> cache::Initializer {
     // 0x8000_0000]. - The vendor ID is stored in 12 u8 ascii chars,
     // returned in EBX, EDX, and   ECX (in that order):
     let (max_basic_leaf, vendor_id) = unsafe {
-        let CpuidResult {
-            eax: max_basic_leaf,
-            ebx,
-            ecx,
-            edx,
-        } = __cpuid(0);
+        let CpuidResult { eax: max_basic_leaf, ebx, ecx, edx } = __cpuid(0);
         let vendor_id: [[u8; 4]; 3] = [ebx.to_ne_bytes(), edx.to_ne_bytes(), ecx.to_ne_bytes()];
         let vendor_id: [u8; 12] = mem::transmute(vendor_id);
         (max_basic_leaf, vendor_id)
@@ -60,11 +54,8 @@ pub(crate) fn detect_features() -> cache::Initializer {
 
     // EAX = 1, ECX = 0: Queries "Processor Info and Feature Bits";
     // Contains information about most x86 features.
-    let CpuidResult {
-        ecx: proc_info_ecx,
-        edx: proc_info_edx,
-        ..
-    } = unsafe { __cpuid(0x0000_0001_u32) };
+    let CpuidResult { ecx: proc_info_ecx, edx: proc_info_edx, .. } =
+        unsafe { __cpuid(0x0000_0001_u32) };
 
     // EAX = 7: Queries "Extended Features";
     // Contains information about bmi,bmi2, and avx2 support.
@@ -76,11 +67,8 @@ pub(crate) fn detect_features() -> cache::Initializer {
         extended_features_edx_leaf_1,
     ) = if max_basic_leaf >= 7 {
         let CpuidResult { ebx, ecx, edx, .. } = unsafe { __cpuid(0x0000_0007_u32) };
-        let CpuidResult {
-            eax: eax_1,
-            edx: edx_1,
-            ..
-        } = unsafe { __cpuid_count(0x0000_0007_u32, 0x0000_0001_u32) };
+        let CpuidResult { eax: eax_1, edx: edx_1, .. } =
+            unsafe { __cpuid_count(0x0000_0007_u32, 0x0000_0001_u32) };
         (ebx, ecx, edx, eax_1, edx_1)
     } else {
         (0, 0, 0, 0, 0) // CPUID does not support "Extended Features"
@@ -89,10 +77,7 @@ pub(crate) fn detect_features() -> cache::Initializer {
     // EAX = 0x8000_0000, ECX = 0: Get Highest Extended Function Supported
     // - EAX returns the max leaf value for extended information, that is,
     // `cpuid` calls in range [0x8000_0000; u32::MAX]:
-    let CpuidResult {
-        eax: extended_max_basic_leaf,
-        ..
-    } = unsafe { __cpuid(0x8000_0000_u32) };
+    let CpuidResult { eax: extended_max_basic_leaf, .. } = unsafe { __cpuid(0x8000_0000_u32) };
 
     // EAX = 0x8000_0001, ECX=0: Queries "Extended Processor Info and Feature
     // Bits"
@@ -208,10 +193,8 @@ pub(crate) fn detect_features() -> cache::Initializer {
                     // Processor Extended State Enumeration Sub-leaf (EAX = 0DH,
                     // ECX = 1):
                     if max_basic_leaf >= 0xd {
-                        let CpuidResult {
-                            eax: proc_extended_state1_eax,
-                            ..
-                        } = unsafe { __cpuid_count(0xd_u32, 1) };
+                        let CpuidResult { eax: proc_extended_state1_eax, .. } =
+                            unsafe { __cpuid_count(0xd_u32, 1) };
                         enable(proc_extended_state1_eax, 0, Feature::xsaveopt);
                         enable(proc_extended_state1_eax, 1, Feature::xsavec);
                         enable(proc_extended_state1_eax, 3, Feature::xsaves);
@@ -269,10 +252,8 @@ pub(crate) fn detect_features() -> cache::Initializer {
                     enable(extended_features_edx_leaf_1, 8, Feature::amx_complex);
 
                     if max_basic_leaf >= 0x1e {
-                        let CpuidResult {
-                            eax: amx_feature_flags_eax,
-                            ..
-                        } = unsafe { __cpuid_count(0x1e_u32, 1) };
+                        let CpuidResult { eax: amx_feature_flags_eax, .. } =
+                            unsafe { __cpuid_count(0x1e_u32, 1) };
 
                         enable(amx_feature_flags_eax, 4, Feature::amx_fp8);
                         enable(amx_feature_flags_eax, 5, Feature::amx_transpose);
diff --git a/library/stdarch/crates/std_detect/src/detect/test_data/linux-artificial-aarch64.auxv b/library/std_detect/src/detect/test_data/linux-artificial-aarch64.auxv
index ec826afcf38..ec826afcf38 100644
--- a/library/stdarch/crates/std_detect/src/detect/test_data/linux-artificial-aarch64.auxv
+++ b/library/std_detect/src/detect/test_data/linux-artificial-aarch64.auxv
Binary files differdiff --git a/library/stdarch/crates/std_detect/src/detect/test_data/linux-empty-hwcap2-aarch64.auxv b/library/std_detect/src/detect/test_data/linux-empty-hwcap2-aarch64.auxv
index 95537b73f20..95537b73f20 100644
--- a/library/stdarch/crates/std_detect/src/detect/test_data/linux-empty-hwcap2-aarch64.auxv
+++ b/library/std_detect/src/detect/test_data/linux-empty-hwcap2-aarch64.auxv
Binary files differdiff --git a/library/stdarch/crates/std_detect/src/detect/test_data/linux-hwcap2-aarch64.auxv b/library/std_detect/src/detect/test_data/linux-hwcap2-aarch64.auxv
index 1d87264b221..1d87264b221 100644
--- a/library/stdarch/crates/std_detect/src/detect/test_data/linux-hwcap2-aarch64.auxv
+++ b/library/std_detect/src/detect/test_data/linux-hwcap2-aarch64.auxv
Binary files differdiff --git a/library/stdarch/crates/std_detect/src/detect/test_data/linux-no-hwcap2-aarch64.auxv b/library/std_detect/src/detect/test_data/linux-no-hwcap2-aarch64.auxv
index 35f01cc767c..35f01cc767c 100644
--- a/library/stdarch/crates/std_detect/src/detect/test_data/linux-no-hwcap2-aarch64.auxv
+++ b/library/std_detect/src/detect/test_data/linux-no-hwcap2-aarch64.auxv
Binary files differdiff --git a/library/stdarch/crates/std_detect/src/detect/test_data/linux-rpi3.auxv b/library/std_detect/src/detect/test_data/linux-rpi3.auxv
index 0538e661f63..0538e661f63 100644
--- a/library/stdarch/crates/std_detect/src/detect/test_data/linux-rpi3.auxv
+++ b/library/std_detect/src/detect/test_data/linux-rpi3.auxv
Binary files differdiff --git a/library/stdarch/crates/std_detect/src/detect/test_data/macos-virtualbox-linux-x86-4850HQ.auxv b/library/std_detect/src/detect/test_data/macos-virtualbox-linux-x86-4850HQ.auxv
index 75abc02d178..75abc02d178 100644
--- a/library/stdarch/crates/std_detect/src/detect/test_data/macos-virtualbox-linux-x86-4850HQ.auxv
+++ b/library/std_detect/src/detect/test_data/macos-virtualbox-linux-x86-4850HQ.auxv
Binary files differdiff --git a/library/stdarch/crates/std_detect/src/lib.rs b/library/std_detect/src/lib.rs
index ab1b77bad5b..ab1b77bad5b 100644
--- a/library/stdarch/crates/std_detect/src/lib.rs
+++ b/library/std_detect/src/lib.rs
diff --git a/library/stdarch/crates/std_detect/tests/cpu-detection.rs b/library/std_detect/tests/cpu-detection.rs
index 7976aedc758..5ad32d83237 100644
--- a/library/stdarch/crates/std_detect/tests/cpu-detection.rs
+++ b/library/std_detect/tests/cpu-detection.rs
@@ -27,6 +27,16 @@
     ),
     macro_use
 )]
+#[cfg(any(
+    target_arch = "arm",
+    target_arch = "aarch64",
+    target_arch = "arm64ec",
+    target_arch = "riscv32",
+    target_arch = "riscv64",
+    target_arch = "powerpc",
+    target_arch = "powerpc64",
+    target_arch = "s390x",
+))]
 extern crate std_detect;
 
 #[test]
@@ -59,10 +69,7 @@ fn arm_linux() {
 }
 
 #[test]
-#[cfg(all(
-    target_arch = "aarch64",
-    any(target_os = "linux", target_os = "android")
-))]
+#[cfg(all(target_arch = "aarch64", any(target_os = "linux", target_os = "android")))]
 fn aarch64_linux() {
     println!("asimd: {}", is_aarch64_feature_detected!("asimd"));
     println!("neon: {}", is_aarch64_feature_detected!("neon"));
@@ -97,10 +104,7 @@ fn aarch64_linux() {
     println!("sve2-aes: {}", is_aarch64_feature_detected!("sve2-aes"));
     println!("sve2-sm4: {}", is_aarch64_feature_detected!("sve2-sm4"));
     println!("sve2-sha3: {}", is_aarch64_feature_detected!("sve2-sha3"));
-    println!(
-        "sve2-bitperm: {}",
-        is_aarch64_feature_detected!("sve2-bitperm")
-    );
+    println!("sve2-bitperm: {}", is_aarch64_feature_detected!("sve2-bitperm"));
     println!("frintts: {}", is_aarch64_feature_detected!("frintts"));
     println!("i8mm: {}", is_aarch64_feature_detected!("i8mm"));
     println!("f32mm: {}", is_aarch64_feature_detected!("f32mm"));
@@ -138,25 +142,13 @@ fn aarch64_linux() {
     println!("sme-lutv2: {}", is_aarch64_feature_detected!("sme-lutv2"));
     println!("sme-f8f16: {}", is_aarch64_feature_detected!("sme-f8f16"));
     println!("sme-f8f32: {}", is_aarch64_feature_detected!("sme-f8f32"));
-    println!(
-        "ssve-fp8fma: {}",
-        is_aarch64_feature_detected!("ssve-fp8fma")
-    );
-    println!(
-        "ssve-fp8dot4: {}",
-        is_aarch64_feature_detected!("ssve-fp8dot4")
-    );
-    println!(
-        "ssve-fp8dot2: {}",
-        is_aarch64_feature_detected!("ssve-fp8dot2")
-    );
+    println!("ssve-fp8fma: {}", is_aarch64_feature_detected!("ssve-fp8fma"));
+    println!("ssve-fp8dot4: {}", is_aarch64_feature_detected!("ssve-fp8dot4"));
+    println!("ssve-fp8dot2: {}", is_aarch64_feature_detected!("ssve-fp8dot2"));
 }
 
 #[test]
-#[cfg(all(
-    any(target_arch = "aarch64", target_arch = "arm64ec"),
-    target_os = "windows"
-))]
+#[cfg(all(any(target_arch = "aarch64", target_arch = "arm64ec"), target_os = "windows"))]
 fn aarch64_windows() {
     println!("asimd: {:?}", is_aarch64_feature_detected!("asimd"));
     println!("fp: {:?}", is_aarch64_feature_detected!("fp"));
@@ -171,10 +163,7 @@ fn aarch64_windows() {
 }
 
 #[test]
-#[cfg(all(
-    target_arch = "aarch64",
-    any(target_os = "freebsd", target_os = "openbsd")
-))]
+#[cfg(all(target_arch = "aarch64", any(target_os = "freebsd", target_os = "openbsd")))]
 fn aarch64_bsd() {
     println!("asimd: {:?}", is_aarch64_feature_detected!("asimd"));
     println!("pmull: {:?}", is_aarch64_feature_detected!("pmull"));
@@ -236,14 +225,8 @@ fn riscv_linux() {
     println!("rv32e: {}", is_riscv_feature_detected!("rv32e"));
     println!("rv64i: {}", is_riscv_feature_detected!("rv64i"));
     println!("rv128i: {}", is_riscv_feature_detected!("rv128i"));
-    println!(
-        "unaligned-scalar-mem: {}",
-        is_riscv_feature_detected!("unaligned-scalar-mem")
-    );
-    println!(
-        "unaligned-vector-mem: {}",
-        is_riscv_feature_detected!("unaligned-vector-mem")
-    );
+    println!("unaligned-scalar-mem: {}", is_riscv_feature_detected!("unaligned-scalar-mem"));
+    println!("unaligned-vector-mem: {}", is_riscv_feature_detected!("unaligned-vector-mem"));
     println!("zicsr: {}", is_riscv_feature_detected!("zicsr"));
     println!("zicntr: {}", is_riscv_feature_detected!("zicntr"));
     println!("zihpm: {}", is_riscv_feature_detected!("zihpm"));
@@ -336,10 +319,7 @@ fn powerpc_linux() {
 }
 
 #[test]
-#[cfg(all(
-    target_arch = "powerpc64",
-    any(target_os = "linux", target_os = "freebsd"),
-))]
+#[cfg(all(target_arch = "powerpc64", any(target_os = "linux", target_os = "freebsd"),))]
 fn powerpc64_linux_or_freebsd() {
     println!("altivec: {}", is_powerpc64_feature_detected!("altivec"));
     println!("vsx: {}", is_powerpc64_feature_detected!("vsx"));
diff --git a/library/stdarch/crates/std_detect/tests/macro_trailing_commas.rs b/library/std_detect/tests/macro_trailing_commas.rs
index fa3a23c7968..2fee0abdd57 100644
--- a/library/stdarch/crates/std_detect/tests/macro_trailing_commas.rs
+++ b/library/std_detect/tests/macro_trailing_commas.rs
@@ -11,6 +11,7 @@
         target_arch = "s390x",
         target_arch = "riscv32",
         target_arch = "riscv64",
+        target_arch = "loongarch32",
         target_arch = "loongarch64"
     ),
     feature(stdarch_internal)
@@ -30,7 +31,7 @@
     feature(stdarch_riscv_feature_detection)
 )]
 #![cfg_attr(
-    target_arch = "loongarch64",
+    any(target_arch = "loongarch32", target_arch = "loongarch64"),
     feature(stdarch_loongarch_feature_detection)
 )]
 
@@ -45,6 +46,7 @@
     target_arch = "s390x",
     target_arch = "riscv32",
     target_arch = "riscv64",
+    target_arch = "loongarch32",
     target_arch = "loongarch64"
 ))]
 #[macro_use]
@@ -65,8 +67,8 @@ fn aarch64() {
 }
 
 #[test]
-#[cfg(target_arch = "loongarch64")]
-fn loongarch64() {
+#[cfg(any(target_arch = "loongarch32", target_arch = "loongarch64"))]
+fn loongarch() {
     let _ = is_loongarch_feature_detected!("lsx");
     let _ = is_loongarch_feature_detected!("lsx",);
 }
diff --git a/library/stdarch/crates/std_detect/tests/x86-specific.rs b/library/std_detect/tests/x86-specific.rs
index d9ec79821ba..2ed2bb2a99e 100644
--- a/library/stdarch/crates/std_detect/tests/x86-specific.rs
+++ b/library/std_detect/tests/x86-specific.rs
@@ -1,11 +1,6 @@
 #![cfg(any(target_arch = "x86", target_arch = "x86_64"))]
 #![allow(internal_features)]
-#![feature(
-    stdarch_internal,
-    x86_amx_intrinsics,
-    xop_target_feature,
-    movrs_target_feature
-)]
+#![feature(stdarch_internal, x86_amx_intrinsics, xop_target_feature, movrs_target_feature)]
 
 #[macro_use]
 extern crate std_detect;
@@ -40,24 +35,15 @@ fn dump() {
     println!("avx512vl: {:?}", is_x86_feature_detected!("avx512vl"));
     println!("avx512_ifma: {:?}", is_x86_feature_detected!("avx512ifma"));
     println!("avx512vbmi {:?}", is_x86_feature_detected!("avx512vbmi"));
-    println!(
-        "avx512_vpopcntdq: {:?}",
-        is_x86_feature_detected!("avx512vpopcntdq")
-    );
+    println!("avx512_vpopcntdq: {:?}", is_x86_feature_detected!("avx512vpopcntdq"));
     println!("avx512vbmi2: {:?}", is_x86_feature_detected!("avx512vbmi2"));
     println!("gfni: {:?}", is_x86_feature_detected!("gfni"));
     println!("vaes: {:?}", is_x86_feature_detected!("vaes"));
     println!("vpclmulqdq: {:?}", is_x86_feature_detected!("vpclmulqdq"));
     println!("avx512vnni: {:?}", is_x86_feature_detected!("avx512vnni"));
-    println!(
-        "avx512bitalg: {:?}",
-        is_x86_feature_detected!("avx512bitalg")
-    );
+    println!("avx512bitalg: {:?}", is_x86_feature_detected!("avx512bitalg"));
     println!("avx512bf16: {:?}", is_x86_feature_detected!("avx512bf16"));
-    println!(
-        "avx512vp2intersect: {:?}",
-        is_x86_feature_detected!("avx512vp2intersect")
-    );
+    println!("avx512vp2intersect: {:?}", is_x86_feature_detected!("avx512vp2intersect"));
     println!("avx512fp16: {:?}", is_x86_feature_detected!("avx512fp16"));
     println!("fma: {:?}", is_x86_feature_detected!("fma"));
     println!("abm: {:?}", is_x86_feature_detected!("abm"));
@@ -77,15 +63,9 @@ fn dump() {
     println!("movbe: {:?}", is_x86_feature_detected!("movbe"));
     println!("avxvnni: {:?}", is_x86_feature_detected!("avxvnni"));
     println!("avxvnniint8: {:?}", is_x86_feature_detected!("avxvnniint8"));
-    println!(
-        "avxneconvert: {:?}",
-        is_x86_feature_detected!("avxneconvert")
-    );
+    println!("avxneconvert: {:?}", is_x86_feature_detected!("avxneconvert"));
     println!("avxifma: {:?}", is_x86_feature_detected!("avxifma"));
-    println!(
-        "avxvnniint16: {:?}",
-        is_x86_feature_detected!("avxvnniint16")
-    );
+    println!("avxvnniint16: {:?}", is_x86_feature_detected!("avxvnniint16"));
     println!("amx-bf16: {:?}", is_x86_feature_detected!("amx-bf16"));
     println!("amx-tile: {:?}", is_x86_feature_detected!("amx-tile"));
     println!("amx-int8: {:?}", is_x86_feature_detected!("amx-int8"));
@@ -96,10 +76,7 @@ fn dump() {
     println!("widekl: {:?}", is_x86_feature_detected!("widekl"));
     println!("movrs: {:?}", is_x86_feature_detected!("movrs"));
     println!("amx-fp8: {:?}", is_x86_feature_detected!("amx-fp8"));
-    println!(
-        "amx-transpose: {:?}",
-        is_x86_feature_detected!("amx-transpose")
-    );
+    println!("amx-transpose: {:?}", is_x86_feature_detected!("amx-transpose"));
     println!("amx-tf32: {:?}", is_x86_feature_detected!("amx-tf32"));
     println!("amx-avx512: {:?}", is_x86_feature_detected!("amx-avx512"));
     println!("amx-movrs: {:?}", is_x86_feature_detected!("amx-movrs"));
@@ -110,8 +87,5 @@ fn dump() {
 fn x86_deprecated() {
     println!("avx512gfni {:?}", is_x86_feature_detected!("avx512gfni"));
     println!("avx512vaes {:?}", is_x86_feature_detected!("avx512vaes"));
-    println!(
-        "avx512vpclmulqdq {:?}",
-        is_x86_feature_detected!("avx512vpclmulqdq")
-    );
+    println!("avx512vpclmulqdq {:?}", is_x86_feature_detected!("avx512vpclmulqdq"));
 }
diff --git a/library/stdarch/.github/workflows/main.yml b/library/stdarch/.github/workflows/main.yml
index 8c6dee16fb6..048ce986460 100644
--- a/library/stdarch/.github/workflows/main.yml
+++ b/library/stdarch/.github/workflows/main.yml
@@ -255,22 +255,34 @@ jobs:
       env:
         TARGET: ${{ matrix.target.tuple }}
 
-  build-std-detect:
+  # Check that the generated files agree with the checked-in versions.
+  check-stdarch-gen:
     needs: [style]
-    name: Build std_detect
+    name: Check stdarch-gen-{arm, loongarch} output
     runs-on: ubuntu-latest
     steps:
     - uses: actions/checkout@v4
     - name: Install Rust
-      run: rustup update nightly && rustup default nightly
-    - run: ./ci/build-std-detect.sh
+      run: rustup update nightly && rustup default nightly && rustup component add rustfmt
+    - name: Check arm spec
+      run: |
+        cargo run --bin=stdarch-gen-arm --release -- crates/stdarch-gen-arm/spec
+        git diff --exit-code
+    - name: Check lsx.spec
+      run: |
+        cargo run --bin=stdarch-gen-loongarch --release -- crates/stdarch-gen-loongarch/lsx.spec
+        git diff --exit-code
+    - name: Check lasx.spec
+      run: |
+        cargo run --bin=stdarch-gen-loongarch --release -- crates/stdarch-gen-loongarch/lasx.spec
+        git diff --exit-code
 
   conclusion:
     needs:
       - docs
       - verify
       - test
-      - build-std-detect
+      - check-stdarch-gen
     runs-on: ubuntu-latest
     # We need to ensure this job does *not* get skipped if its dependencies fail,
     # because a skipped job is considered a success by GitHub. So we have to
diff --git a/library/stdarch/.github/workflows/rustc-pull.yml b/library/stdarch/.github/workflows/rustc-pull.yml
new file mode 100644
index 00000000000..6b90d8a500f
--- /dev/null
+++ b/library/stdarch/.github/workflows/rustc-pull.yml
@@ -0,0 +1,22 @@
+# Perform a subtree sync (pull) using the josh-sync tool once every few days (or on demand).
+name: rustc-pull
+
+on:
+  workflow_dispatch:
+  schedule:
+    # Run at 04:00 UTC every Monday and Thursday
+    - cron: '0 4 * * 1,4'
+
+jobs:
+  pull:
+    if: github.repository == 'rust-lang/stdarch'
+    uses: rust-lang/josh-sync/.github/workflows/rustc-pull.yml@main
+    with:
+      # https://rust-lang.zulipchat.com/#narrow/channel/208962-t-libs.2Fstdarch/topic/Subtree.20sync.20automation/with/528461782
+      zulip-stream-id: 208962
+      zulip-bot-email:  "stdarch-ci-bot@rust-lang.zulipchat.com"
+      pr-base-branch: master
+      branch-name: rustc-pull
+    secrets:
+      zulip-api-token: ${{ secrets.ZULIP_API_TOKEN }}
+      token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/library/stdarch/Cargo.lock b/library/stdarch/Cargo.lock
index 80f424dfdd8..21ce304db0d 100644
--- a/library/stdarch/Cargo.lock
+++ b/library/stdarch/Cargo.lock
@@ -73,20 +73,26 @@ version = "0.1.0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.102",
+ "syn 2.0.104",
 ]
 
 [[package]]
 name = "autocfg"
-version = "1.4.0"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
+
+[[package]]
+name = "bitflags"
+version = "2.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
 
 [[package]]
 name = "cc"
-version = "1.2.26"
+version = "1.2.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac"
+checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7"
 dependencies = [
  "shlex",
 ]
@@ -99,9 +105,9 @@ checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
 
 [[package]]
 name = "clap"
-version = "4.5.40"
+version = "4.5.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f"
+checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -109,9 +115,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.40"
+version = "4.5.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e"
+checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d"
 dependencies = [
  "anstream",
  "anstyle",
@@ -121,14 +127,14 @@ dependencies = [
 
 [[package]]
 name = "clap_derive"
-version = "4.5.40"
+version = "4.5.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce"
+checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491"
 dependencies = [
  "heck",
  "proc-macro2",
  "quote",
- "syn 2.0.102",
+ "syn 2.0.104",
 ]
 
 [[package]]
@@ -338,9 +344,9 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.9.0"
+version = "2.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
+checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
 dependencies = [
  "equivalent",
  "hashbrown 0.15.4",
@@ -403,9 +409,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
 
 [[package]]
 name = "libc"
-version = "0.2.172"
+version = "0.2.174"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
+checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
 
 [[package]]
 name = "linked-hash-map"
@@ -575,18 +581,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f"
 
 [[package]]
-name = "rustc-std-workspace-alloc"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9d441c3b2ebf55cebf796bfdc265d67fa09db17b7bb6bd4be75c509e1e8fec3"
-
-[[package]]
-name = "rustc-std-workspace-core"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa9c45b374136f52f2d6311062c7146bff20fec063c3f5d46a410bd937746955"
-
-[[package]]
 name = "ryu"
 version = "1.0.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -624,7 +618,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.102",
+ "syn 2.0.104",
 ]
 
 [[package]]
@@ -685,17 +679,7 @@ version = "0.1.0"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.102",
-]
-
-[[package]]
-name = "std_detect"
-version = "0.1.5"
-dependencies = [
- "cfg-if",
- "libc",
- "rustc-std-workspace-alloc",
- "rustc-std-workspace-core",
+ "syn 2.0.104",
 ]
 
 [[package]]
@@ -703,7 +687,6 @@ name = "stdarch-gen-arm"
 version = "0.1.0"
 dependencies = [
  "itertools",
- "lazy_static",
  "proc-macro2",
  "quote",
  "regex",
@@ -727,7 +710,6 @@ dependencies = [
  "assert-instr-macro",
  "cc",
  "cfg-if",
- "lazy_static",
  "rustc-demangle",
  "simd-test-macro",
  "wasmprinter",
@@ -742,7 +724,7 @@ dependencies = [
  "quote",
  "serde",
  "serde_json",
- "syn 2.0.102",
+ "syn 2.0.104",
 ]
 
 [[package]]
@@ -752,7 +734,6 @@ dependencies = [
  "core_arch",
  "quickcheck",
  "rand",
- "std_detect",
 ]
 
 [[package]]
@@ -780,9 +761,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.102"
+version = "2.0.104"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6397daf94fa90f058bd0fd88429dd9e5738999cca8d701813c80723add80462"
+checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -834,21 +815,23 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
 
 [[package]]
 name = "wasmparser"
-version = "0.113.3"
+version = "0.235.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "286049849b5a5bd09a8773171be96824afabffc7cc3df6caaf33a38db6cd07ae"
+checksum = "161296c618fa2d63f6ed5fffd1112937e803cb9ec71b32b01a76321555660917"
 dependencies = [
- "indexmap 2.9.0",
+ "bitflags",
+ "indexmap 2.10.0",
  "semver",
 ]
 
 [[package]]
 name = "wasmprinter"
-version = "0.2.67"
+version = "0.235.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6615a5587149e753bf4b93f90fa3c3f41c88597a7a2da72879afcabeda9648f"
+checksum = "75aa8e9076de6b9544e6dab4badada518cca0bf4966d35b131bbd057aed8fa0a"
 dependencies = [
  "anyhow",
+ "termcolor",
  "wasmparser",
 ]
 
@@ -945,20 +928,20 @@ dependencies = [
 
 [[package]]
 name = "zerocopy"
-version = "0.8.25"
+version = "0.8.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"
+checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f"
 dependencies = [
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.8.25"
+version = "0.8.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"
+checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.102",
+ "syn 2.0.104",
 ]
diff --git a/library/stdarch/Cargo.toml b/library/stdarch/Cargo.toml
index 0db26f31a2d..59790964391 100644
--- a/library/stdarch/Cargo.toml
+++ b/library/stdarch/Cargo.toml
@@ -5,7 +5,8 @@ members = [
   "examples",
 ]
 exclude = [
-  "crates/wasm-assert-instr-tests"
+  "crates/wasm-assert-instr-tests",
+  "rust_programs",
 ]
 
 [profile.release]
diff --git a/library/stdarch/README.md b/library/stdarch/README.md
index 9a35f4cd6ff..50905b49e80 100644
--- a/library/stdarch/README.md
+++ b/library/stdarch/README.md
@@ -4,16 +4,8 @@ stdarch - Rust's standard library SIMD components
 [![Actions Status](https://github.com/rust-lang/stdarch/workflows/CI/badge.svg)](https://github.com/rust-lang/stdarch/actions)
 
 
-# Crates
-
-This repository contains two main crates:
-
-* [`core_arch`](crates/core_arch/README.md) implements `core::arch` - Rust's
-  core library architecture-specific intrinsics, and
+This repository contains the [`core_arch`](crates/core_arch/README.md) crate, which implements `core::arch` - Rust's core library architecture-specific intrinsics.
   
-* [`std_detect`](crates/std_detect/README.md) implements `std::detect` - Rust's
-  standard library run-time CPU feature detection.
-
 The `std::simd` component now lives in the
 [`packed_simd_2`](https://github.com/rust-lang/packed_simd) crate.
 
diff --git a/library/stdarch/ci/build-std-detect.sh b/library/stdarch/ci/build-std-detect.sh
deleted file mode 100755
index e79a497cc35..00000000000
--- a/library/stdarch/ci/build-std-detect.sh
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env bash
-
-# Build std_detect on non-Linux & non-x86 targets.
-#
-# In std_detect, non-x86 targets have OS-specific implementations,
-# but we can test only Linux in CI. This script builds targets supported
-# by std_detect but cannot be tested in CI.
-
-set -ex
-cd "$(dirname "$0")"/..
-
-targets=(
-    # Linux
-    aarch64-unknown-linux-musl
-    armv5te-unknown-linux-musleabi
-    aarch64-unknown-linux-ohos
-    armv7-unknown-linux-ohos
-
-    # Android
-    aarch64-linux-android
-    arm-linux-androideabi
-
-    # FreeBSD
-    aarch64-unknown-freebsd
-    armv6-unknown-freebsd
-    powerpc-unknown-freebsd
-    powerpc64-unknown-freebsd
-
-    # OpenBSD
-    aarch64-unknown-openbsd
-
-    # Windows
-    aarch64-pc-windows-msvc
-)
-
-rustup component add rust-src # for -Z build-std
-
-cd crates/std_detect
-for target in "${targets[@]}"; do
-    if rustup target add "${target}" &>/dev/null; then
-        cargo build --target "${target}"
-    else
-        # tier 3 targets requires -Z build-std.
-        cargo build -Z build-std="core,alloc" --target "${target}"
-    fi
-done
diff --git a/library/stdarch/ci/docker/aarch64-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
index 17025efffea..70c06509755 100644
--- a/library/stdarch/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/aarch64-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 RUN apt-get update && apt-get install -y --no-install-recommends \
   gcc \
   g++ \
@@ -10,7 +10,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
   qemu-user \
   make \
   file \
-  clang-19 \
+  clang \
   lld
 
 ENV CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
diff --git a/library/stdarch/ci/docker/aarch64_be-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/aarch64_be-unknown-linux-gnu/Dockerfile
index 74f770556db..56ddbd990b1 100644
--- a/library/stdarch/ci/docker/aarch64_be-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/aarch64_be-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
   gcc \
@@ -9,15 +9,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
   qemu-user \
   make \
   file \
-  clang-19 \
+  clang \
   curl \
   xz-utils \
   lld
 
-ENV TOOLCHAIN="arm-gnu-toolchain-14.2.rel1-x86_64-aarch64_be-none-linux-gnu"
+ENV TOOLCHAIN="arm-gnu-toolchain-14.3.rel1-x86_64-aarch64_be-none-linux-gnu"
 
 # Download the aarch64_be gcc toolchain
-RUN curl -L "https://developer.arm.com/-/media/Files/downloads/gnu/14.2.rel1/binrel/${TOOLCHAIN}.tar.xz" -o "${TOOLCHAIN}.tar.xz"
+RUN curl -L "https://developer.arm.com/-/media/Files/downloads/gnu/14.3.rel1/binrel/${TOOLCHAIN}.tar.xz" -o "${TOOLCHAIN}.tar.xz"
 RUN tar -xvf "${TOOLCHAIN}.tar.xz"
 RUN mkdir /toolchains && mv "./${TOOLCHAIN}" /toolchains
 
diff --git a/library/stdarch/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile b/library/stdarch/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
index 14eaf9f9eef..6d4ff248286 100644
--- a/library/stdarch/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
+++ b/library/stdarch/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 RUN apt-get update && apt-get install -y --no-install-recommends \
   gcc \
   ca-certificates \
diff --git a/library/stdarch/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile b/library/stdarch/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
index 2086e117d92..602249c0ece 100644
--- a/library/stdarch/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
+++ b/library/stdarch/ci/docker/armv7-unknown-linux-gnueabihf/Dockerfile
@@ -10,7 +10,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
   qemu-user \
   make \
   file \
-  clang-19 \
+  clang \
   lld
 ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
     CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER="qemu-arm -cpu max -L /usr/arm-linux-gnueabihf" \
diff --git a/library/stdarch/ci/docker/i586-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/i586-unknown-linux-gnu/Dockerfile
index 5a4a22369a8..49d5cecc71e 100644
--- a/library/stdarch/ci/docker/i586-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/i586-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 RUN apt-get update && apt-get install -y --no-install-recommends \
   gcc-multilib \
   libc6-dev \
diff --git a/library/stdarch/ci/docker/i686-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/i686-unknown-linux-gnu/Dockerfile
index 5a4a22369a8..49d5cecc71e 100644
--- a/library/stdarch/ci/docker/i686-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/i686-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 RUN apt-get update && apt-get install -y --no-install-recommends \
   gcc-multilib \
   libc6-dev \
diff --git a/library/stdarch/ci/docker/loongarch64-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/loongarch64-unknown-linux-gnu/Dockerfile
index 99ccf286f36..5ab3431ba27 100644
--- a/library/stdarch/ci/docker/loongarch64-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/loongarch64-unknown-linux-gnu/Dockerfile
@@ -1,9 +1,9 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
     gcc libc6-dev qemu-user-static ca-certificates \
-    gcc-14-loongarch64-linux-gnu libc6-dev-loong64-cross
+    gcc-loongarch64-linux-gnu libc6-dev-loong64-cross
 
 
 ENV CARGO_TARGET_LOONGARCH64_UNKNOWN_LINUX_GNU_LINKER=loongarch64-linux-gnu-gcc-14 \
diff --git a/library/stdarch/ci/docker/mips-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/mips-unknown-linux-gnu/Dockerfile
index f43a3c96633..f521ba31793 100644
--- a/library/stdarch/ci/docker/mips-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/mips-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
         gcc libc6-dev qemu-user ca-certificates \
diff --git a/library/stdarch/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile b/library/stdarch/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
index 235ac0997b1..a8b352881e8 100644
--- a/library/stdarch/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
+++ b/library/stdarch/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
         gcc libc6-dev qemu-user ca-certificates \
diff --git a/library/stdarch/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile b/library/stdarch/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
index 6041d891174..147a3df6145 100644
--- a/library/stdarch/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
+++ b/library/stdarch/ci/docker/mips64el-unknown-linux-gnuabi64/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
         gcc libc6-dev qemu-user ca-certificates \
diff --git a/library/stdarch/ci/docker/mipsel-unknown-linux-musl/Dockerfile b/library/stdarch/ci/docker/mipsel-unknown-linux-musl/Dockerfile
index cd38348eeb5..ed57511de7b 100644
--- a/library/stdarch/ci/docker/mipsel-unknown-linux-musl/Dockerfile
+++ b/library/stdarch/ci/docker/mipsel-unknown-linux-musl/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && \
     apt-get install -y --no-install-recommends \
diff --git a/library/stdarch/ci/docker/nvptx64-nvidia-cuda/Dockerfile b/library/stdarch/ci/docker/nvptx64-nvidia-cuda/Dockerfile
index 5b4869863c7..65cf281b147 100644
--- a/library/stdarch/ci/docker/nvptx64-nvidia-cuda/Dockerfile
+++ b/library/stdarch/ci/docker/nvptx64-nvidia-cuda/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 RUN apt-get update && apt-get install -y --no-install-recommends \
   gcc \
   libc6-dev \
diff --git a/library/stdarch/ci/docker/powerpc-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
index baad95d5784..82d05f0b25d 100644
--- a/library/stdarch/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/powerpc-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
         gcc libc6-dev qemu-user ca-certificates \
diff --git a/library/stdarch/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
index dcbcb43513e..c5460e1544f 100644
--- a/library/stdarch/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
         gcc libc6-dev qemu-user ca-certificates \
diff --git a/library/stdarch/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
index 8dfac0ec1e4..3d3eb8c6f34 100644
--- a/library/stdarch/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/powerpc64le-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
         gcc libc6-dev qemu-user ca-certificates \
diff --git a/library/stdarch/ci/docker/riscv32gc-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/riscv32gc-unknown-linux-gnu/Dockerfile
index 81f7b6239af..fb1718b338f 100644
--- a/library/stdarch/ci/docker/riscv32gc-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/riscv32gc-unknown-linux-gnu/Dockerfile
@@ -1,10 +1,10 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
         gcc libc6-dev qemu-user ca-certificates \
         wget xz-utils make file llvm
 
-ENV VERSION=2025.01.20
+ENV VERSION=2025.07.03
 
 RUN wget "https://github.com/riscv-collab/riscv-gnu-toolchain/releases/download/${VERSION}/riscv32-glibc-ubuntu-24.04-gcc-nightly-${VERSION}-nightly.tar.xz" \
     -O riscv-toolchain.tar.xz
diff --git a/library/stdarch/ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile
index 7ee69e46e2e..10316cae6c2 100644
--- a/library/stdarch/ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/riscv64gc-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
         gcc libc6-dev qemu-user ca-certificates \
diff --git a/library/stdarch/ci/docker/s390x-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/s390x-unknown-linux-gnu/Dockerfile
index af02ebcbd16..04e5464b9c9 100644
--- a/library/stdarch/ci/docker/s390x-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/s390x-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 RUN apt-get update && apt-get install -y --no-install-recommends \
         curl ca-certificates \
diff --git a/library/stdarch/ci/docker/wasm32-wasip1/Dockerfile b/library/stdarch/ci/docker/wasm32-wasip1/Dockerfile
index eeafde79733..f618b94291f 100644
--- a/library/stdarch/ci/docker/wasm32-wasip1/Dockerfile
+++ b/library/stdarch/ci/docker/wasm32-wasip1/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 
 ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get update -y && apt-get install -y --no-install-recommends \
@@ -7,7 +7,9 @@ RUN apt-get update -y && apt-get install -y --no-install-recommends \
   xz-utils \
   clang
 
-RUN curl -L https://github.com/bytecodealliance/wasmtime/releases/download/v18.0.2/wasmtime-v18.0.2-x86_64-linux.tar.xz | tar xJf -
-ENV PATH=$PATH:/wasmtime-v18.0.2-x86_64-linux
+ENV VERSION=v34.0.1
+
+RUN curl -L https://github.com/bytecodealliance/wasmtime/releases/download/${VERSION}/wasmtime-${VERSION}-x86_64-linux.tar.xz | tar xJf -
+ENV PATH=$PATH:/wasmtime-${VERSION}-x86_64-linux
 
 ENV CARGO_TARGET_WASM32_WASIP1_RUNNER="wasmtime --dir /checkout/target/wasm32-wasip1/release/deps::."
diff --git a/library/stdarch/ci/docker/x86_64-unknown-linux-gnu/Dockerfile b/library/stdarch/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
index acde432794e..99bfd056fb4 100644
--- a/library/stdarch/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
+++ b/library/stdarch/ci/docker/x86_64-unknown-linux-gnu/Dockerfile
@@ -1,4 +1,4 @@
-FROM ubuntu:25.04
+FROM ubuntu:25.10
 RUN apt-get update && apt-get install -y --no-install-recommends \
   gcc \
   libc6-dev \
@@ -8,7 +8,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
   wget \
   xz-utils
 
-RUN wget http://ci-mirrors.rust-lang.org/stdarch/sde-external-9.53.0-2025-03-16-lin.tar.xz -O sde.tar.xz
+RUN wget http://ci-mirrors.rust-lang.org/stdarch/sde-external-9.58.0-2025-06-16-lin.tar.xz -O sde.tar.xz
 RUN mkdir intel-sde
 RUN tar -xJf sde.tar.xz --strip-components=1 -C intel-sde
 ENV CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER="/intel-sde/sde64 \
diff --git a/library/stdarch/ci/docker/x86_64-unknown-linux-gnu/cpuid.def b/library/stdarch/ci/docker/x86_64-unknown-linux-gnu/cpuid.def
index 4cce9d7a3c0..95cef619931 100644
--- a/library/stdarch/ci/docker/x86_64-unknown-linux-gnu/cpuid.def
+++ b/library/stdarch/ci/docker/x86_64-unknown-linux-gnu/cpuid.def
@@ -1,41 +1,35 @@
-# Copyright (C) 2024-2024 Intel Corporation.
-#
+# Copyright (C) 2017-2025 Intel Corporation.
+# 
 # This software and the related documents are Intel copyrighted materials, and your
 # use of them is governed by the express license under which they were provided to
 # you ("License"). Unless the License provides otherwise, you may not use, modify,
 # copy, publish, distribute, disclose or transmit this software or the related
 # documents without Intel's prior written permission.
-#
+# 
 # This software and the related documents are provided as is, with no express or
 # implied warranties, other than those that are expressly stated in the License.
 #
-# The CPUID information in this file is for software enabling purposes only and
-# it is not a full and accurate representation of the CPU under development which
-# it represents.
-# The CPUID information in this file is not a guarantee of the availability of
-# features or characteristics in the final released CPU.
-#
 # CPUID_VERSION = 1.0
 #      Input      =>               Output
 # EAX      ECX    =>   EAX      EBX      ECX      EDX
 00000000 ******** => 00000024 68747541 444d4163 69746e65
-00000001 ******** => 000d06f0 00100800 7ffaf3ff bfebfbff
+00000001 ******** => 00400f10 00100800 7ffaf3ff bfebfbff
 00000002 ******** => 76035a01 00f0b6ff 00000000 00c10000
 00000003 ******** => 00000000 00000000 00000000 00000000
-00000004 00000000 => 7c004121 02c0003f 0000003f 00000000 #Deterministic Cache
+00000004 00000000 => 7c004121 01c0003f 0000003f 00000000 #Deterministic Cache
 00000004 00000001 => 7c004122 01c0003f 0000003f 00000000
-00000004 00000002 => 7c004143 03c0003f 000007ff 00000000
-00000004 00000003 => 7c0fc163 04c0003f 0005ffff 00000004
+00000004 00000002 => 7c004143 03c0003f 000003ff 00000000
+00000004 00000003 => 7c0fc163 0280003f 0000dfff 00000004
 00000004 00000004 => 00000000 00000000 00000000 00000000
 00000005 ******** => 00000040 00000040 00000003 00042120 #MONITOR/MWAIT
 00000006 ******** => 00000077 00000002 00000001 00000000 #Thermal and Power
-00000007 00000000 => 00000001 f3bfbfbf bbc05ffe 03d55130 #Extended Features
-00000007 00000001 => 88ee00bf 00000002 00000000 1d29cd3e
+00000007 00000000 => 00000001 f3bfbfbf bac05ffe 03d54130 #Extended Features
+00000007 00000001 => 98ee00bf 00000002 00000020 1d29cd3e
 00000008 ******** => 00000000 00000000 00000000 00000000
 00000009 ******** => 00000000 00000000 00000000 00000000 #Direct Cache
 0000000a ******** => 07300403 00000000 00000000 00000603
-0000000b 00000000 => 00000001 00000002 00000100 0000001e #Extended Topology
-0000000b 00000001 => 00000004 00000002 00000201 0000001e
+0000000b 00000000 => 00000001 00000002 00000100 00000000 #Extended Topology
+0000000b 00000001 => 00000004 00000002 00000201 00000000
 0000000c ******** => 00000000 00000000 00000000 00000000
 0000000d 00000000 => 000e02e7 00002b00 00002b00 00000000 #xcr0
 0000000d 00000001 => 0000001f 00000240 00000100 00000000
@@ -52,10 +46,8 @@
 0000001d 00000001 => 04002000 00080040 00000010 00000000 #AMX Palette1
 0000001e 00000000 => 00000001 00004010 00000000 00000000 #AMX Tmul
 0000001e 00000001 => 000001ff 00000000 00000000 00000000
-0000001f 00000000 => 00000001 00000002 00000100 0000001e
-0000001f 00000001 => 00000007 00000070 00000201 0000001e
-0000001f 00000002 => 00000000 00000000 00000002 0000001e
-00000024 00000000 => 00000000 00070002 00000000 00000000 #AVX10
+00000024 00000000 => 00000001 00070002 00000000 00000000 #AVX10
+00000024 00000001 => 00000000 00000000 00000004 00000000
 80000000 ******** => 80000008 00000000 00000000 00000000
 80000001 ******** => 00000000 00000000 00200961 2c100000
 80000002 ******** => 00000000 00000000 00000000 00000000
@@ -66,6 +58,6 @@
 80000007 ******** => 00000000 00000000 00000000 00000100
 80000008 ******** => 00003028 00000200 00000200 00000000
 
-# This file was copied from intel-sde/misc/cpuid/dmr/cpuid.def, and modified to
+# This file was copied from intel-sde/misc/cpuid/future/cpuid.def, and modified to
 # use "AuthenticAMD" as the vendor and the support for `XOP`, `SSE4a`, `TBM`,
 # `AVX512_VP2INTERSECT` and the VEX variants of AVX512 was added in the CPUID.
diff --git a/library/stdarch/ci/dox.sh b/library/stdarch/ci/dox.sh
index 910265fad84..94d76d43047 100755
--- a/library/stdarch/ci/dox.sh
+++ b/library/stdarch/ci/dox.sh
@@ -16,10 +16,7 @@ dox() {
   cargo clean --target "${1}"
 
   cargo build --verbose --target "${1}" --manifest-path crates/core_arch/Cargo.toml
-  cargo build --verbose --target "${1}" --manifest-path crates/std_detect/Cargo.toml
-
   cargo doc --verbose --target "${1}" --manifest-path crates/core_arch/Cargo.toml
-  cargo doc --verbose --target "${1}" --manifest-path crates/std_detect/Cargo.toml
 }
 
 if [ -z "$1" ]; then
diff --git a/library/stdarch/ci/run-docker.sh b/library/stdarch/ci/run-docker.sh
index 657353004dc..d7aa50a8c96 100755
--- a/library/stdarch/ci/run-docker.sh
+++ b/library/stdarch/ci/run-docker.sh
@@ -37,7 +37,6 @@ run() {
       --env NORUN \
       --env RUSTFLAGS \
       --env CARGO_UNSTABLE_BUILD_STD \
-      --env RUST_STD_DETECT_UNSTABLE \
       --volume "${HOME}/.cargo":/cargo \
       --volume "$(rustc --print sysroot)":/rust:ro \
       --volume "$(pwd)":/checkout:ro \
diff --git a/library/stdarch/ci/run.sh b/library/stdarch/ci/run.sh
index 8eadb9285c9..aa4479395d5 100755
--- a/library/stdarch/ci/run.sh
+++ b/library/stdarch/ci/run.sh
@@ -78,20 +78,12 @@ cargo_test() {
 }
 
 CORE_ARCH="--manifest-path=crates/core_arch/Cargo.toml"
-STD_DETECT="--manifest-path=crates/std_detect/Cargo.toml"
 STDARCH_EXAMPLES="--manifest-path=examples/Cargo.toml"
 INTRINSIC_TEST="--manifest-path=crates/intrinsic-test/Cargo.toml"
 
 cargo_test "${CORE_ARCH} ${PROFILE}"
 
 if [ "$NOSTD" != "1" ]; then
-    cargo_test "${STD_DETECT} ${PROFILE}"
-
-    cargo_test "${STD_DETECT} --no-default-features"
-    cargo_test "${STD_DETECT} --no-default-features --features=std_detect_file_io"
-    cargo_test "${STD_DETECT} --no-default-features --features=std_detect_dlsym_getauxval"
-    cargo_test "${STD_DETECT} --no-default-features --features=std_detect_dlsym_getauxval,std_detect_file_io"
-
     cargo_test "${STDARCH_EXAMPLES} ${PROFILE}"
 fi
 
@@ -139,26 +131,26 @@ case ${TARGET} in
         cargo_test "${PROFILE}"
         ;;
 
-    # Setup aarch64 & armv7 specific variables, the runner, along with some 
+    # Setup aarch64 & armv7 specific variables, the runner, along with some
     # tests to skip
     aarch64-unknown-linux-gnu*)
         TEST_CPPFLAGS="-fuse-ld=lld -I/usr/aarch64-linux-gnu/include/ -I/usr/aarch64-linux-gnu/include/c++/9/aarch64-linux-gnu/"
         TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_aarch64.txt
-        TEST_CXX_COMPILER="clang++-19"
+        TEST_CXX_COMPILER="clang++"
         TEST_RUNNER="${CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_RUNNER}"
         ;;
 
     aarch64_be-unknown-linux-gnu*)
         TEST_CPPFLAGS="-fuse-ld=lld"
         TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_aarch64.txt
-        TEST_CXX_COMPILER="clang++-19"
+        TEST_CXX_COMPILER="clang++"
         TEST_RUNNER="${CARGO_TARGET_AARCH64_BE_UNKNOWN_LINUX_GNU_RUNNER}"
         ;;
 
     armv7-unknown-linux-gnueabihf*)
         TEST_CPPFLAGS="-fuse-ld=lld -I/usr/arm-linux-gnueabihf/include/ -I/usr/arm-linux-gnueabihf/include/c++/9/arm-linux-gnueabihf/"
         TEST_SKIP_INTRINSICS=crates/intrinsic-test/missing_arm.txt
-        TEST_CXX_COMPILER="clang++-19"
+        TEST_CXX_COMPILER="clang++"
         TEST_RUNNER="${CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_RUNNER}"
         ;;
     *)
diff --git a/library/stdarch/crates/core_arch/src/aarch64/neon/generated.rs b/library/stdarch/crates/core_arch/src/aarch64/neon/generated.rs
index 32f144bc7ad..bc4c438038d 100644
--- a/library/stdarch/crates/core_arch/src/aarch64/neon/generated.rs
+++ b/library/stdarch/crates/core_arch/src/aarch64/neon/generated.rs
@@ -51,7 +51,7 @@ pub fn __crc32d(crc: u32, data: u64) -> u32 {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal))]
+#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal2))]
 pub fn vabal_high_s8(a: int16x8_t, b: int8x16_t, c: int8x16_t) -> int16x8_t {
     unsafe {
         let d: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
@@ -66,7 +66,7 @@ pub fn vabal_high_s8(a: int16x8_t, b: int8x16_t, c: int8x16_t) -> int16x8_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal))]
+#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal2))]
 pub fn vabal_high_s16(a: int32x4_t, b: int16x8_t, c: int16x8_t) -> int32x4_t {
     unsafe {
         let d: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
@@ -81,7 +81,7 @@ pub fn vabal_high_s16(a: int32x4_t, b: int16x8_t, c: int16x8_t) -> int32x4_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal))]
+#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(sabal2))]
 pub fn vabal_high_s32(a: int64x2_t, b: int32x4_t, c: int32x4_t) -> int64x2_t {
     unsafe {
         let d: int32x2_t = simd_shuffle!(b, b, [2, 3]);
@@ -96,7 +96,7 @@ pub fn vabal_high_s32(a: int64x2_t, b: int32x4_t, c: int32x4_t) -> int64x2_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal))]
+#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal2))]
 pub fn vabal_high_u8(a: uint16x8_t, b: uint8x16_t, c: uint8x16_t) -> uint16x8_t {
     unsafe {
         let d: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
@@ -110,7 +110,7 @@ pub fn vabal_high_u8(a: uint16x8_t, b: uint8x16_t, c: uint8x16_t) -> uint16x8_t
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal))]
+#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal2))]
 pub fn vabal_high_u16(a: uint32x4_t, b: uint16x8_t, c: uint16x8_t) -> uint32x4_t {
     unsafe {
         let d: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
@@ -124,7 +124,7 @@ pub fn vabal_high_u16(a: uint32x4_t, b: uint16x8_t, c: uint16x8_t) -> uint32x4_t
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal))]
+#[cfg_attr(all(test, not(target_env = "msvc")), assert_instr(uabal2))]
 pub fn vabal_high_u32(a: uint64x2_t, b: uint32x4_t, c: uint32x4_t) -> uint64x2_t {
     unsafe {
         let d: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
@@ -197,7 +197,7 @@ pub fn vabdh_f16(a: f16, b: f16) -> f16 {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(sabdl))]
+#[cfg_attr(test, assert_instr(sabdl2))]
 pub fn vabdl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
     unsafe {
         let c: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
@@ -211,7 +211,7 @@ pub fn vabdl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(sabdl))]
+#[cfg_attr(test, assert_instr(sabdl2))]
 pub fn vabdl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
     unsafe {
         let c: int32x2_t = simd_shuffle!(a, a, [2, 3]);
@@ -225,7 +225,7 @@ pub fn vabdl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(sabdl))]
+#[cfg_attr(test, assert_instr(sabdl2))]
 pub fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
     unsafe {
         let c: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
@@ -238,7 +238,7 @@ pub fn vabdl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u8)"]
 #[inline]
 #[target_feature(enable = "neon")]
-#[cfg_attr(test, assert_instr(uabdl))]
+#[cfg_attr(test, assert_instr(uabdl2))]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 pub fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
     unsafe {
@@ -251,7 +251,7 @@ pub fn vabdl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u16)"]
 #[inline]
 #[target_feature(enable = "neon")]
-#[cfg_attr(test, assert_instr(uabdl))]
+#[cfg_attr(test, assert_instr(uabdl2))]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 pub fn vabdl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
     unsafe {
@@ -264,7 +264,7 @@ pub fn vabdl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabdl_high_u32)"]
 #[inline]
 #[target_feature(enable = "neon")]
-#[cfg_attr(test, assert_instr(uabdl))]
+#[cfg_attr(test, assert_instr(uabdl2))]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 pub fn vabdl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
     unsafe {
@@ -298,46 +298,40 @@ pub fn vabsq_f64(a: float64x2_t) -> float64x2_t {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(abs))]
 pub fn vabs_s64(a: int64x1_t) -> int64x1_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.abs.v1i64"
-        )]
-        fn _vabs_s64(a: int64x1_t) -> int64x1_t;
+    unsafe {
+        let neg: int64x1_t = simd_neg(a);
+        let mask: int64x1_t = simd_ge(a, neg);
+        simd_select(mask, a, neg)
     }
-    unsafe { _vabs_s64(a) }
 }
 #[doc = "Absolute Value (wrapping)."]
-#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsd_s64)"]
+#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s64)"]
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(abs))]
-pub fn vabsd_s64(a: i64) -> i64 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.abs.i64"
-        )]
-        fn _vabsd_s64(a: i64) -> i64;
+pub fn vabsq_s64(a: int64x2_t) -> int64x2_t {
+    unsafe {
+        let neg: int64x2_t = simd_neg(a);
+        let mask: int64x2_t = simd_ge(a, neg);
+        simd_select(mask, a, neg)
     }
-    unsafe { _vabsd_s64(a) }
 }
 #[doc = "Absolute Value (wrapping)."]
-#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s64)"]
+#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsd_s64)"]
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(abs))]
-pub fn vabsq_s64(a: int64x2_t) -> int64x2_t {
+pub fn vabsd_s64(a: i64) -> i64 {
     unsafe extern "unadjusted" {
         #[cfg_attr(
             any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.abs.v2i64"
+            link_name = "llvm.aarch64.neon.abs.i64"
         )]
-        fn _vabsq_s64(a: int64x2_t) -> int64x2_t;
+        fn _vabsd_s64(a: i64) -> i64;
     }
-    unsafe { _vabsq_s64(a) }
+    unsafe { _vabsd_s64(a) }
 }
 #[doc = "Add"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddd_s64)"]
@@ -604,14 +598,7 @@ pub fn vaddvq_f64(a: float64x2_t) -> f64 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addp))]
 pub fn vaddv_s32(a: int32x2_t) -> i32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.saddv.i32.v2i32"
-        )]
-        fn _vaddv_s32(a: int32x2_t) -> i32;
-    }
-    unsafe { _vaddv_s32(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_s8)"]
@@ -620,14 +607,7 @@ pub fn vaddv_s32(a: int32x2_t) -> i32 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addv))]
 pub fn vaddv_s8(a: int8x8_t) -> i8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.saddv.i8.v8i8"
-        )]
-        fn _vaddv_s8(a: int8x8_t) -> i8;
-    }
-    unsafe { _vaddv_s8(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s8)"]
@@ -636,14 +616,7 @@ pub fn vaddv_s8(a: int8x8_t) -> i8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addv))]
 pub fn vaddvq_s8(a: int8x16_t) -> i8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.saddv.i8.v16i8"
-        )]
-        fn _vaddvq_s8(a: int8x16_t) -> i8;
-    }
-    unsafe { _vaddvq_s8(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_s16)"]
@@ -652,14 +625,7 @@ pub fn vaddvq_s8(a: int8x16_t) -> i8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addv))]
 pub fn vaddv_s16(a: int16x4_t) -> i16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.saddv.i16.v4i16"
-        )]
-        fn _vaddv_s16(a: int16x4_t) -> i16;
-    }
-    unsafe { _vaddv_s16(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s16)"]
@@ -668,14 +634,7 @@ pub fn vaddv_s16(a: int16x4_t) -> i16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addv))]
 pub fn vaddvq_s16(a: int16x8_t) -> i16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.saddv.i16.v8i16"
-        )]
-        fn _vaddvq_s16(a: int16x8_t) -> i16;
-    }
-    unsafe { _vaddvq_s16(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s32)"]
@@ -684,14 +643,7 @@ pub fn vaddvq_s16(a: int16x8_t) -> i16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addv))]
 pub fn vaddvq_s32(a: int32x4_t) -> i32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.saddv.i32.v4i32"
-        )]
-        fn _vaddvq_s32(a: int32x4_t) -> i32;
-    }
-    unsafe { _vaddvq_s32(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u32)"]
@@ -700,14 +652,7 @@ pub fn vaddvq_s32(a: int32x4_t) -> i32 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addp))]
 pub fn vaddv_u32(a: uint32x2_t) -> u32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uaddv.i32.v2i32"
-        )]
-        fn _vaddv_u32(a: uint32x2_t) -> u32;
-    }
-    unsafe { _vaddv_u32(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u8)"]
@@ -716,14 +661,7 @@ pub fn vaddv_u32(a: uint32x2_t) -> u32 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addv))]
 pub fn vaddv_u8(a: uint8x8_t) -> u8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uaddv.i8.v8i8"
-        )]
-        fn _vaddv_u8(a: uint8x8_t) -> u8;
-    }
-    unsafe { _vaddv_u8(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u8)"]
@@ -732,14 +670,7 @@ pub fn vaddv_u8(a: uint8x8_t) -> u8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addv))]
 pub fn vaddvq_u8(a: uint8x16_t) -> u8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uaddv.i8.v16i8"
-        )]
-        fn _vaddvq_u8(a: uint8x16_t) -> u8;
-    }
-    unsafe { _vaddvq_u8(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddv_u16)"]
@@ -748,14 +679,7 @@ pub fn vaddvq_u8(a: uint8x16_t) -> u8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addv))]
 pub fn vaddv_u16(a: uint16x4_t) -> u16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uaddv.i16.v4i16"
-        )]
-        fn _vaddv_u16(a: uint16x4_t) -> u16;
-    }
-    unsafe { _vaddv_u16(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u16)"]
@@ -764,14 +688,7 @@ pub fn vaddv_u16(a: uint16x4_t) -> u16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addv))]
 pub fn vaddvq_u16(a: uint16x8_t) -> u16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uaddv.i16.v8i16"
-        )]
-        fn _vaddvq_u16(a: uint16x8_t) -> u16;
-    }
-    unsafe { _vaddvq_u16(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u32)"]
@@ -780,14 +697,7 @@ pub fn vaddvq_u16(a: uint16x8_t) -> u16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addv))]
 pub fn vaddvq_u32(a: uint32x4_t) -> u32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uaddv.i32.v4i32"
-        )]
-        fn _vaddvq_u32(a: uint32x4_t) -> u32;
-    }
-    unsafe { _vaddvq_u32(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_s64)"]
@@ -796,14 +706,7 @@ pub fn vaddvq_u32(a: uint32x4_t) -> u32 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addp))]
 pub fn vaddvq_s64(a: int64x2_t) -> i64 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.saddv.i64.v2i64"
-        )]
-        fn _vaddvq_s64(a: int64x2_t) -> i64;
-    }
-    unsafe { _vaddvq_s64(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vaddvq_u64)"]
@@ -812,14 +715,7 @@ pub fn vaddvq_s64(a: int64x2_t) -> i64 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addp))]
 pub fn vaddvq_u64(a: uint64x2_t) -> u64 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uaddv.i64.v2i64"
-        )]
-        fn _vaddvq_u64(a: uint64x2_t) -> u64;
-    }
-    unsafe { _vaddvq_u64(a) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Multi-vector floating-point absolute maximum"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vamax_f32)"]
@@ -7281,7 +7177,7 @@ pub fn vcvt_high_f32_f16(a: float16x8_t) -> float32x4_t {
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_high_f32_f64)"]
 #[inline]
 #[target_feature(enable = "neon")]
-#[cfg_attr(test, assert_instr(fcvtn))]
+#[cfg_attr(test, assert_instr(fcvtn2))]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 pub fn vcvt_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
     unsafe { simd_shuffle!(a, simd_cast(b), [0, 1, 2, 3]) }
@@ -7290,7 +7186,7 @@ pub fn vcvt_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvt_high_f64_f32)"]
 #[inline]
 #[target_feature(enable = "neon")]
-#[cfg_attr(test, assert_instr(fcvtl))]
+#[cfg_attr(test, assert_instr(fcvtl2))]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 pub fn vcvt_high_f64_f32(a: float32x4_t) -> float64x2_t {
     unsafe {
@@ -9390,7 +9286,7 @@ pub fn vcvtx_f32_f64(a: float64x2_t) -> float32x2_t {
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtx_high_f32_f64)"]
 #[inline]
 #[target_feature(enable = "neon")]
-#[cfg_attr(test, assert_instr(fcvtxn))]
+#[cfg_attr(test, assert_instr(fcvtxn2))]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 pub fn vcvtx_high_f32_f64(a: float32x2_t, b: float64x2_t) -> float32x4_t {
     unsafe { simd_shuffle!(a, vcvtx_f32_f64(b), [0, 1, 2, 3]) }
@@ -13229,14 +13125,7 @@ pub fn vmaxh_f16(a: f16, b: f16) -> f16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(fmaxnm))]
 pub fn vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnm.v1f64"
-        )]
-        fn _vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t;
-    }
-    unsafe { _vmaxnm_f64(a, b) }
+    unsafe { simd_fmax(a, b) }
 }
 #[doc = "Floating-point Maximum Number (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f64)"]
@@ -13245,14 +13134,7 @@ pub fn vmaxnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(fmaxnm))]
 pub fn vmaxnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnm.v2f64"
-        )]
-        fn _vmaxnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t;
-    }
-    unsafe { _vmaxnmq_f64(a, b) }
+    unsafe { simd_fmax(a, b) }
 }
 #[doc = "Floating-point Maximum Number"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmh_f16)"]
@@ -13261,14 +13143,7 @@ pub fn vmaxnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
 #[cfg_attr(test, assert_instr(fmaxnm))]
 pub fn vmaxnmh_f16(a: f16, b: f16) -> f16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnm.f16"
-        )]
-        fn _vmaxnmh_f16(a: f16, b: f16) -> f16;
-    }
-    unsafe { _vmaxnmh_f16(a, b) }
+    f16::max(a, b)
 }
 #[doc = "Floating-point maximum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmv_f16)"]
@@ -13277,14 +13152,7 @@ pub fn vmaxnmh_f16(a: f16, b: f16) -> f16 {
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
 #[cfg_attr(test, assert_instr(fmaxnmv))]
 pub fn vmaxnmv_f16(a: float16x4_t) -> f16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnmv.f16.v4f16"
-        )]
-        fn _vmaxnmv_f16(a: float16x4_t) -> f16;
-    }
-    unsafe { _vmaxnmv_f16(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Floating-point maximum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f16)"]
@@ -13293,14 +13161,7 @@ pub fn vmaxnmv_f16(a: float16x4_t) -> f16 {
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
 #[cfg_attr(test, assert_instr(fmaxnmv))]
 pub fn vmaxnmvq_f16(a: float16x8_t) -> f16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnmv.f16.v8f16"
-        )]
-        fn _vmaxnmvq_f16(a: float16x8_t) -> f16;
-    }
-    unsafe { _vmaxnmvq_f16(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Floating-point maximum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmv_f32)"]
@@ -13309,14 +13170,7 @@ pub fn vmaxnmvq_f16(a: float16x8_t) -> f16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(fmaxnmp))]
 pub fn vmaxnmv_f32(a: float32x2_t) -> f32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnmv.f32.v2f32"
-        )]
-        fn _vmaxnmv_f32(a: float32x2_t) -> f32;
-    }
-    unsafe { _vmaxnmv_f32(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Floating-point maximum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f64)"]
@@ -13325,14 +13179,7 @@ pub fn vmaxnmv_f32(a: float32x2_t) -> f32 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(fmaxnmp))]
 pub fn vmaxnmvq_f64(a: float64x2_t) -> f64 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnmv.f64.v2f64"
-        )]
-        fn _vmaxnmvq_f64(a: float64x2_t) -> f64;
-    }
-    unsafe { _vmaxnmvq_f64(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Floating-point maximum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmvq_f32)"]
@@ -13341,14 +13188,7 @@ pub fn vmaxnmvq_f64(a: float64x2_t) -> f64 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(fmaxnmv))]
 pub fn vmaxnmvq_f32(a: float32x4_t) -> f32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnmv.f32.v4f32"
-        )]
-        fn _vmaxnmvq_f32(a: float32x4_t) -> f32;
-    }
-    unsafe { _vmaxnmvq_f32(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Floating-point maximum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_f16)"]
@@ -13437,14 +13277,7 @@ pub fn vmaxvq_f64(a: float64x2_t) -> f64 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(smaxv))]
 pub fn vmaxv_s8(a: int8x8_t) -> i8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smaxv.i8.v8i8"
-        )]
-        fn _vmaxv_s8(a: int8x8_t) -> i8;
-    }
-    unsafe { _vmaxv_s8(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Horizontal vector max."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_s8)"]
@@ -13453,14 +13286,7 @@ pub fn vmaxv_s8(a: int8x8_t) -> i8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(smaxv))]
 pub fn vmaxvq_s8(a: int8x16_t) -> i8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smaxv.i8.v16i8"
-        )]
-        fn _vmaxvq_s8(a: int8x16_t) -> i8;
-    }
-    unsafe { _vmaxvq_s8(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Horizontal vector max."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_s16)"]
@@ -13469,14 +13295,7 @@ pub fn vmaxvq_s8(a: int8x16_t) -> i8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(smaxv))]
 pub fn vmaxv_s16(a: int16x4_t) -> i16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smaxv.i16.v4i16"
-        )]
-        fn _vmaxv_s16(a: int16x4_t) -> i16;
-    }
-    unsafe { _vmaxv_s16(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Horizontal vector max."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_s16)"]
@@ -13485,14 +13304,7 @@ pub fn vmaxv_s16(a: int16x4_t) -> i16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(smaxv))]
 pub fn vmaxvq_s16(a: int16x8_t) -> i16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smaxv.i16.v8i16"
-        )]
-        fn _vmaxvq_s16(a: int16x8_t) -> i16;
-    }
-    unsafe { _vmaxvq_s16(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Horizontal vector max."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_s32)"]
@@ -13501,14 +13313,7 @@ pub fn vmaxvq_s16(a: int16x8_t) -> i16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(smaxp))]
 pub fn vmaxv_s32(a: int32x2_t) -> i32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smaxv.i32.v2i32"
-        )]
-        fn _vmaxv_s32(a: int32x2_t) -> i32;
-    }
-    unsafe { _vmaxv_s32(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Horizontal vector max."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_s32)"]
@@ -13517,14 +13322,7 @@ pub fn vmaxv_s32(a: int32x2_t) -> i32 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(smaxv))]
 pub fn vmaxvq_s32(a: int32x4_t) -> i32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smaxv.i32.v4i32"
-        )]
-        fn _vmaxvq_s32(a: int32x4_t) -> i32;
-    }
-    unsafe { _vmaxvq_s32(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Horizontal vector max."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_u8)"]
@@ -13533,14 +13331,7 @@ pub fn vmaxvq_s32(a: int32x4_t) -> i32 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(umaxv))]
 pub fn vmaxv_u8(a: uint8x8_t) -> u8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umaxv.i8.v8i8"
-        )]
-        fn _vmaxv_u8(a: uint8x8_t) -> u8;
-    }
-    unsafe { _vmaxv_u8(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Horizontal vector max."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_u8)"]
@@ -13549,14 +13340,7 @@ pub fn vmaxv_u8(a: uint8x8_t) -> u8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(umaxv))]
 pub fn vmaxvq_u8(a: uint8x16_t) -> u8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umaxv.i8.v16i8"
-        )]
-        fn _vmaxvq_u8(a: uint8x16_t) -> u8;
-    }
-    unsafe { _vmaxvq_u8(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Horizontal vector max."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_u16)"]
@@ -13565,14 +13349,7 @@ pub fn vmaxvq_u8(a: uint8x16_t) -> u8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(umaxv))]
 pub fn vmaxv_u16(a: uint16x4_t) -> u16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umaxv.i16.v4i16"
-        )]
-        fn _vmaxv_u16(a: uint16x4_t) -> u16;
-    }
-    unsafe { _vmaxv_u16(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Horizontal vector max."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_u16)"]
@@ -13581,14 +13358,7 @@ pub fn vmaxv_u16(a: uint16x4_t) -> u16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(umaxv))]
 pub fn vmaxvq_u16(a: uint16x8_t) -> u16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umaxv.i16.v8i16"
-        )]
-        fn _vmaxvq_u16(a: uint16x8_t) -> u16;
-    }
-    unsafe { _vmaxvq_u16(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Horizontal vector max."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxv_u32)"]
@@ -13597,14 +13367,7 @@ pub fn vmaxvq_u16(a: uint16x8_t) -> u16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(umaxp))]
 pub fn vmaxv_u32(a: uint32x2_t) -> u32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umaxv.i32.v2i32"
-        )]
-        fn _vmaxv_u32(a: uint32x2_t) -> u32;
-    }
-    unsafe { _vmaxv_u32(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Horizontal vector max."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxvq_u32)"]
@@ -13613,14 +13376,7 @@ pub fn vmaxv_u32(a: uint32x2_t) -> u32 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(umaxv))]
 pub fn vmaxvq_u32(a: uint32x4_t) -> u32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umaxv.i32.v4i32"
-        )]
-        fn _vmaxvq_u32(a: uint32x4_t) -> u32;
-    }
-    unsafe { _vmaxvq_u32(a) }
+    unsafe { simd_reduce_max(a) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f64)"]
@@ -13677,14 +13433,7 @@ pub fn vminh_f16(a: f16, b: f16) -> f16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(fminnm))]
 pub fn vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnm.v1f64"
-        )]
-        fn _vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t;
-    }
-    unsafe { _vminnm_f64(a, b) }
+    unsafe { simd_fmin(a, b) }
 }
 #[doc = "Floating-point Minimum Number (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f64)"]
@@ -13693,14 +13442,7 @@ pub fn vminnm_f64(a: float64x1_t, b: float64x1_t) -> float64x1_t {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(fminnm))]
 pub fn vminnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnm.v2f64"
-        )]
-        fn _vminnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t;
-    }
-    unsafe { _vminnmq_f64(a, b) }
+    unsafe { simd_fmin(a, b) }
 }
 #[doc = "Floating-point Minimum Number"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmh_f16)"]
@@ -13709,14 +13451,7 @@ pub fn vminnmq_f64(a: float64x2_t, b: float64x2_t) -> float64x2_t {
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
 #[cfg_attr(test, assert_instr(fminnm))]
 pub fn vminnmh_f16(a: f16, b: f16) -> f16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnm.f16"
-        )]
-        fn _vminnmh_f16(a: f16, b: f16) -> f16;
-    }
-    unsafe { _vminnmh_f16(a, b) }
+    f16::min(a, b)
 }
 #[doc = "Floating-point minimum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmv_f16)"]
@@ -13725,14 +13460,7 @@ pub fn vminnmh_f16(a: f16, b: f16) -> f16 {
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
 #[cfg_attr(test, assert_instr(fminnmv))]
 pub fn vminnmv_f16(a: float16x4_t) -> f16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnmv.f16.v4f16"
-        )]
-        fn _vminnmv_f16(a: float16x4_t) -> f16;
-    }
-    unsafe { _vminnmv_f16(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Floating-point minimum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f16)"]
@@ -13741,14 +13469,7 @@ pub fn vminnmv_f16(a: float16x4_t) -> f16 {
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
 #[cfg_attr(test, assert_instr(fminnmv))]
 pub fn vminnmvq_f16(a: float16x8_t) -> f16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnmv.f16.v8f16"
-        )]
-        fn _vminnmvq_f16(a: float16x8_t) -> f16;
-    }
-    unsafe { _vminnmvq_f16(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Floating-point minimum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmv_f32)"]
@@ -13757,14 +13478,7 @@ pub fn vminnmvq_f16(a: float16x8_t) -> f16 {
 #[cfg_attr(test, assert_instr(fminnmp))]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 pub fn vminnmv_f32(a: float32x2_t) -> f32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnmv.f32.v2f32"
-        )]
-        fn _vminnmv_f32(a: float32x2_t) -> f32;
-    }
-    unsafe { _vminnmv_f32(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Floating-point minimum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f64)"]
@@ -13773,14 +13487,7 @@ pub fn vminnmv_f32(a: float32x2_t) -> f32 {
 #[cfg_attr(test, assert_instr(fminnmp))]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 pub fn vminnmvq_f64(a: float64x2_t) -> f64 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnmv.f64.v2f64"
-        )]
-        fn _vminnmvq_f64(a: float64x2_t) -> f64;
-    }
-    unsafe { _vminnmvq_f64(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Floating-point minimum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmvq_f32)"]
@@ -13789,14 +13496,7 @@ pub fn vminnmvq_f64(a: float64x2_t) -> f64 {
 #[cfg_attr(test, assert_instr(fminnmv))]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 pub fn vminnmvq_f32(a: float32x4_t) -> f32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnmv.f32.v4f32"
-        )]
-        fn _vminnmvq_f32(a: float32x4_t) -> f32;
-    }
-    unsafe { _vminnmvq_f32(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Floating-point minimum number across vector"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_f16)"]
@@ -13885,14 +13585,7 @@ pub fn vminvq_f64(a: float64x2_t) -> f64 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(sminv))]
 pub fn vminv_s8(a: int8x8_t) -> i8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.sminv.i8.v8i8"
-        )]
-        fn _vminv_s8(a: int8x8_t) -> i8;
-    }
-    unsafe { _vminv_s8(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Horizontal vector min."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_s8)"]
@@ -13901,14 +13594,7 @@ pub fn vminv_s8(a: int8x8_t) -> i8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(sminv))]
 pub fn vminvq_s8(a: int8x16_t) -> i8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.sminv.i8.v16i8"
-        )]
-        fn _vminvq_s8(a: int8x16_t) -> i8;
-    }
-    unsafe { _vminvq_s8(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Horizontal vector min."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_s16)"]
@@ -13917,14 +13603,7 @@ pub fn vminvq_s8(a: int8x16_t) -> i8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(sminv))]
 pub fn vminv_s16(a: int16x4_t) -> i16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.sminv.i16.v4i16"
-        )]
-        fn _vminv_s16(a: int16x4_t) -> i16;
-    }
-    unsafe { _vminv_s16(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Horizontal vector min."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_s16)"]
@@ -13933,14 +13612,7 @@ pub fn vminv_s16(a: int16x4_t) -> i16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(sminv))]
 pub fn vminvq_s16(a: int16x8_t) -> i16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.sminv.i16.v8i16"
-        )]
-        fn _vminvq_s16(a: int16x8_t) -> i16;
-    }
-    unsafe { _vminvq_s16(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Horizontal vector min."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_s32)"]
@@ -13949,14 +13621,7 @@ pub fn vminvq_s16(a: int16x8_t) -> i16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(sminp))]
 pub fn vminv_s32(a: int32x2_t) -> i32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.sminv.i32.v2i32"
-        )]
-        fn _vminv_s32(a: int32x2_t) -> i32;
-    }
-    unsafe { _vminv_s32(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Horizontal vector min."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_s32)"]
@@ -13965,14 +13630,7 @@ pub fn vminv_s32(a: int32x2_t) -> i32 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(sminv))]
 pub fn vminvq_s32(a: int32x4_t) -> i32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.sminv.i32.v4i32"
-        )]
-        fn _vminvq_s32(a: int32x4_t) -> i32;
-    }
-    unsafe { _vminvq_s32(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Horizontal vector min."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_u8)"]
@@ -13981,14 +13639,7 @@ pub fn vminvq_s32(a: int32x4_t) -> i32 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(uminv))]
 pub fn vminv_u8(a: uint8x8_t) -> u8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uminv.i8.v8i8"
-        )]
-        fn _vminv_u8(a: uint8x8_t) -> u8;
-    }
-    unsafe { _vminv_u8(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Horizontal vector min."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_u8)"]
@@ -13997,14 +13648,7 @@ pub fn vminv_u8(a: uint8x8_t) -> u8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(uminv))]
 pub fn vminvq_u8(a: uint8x16_t) -> u8 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uminv.i8.v16i8"
-        )]
-        fn _vminvq_u8(a: uint8x16_t) -> u8;
-    }
-    unsafe { _vminvq_u8(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Horizontal vector min."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_u16)"]
@@ -14013,14 +13657,7 @@ pub fn vminvq_u8(a: uint8x16_t) -> u8 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(uminv))]
 pub fn vminv_u16(a: uint16x4_t) -> u16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uminv.i16.v4i16"
-        )]
-        fn _vminv_u16(a: uint16x4_t) -> u16;
-    }
-    unsafe { _vminv_u16(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Horizontal vector min."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_u16)"]
@@ -14029,14 +13666,7 @@ pub fn vminv_u16(a: uint16x4_t) -> u16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(uminv))]
 pub fn vminvq_u16(a: uint16x8_t) -> u16 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uminv.i16.v8i16"
-        )]
-        fn _vminvq_u16(a: uint16x8_t) -> u16;
-    }
-    unsafe { _vminvq_u16(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Horizontal vector min."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminv_u32)"]
@@ -14045,14 +13675,7 @@ pub fn vminvq_u16(a: uint16x8_t) -> u16 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(uminp))]
 pub fn vminv_u32(a: uint32x2_t) -> u32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uminv.i32.v2i32"
-        )]
-        fn _vminv_u32(a: uint32x2_t) -> u32;
-    }
-    unsafe { _vminv_u32(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Horizontal vector min."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminvq_u32)"]
@@ -14061,14 +13684,7 @@ pub fn vminv_u32(a: uint32x2_t) -> u32 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(uminv))]
 pub fn vminvq_u32(a: uint32x4_t) -> u32 {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.uminv.i32.v4i32"
-        )]
-        fn _vminvq_u32(a: uint32x4_t) -> u32;
-    }
-    unsafe { _vminvq_u32(a) }
+    unsafe { simd_reduce_min(a) }
 }
 #[doc = "Floating-point multiply-add to accumulator"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f64)"]
@@ -15277,7 +14893,7 @@ pub fn vmull_high_n_u32(a: uint32x4_t, b: u32) -> uint64x2_t {
 #[inline]
 #[target_feature(enable = "neon,aes")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(pmull))]
+#[cfg_attr(test, assert_instr(pmull2))]
 pub fn vmull_high_p64(a: poly64x2_t, b: poly64x2_t) -> p128 {
     unsafe { vmull_p64(simd_extract!(a, 1), simd_extract!(b, 1)) }
 }
@@ -15286,7 +14902,7 @@ pub fn vmull_high_p64(a: poly64x2_t, b: poly64x2_t) -> p128 {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(pmull))]
+#[cfg_attr(test, assert_instr(pmull2))]
 pub fn vmull_high_p8(a: poly8x16_t, b: poly8x16_t) -> poly16x8_t {
     unsafe {
         let a: poly8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
@@ -15951,23 +15567,11 @@ pub fn vpadds_f32(a: float32x2_t) -> f32 {
 #[doc = "Add pairwise"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddd_s64)"]
 #[inline]
-#[cfg(target_endian = "little")]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addp))]
 pub fn vpaddd_s64(a: int64x2_t) -> i64 {
-    unsafe { transmute(vaddvq_u64(transmute(a))) }
-}
-#[doc = "Add pairwise"]
-#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddd_s64)"]
-#[inline]
-#[cfg(target_endian = "big")]
-#[target_feature(enable = "neon")]
-#[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(addp))]
-pub fn vpaddd_s64(a: int64x2_t) -> i64 {
-    let a: int64x2_t = unsafe { simd_shuffle!(a, a, [1, 0]) };
-    unsafe { transmute(vaddvq_u64(transmute(a))) }
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Add pairwise"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddd_u64)"]
@@ -15976,7 +15580,7 @@ pub fn vpaddd_s64(a: int64x2_t) -> i64 {
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
 #[cfg_attr(test, assert_instr(addp))]
 pub fn vpaddd_u64(a: uint64x2_t) -> u64 {
-    vaddvq_u64(a)
+    unsafe { simd_reduce_add_unordered(a) }
 }
 #[doc = "Floating-point add pairwise"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vpaddq_f16)"]
@@ -26893,7 +26497,7 @@ pub fn vsubh_f16(a: f16, b: f16) -> f16 {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(ssubl))]
+#[cfg_attr(test, assert_instr(ssubl2))]
 pub fn vsubl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
     unsafe {
         let c: int8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
@@ -26908,7 +26512,7 @@ pub fn vsubl_high_s8(a: int8x16_t, b: int8x16_t) -> int16x8_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(ssubl))]
+#[cfg_attr(test, assert_instr(ssubl2))]
 pub fn vsubl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
     unsafe {
         let c: int16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
@@ -26923,7 +26527,7 @@ pub fn vsubl_high_s16(a: int16x8_t, b: int16x8_t) -> int32x4_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(ssubl))]
+#[cfg_attr(test, assert_instr(ssubl2))]
 pub fn vsubl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
     unsafe {
         let c: int32x2_t = simd_shuffle!(a, a, [2, 3]);
@@ -26938,7 +26542,7 @@ pub fn vsubl_high_s32(a: int32x4_t, b: int32x4_t) -> int64x2_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(usubl))]
+#[cfg_attr(test, assert_instr(usubl2))]
 pub fn vsubl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
     unsafe {
         let c: uint8x8_t = simd_shuffle!(a, a, [8, 9, 10, 11, 12, 13, 14, 15]);
@@ -26953,7 +26557,7 @@ pub fn vsubl_high_u8(a: uint8x16_t, b: uint8x16_t) -> uint16x8_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(usubl))]
+#[cfg_attr(test, assert_instr(usubl2))]
 pub fn vsubl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
     unsafe {
         let c: uint16x4_t = simd_shuffle!(a, a, [4, 5, 6, 7]);
@@ -26968,7 +26572,7 @@ pub fn vsubl_high_u16(a: uint16x8_t, b: uint16x8_t) -> uint32x4_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(usubl))]
+#[cfg_attr(test, assert_instr(usubl2))]
 pub fn vsubl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
     unsafe {
         let c: uint32x2_t = simd_shuffle!(a, a, [2, 3]);
@@ -26983,7 +26587,7 @@ pub fn vsubl_high_u32(a: uint32x4_t, b: uint32x4_t) -> uint64x2_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(ssubw))]
+#[cfg_attr(test, assert_instr(ssubw2))]
 pub fn vsubw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
     unsafe {
         let c: int8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
@@ -26995,7 +26599,7 @@ pub fn vsubw_high_s8(a: int16x8_t, b: int8x16_t) -> int16x8_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(ssubw))]
+#[cfg_attr(test, assert_instr(ssubw2))]
 pub fn vsubw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
     unsafe {
         let c: int16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
@@ -27007,7 +26611,7 @@ pub fn vsubw_high_s16(a: int32x4_t, b: int16x8_t) -> int32x4_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(ssubw))]
+#[cfg_attr(test, assert_instr(ssubw2))]
 pub fn vsubw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
     unsafe {
         let c: int32x2_t = simd_shuffle!(b, b, [2, 3]);
@@ -27019,7 +26623,7 @@ pub fn vsubw_high_s32(a: int64x2_t, b: int32x4_t) -> int64x2_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(usubw))]
+#[cfg_attr(test, assert_instr(usubw2))]
 pub fn vsubw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
     unsafe {
         let c: uint8x8_t = simd_shuffle!(b, b, [8, 9, 10, 11, 12, 13, 14, 15]);
@@ -27031,7 +26635,7 @@ pub fn vsubw_high_u8(a: uint16x8_t, b: uint8x16_t) -> uint16x8_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(usubw))]
+#[cfg_attr(test, assert_instr(usubw2))]
 pub fn vsubw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
     unsafe {
         let c: uint16x4_t = simd_shuffle!(b, b, [4, 5, 6, 7]);
@@ -27043,7 +26647,7 @@ pub fn vsubw_high_u16(a: uint32x4_t, b: uint16x8_t) -> uint32x4_t {
 #[inline]
 #[target_feature(enable = "neon")]
 #[stable(feature = "neon_intrinsics", since = "1.59.0")]
-#[cfg_attr(test, assert_instr(usubw))]
+#[cfg_attr(test, assert_instr(usubw2))]
 pub fn vsubw_high_u32(a: uint64x2_t, b: uint32x4_t) -> uint64x2_t {
     unsafe {
         let c: uint32x2_t = simd_shuffle!(b, b, [2, 3]);
diff --git a/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs b/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs
index 4df1b741485..32531c7da13 100644
--- a/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs
+++ b/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs
@@ -1483,15 +1483,11 @@ pub fn vabsq_f32(a: float32x4_t) -> float32x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vabs_s8(a: int8x8_t) -> int8x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.abs.v8i8"
-        )]
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v8i8")]
-        fn _vabs_s8(a: int8x8_t) -> int8x8_t;
+    unsafe {
+        let neg: int8x8_t = simd_neg(a);
+        let mask: int8x8_t = simd_ge(a, neg);
+        simd_select(mask, a, neg)
     }
-    unsafe { _vabs_s8(a) }
 }
 #[doc = "Absolute value (wrapping)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s8)"]
@@ -1512,15 +1508,11 @@ pub fn vabs_s8(a: int8x8_t) -> int8x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vabsq_s8(a: int8x16_t) -> int8x16_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.abs.v16i8"
-        )]
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v16i8")]
-        fn _vabsq_s8(a: int8x16_t) -> int8x16_t;
+    unsafe {
+        let neg: int8x16_t = simd_neg(a);
+        let mask: int8x16_t = simd_ge(a, neg);
+        simd_select(mask, a, neg)
     }
-    unsafe { _vabsq_s8(a) }
 }
 #[doc = "Absolute value (wrapping)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s16)"]
@@ -1541,15 +1533,11 @@ pub fn vabsq_s8(a: int8x16_t) -> int8x16_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vabs_s16(a: int16x4_t) -> int16x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.abs.v4i16"
-        )]
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v4i16")]
-        fn _vabs_s16(a: int16x4_t) -> int16x4_t;
+    unsafe {
+        let neg: int16x4_t = simd_neg(a);
+        let mask: int16x4_t = simd_ge(a, neg);
+        simd_select(mask, a, neg)
     }
-    unsafe { _vabs_s16(a) }
 }
 #[doc = "Absolute value (wrapping)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s16)"]
@@ -1570,15 +1558,11 @@ pub fn vabs_s16(a: int16x4_t) -> int16x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vabsq_s16(a: int16x8_t) -> int16x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.abs.v8i16"
-        )]
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v8i16")]
-        fn _vabsq_s16(a: int16x8_t) -> int16x8_t;
+    unsafe {
+        let neg: int16x8_t = simd_neg(a);
+        let mask: int16x8_t = simd_ge(a, neg);
+        simd_select(mask, a, neg)
     }
-    unsafe { _vabsq_s16(a) }
 }
 #[doc = "Absolute value (wrapping)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabs_s32)"]
@@ -1599,15 +1583,11 @@ pub fn vabsq_s16(a: int16x8_t) -> int16x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vabs_s32(a: int32x2_t) -> int32x2_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.abs.v2i32"
-        )]
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v2i32")]
-        fn _vabs_s32(a: int32x2_t) -> int32x2_t;
+    unsafe {
+        let neg: int32x2_t = simd_neg(a);
+        let mask: int32x2_t = simd_ge(a, neg);
+        simd_select(mask, a, neg)
     }
-    unsafe { _vabs_s32(a) }
 }
 #[doc = "Absolute value (wrapping)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsq_s32)"]
@@ -1628,15 +1608,11 @@ pub fn vabs_s32(a: int32x2_t) -> int32x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vabsq_s32(a: int32x4_t) -> int32x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.abs.v4i32"
-        )]
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vabs.v4i32")]
-        fn _vabsq_s32(a: int32x4_t) -> int32x4_t;
+    unsafe {
+        let neg: int32x4_t = simd_neg(a);
+        let mask: int32x4_t = simd_ge(a, neg);
+        simd_select(mask, a, neg)
     }
-    unsafe { _vabsq_s32(a) }
 }
 #[doc = "Floating-point absolute value"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vabsh_f16)"]
@@ -14322,8 +14298,7 @@ pub unsafe fn vld1q_dup_f16(ptr: *const f16) -> float16x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1_dup_f32(ptr: *const f32) -> float32x2_t {
-    let x = vld1_lane_f32::<0>(ptr, transmute(f32x2::splat(0.0)));
-    simd_shuffle!(x, x, [0, 0])
+    transmute(f32x2::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p16)"]
@@ -14346,8 +14321,7 @@ pub unsafe fn vld1_dup_f32(ptr: *const f32) -> float32x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1_dup_p16(ptr: *const p16) -> poly16x4_t {
-    let x = vld1_lane_p16::<0>(ptr, transmute(u16x4::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0])
+    transmute(u16x4::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p8)"]
@@ -14370,8 +14344,7 @@ pub unsafe fn vld1_dup_p16(ptr: *const p16) -> poly16x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1_dup_p8(ptr: *const p8) -> poly8x8_t {
-    let x = vld1_lane_p8::<0>(ptr, transmute(u8x8::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
+    transmute(u8x8::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s16)"]
@@ -14394,8 +14367,7 @@ pub unsafe fn vld1_dup_p8(ptr: *const p8) -> poly8x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1_dup_s16(ptr: *const i16) -> int16x4_t {
-    let x = vld1_lane_s16::<0>(ptr, transmute(i16x4::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0])
+    transmute(i16x4::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s32)"]
@@ -14418,8 +14390,7 @@ pub unsafe fn vld1_dup_s16(ptr: *const i16) -> int16x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1_dup_s32(ptr: *const i32) -> int32x2_t {
-    let x = vld1_lane_s32::<0>(ptr, transmute(i32x2::splat(0)));
-    simd_shuffle!(x, x, [0, 0])
+    transmute(i32x2::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_s8)"]
@@ -14442,8 +14413,7 @@ pub unsafe fn vld1_dup_s32(ptr: *const i32) -> int32x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1_dup_s8(ptr: *const i8) -> int8x8_t {
-    let x = vld1_lane_s8::<0>(ptr, transmute(i8x8::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
+    transmute(i8x8::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u16)"]
@@ -14466,8 +14436,7 @@ pub unsafe fn vld1_dup_s8(ptr: *const i8) -> int8x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1_dup_u16(ptr: *const u16) -> uint16x4_t {
-    let x = vld1_lane_u16::<0>(ptr, transmute(u16x4::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0])
+    transmute(u16x4::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u32)"]
@@ -14490,8 +14459,7 @@ pub unsafe fn vld1_dup_u16(ptr: *const u16) -> uint16x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1_dup_u32(ptr: *const u32) -> uint32x2_t {
-    let x = vld1_lane_u32::<0>(ptr, transmute(u32x2::splat(0)));
-    simd_shuffle!(x, x, [0, 0])
+    transmute(u32x2::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_u8)"]
@@ -14514,8 +14482,7 @@ pub unsafe fn vld1_dup_u32(ptr: *const u32) -> uint32x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1_dup_u8(ptr: *const u8) -> uint8x8_t {
-    let x = vld1_lane_u8::<0>(ptr, transmute(u8x8::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
+    transmute(u8x8::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_f32)"]
@@ -14538,8 +14505,7 @@ pub unsafe fn vld1_dup_u8(ptr: *const u8) -> uint8x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1q_dup_f32(ptr: *const f32) -> float32x4_t {
-    let x = vld1q_lane_f32::<0>(ptr, transmute(f32x4::splat(0.0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0])
+    transmute(f32x4::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p16)"]
@@ -14562,8 +14528,7 @@ pub unsafe fn vld1q_dup_f32(ptr: *const f32) -> float32x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1q_dup_p16(ptr: *const p16) -> poly16x8_t {
-    let x = vld1q_lane_p16::<0>(ptr, transmute(u16x8::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
+    transmute(u16x8::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_p8)"]
@@ -14586,8 +14551,7 @@ pub unsafe fn vld1q_dup_p16(ptr: *const p16) -> poly16x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1q_dup_p8(ptr: *const p8) -> poly8x16_t {
-    let x = vld1q_lane_p8::<0>(ptr, transmute(u8x16::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
+    transmute(u8x16::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s16)"]
@@ -14610,8 +14574,7 @@ pub unsafe fn vld1q_dup_p8(ptr: *const p8) -> poly8x16_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1q_dup_s16(ptr: *const i16) -> int16x8_t {
-    let x = vld1q_lane_s16::<0>(ptr, transmute(i16x8::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
+    transmute(i16x8::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s32)"]
@@ -14634,8 +14597,7 @@ pub unsafe fn vld1q_dup_s16(ptr: *const i16) -> int16x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {
-    let x = vld1q_lane_s32::<0>(ptr, transmute(i32x4::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0])
+    transmute(i32x4::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s64)"]
@@ -14647,7 +14609,7 @@ pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(ld1)
+    assert_instr(ld1r)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -14658,8 +14620,7 @@ pub unsafe fn vld1q_dup_s32(ptr: *const i32) -> int32x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1q_dup_s64(ptr: *const i64) -> int64x2_t {
-    let x = vld1q_lane_s64::<0>(ptr, transmute(i64x2::splat(0)));
-    simd_shuffle!(x, x, [0, 0])
+    transmute(i64x2::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_s8)"]
@@ -14682,8 +14643,7 @@ pub unsafe fn vld1q_dup_s64(ptr: *const i64) -> int64x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1q_dup_s8(ptr: *const i8) -> int8x16_t {
-    let x = vld1q_lane_s8::<0>(ptr, transmute(i8x16::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
+    transmute(i8x16::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u16)"]
@@ -14706,8 +14666,7 @@ pub unsafe fn vld1q_dup_s8(ptr: *const i8) -> int8x16_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1q_dup_u16(ptr: *const u16) -> uint16x8_t {
-    let x = vld1q_lane_u16::<0>(ptr, transmute(u16x8::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0])
+    transmute(u16x8::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u32)"]
@@ -14730,8 +14689,7 @@ pub unsafe fn vld1q_dup_u16(ptr: *const u16) -> uint16x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {
-    let x = vld1q_lane_u32::<0>(ptr, transmute(u32x4::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0])
+    transmute(u32x4::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u64)"]
@@ -14743,7 +14701,7 @@ pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr("vldr"))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(ld1)
+    assert_instr(ld1r)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -14754,8 +14712,7 @@ pub unsafe fn vld1q_dup_u32(ptr: *const u32) -> uint32x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1q_dup_u64(ptr: *const u64) -> uint64x2_t {
-    let x = vld1q_lane_u64::<0>(ptr, transmute(u64x2::splat(0)));
-    simd_shuffle!(x, x, [0, 0])
+    transmute(u64x2::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1q_dup_u8)"]
@@ -14778,8 +14735,7 @@ pub unsafe fn vld1q_dup_u64(ptr: *const u64) -> uint64x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub unsafe fn vld1q_dup_u8(ptr: *const u8) -> uint8x16_t {
-    let x = vld1q_lane_u8::<0>(ptr, transmute(u8x16::splat(0)));
-    simd_shuffle!(x, x, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
+    transmute(u8x16::splat(*ptr))
 }
 #[doc = "Load one single-element structure and Replicate to all lanes (of one register)."]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vld1_dup_p64)"]
@@ -27681,15 +27637,10 @@ pub fn vmaxq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v8i8")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smax.v8i8"
-        )]
-        fn _vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
+    unsafe {
+        let mask: int8x8_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmax_s8(a, b) }
 }
 #[doc = "Maximum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s8)"]
@@ -27710,15 +27661,10 @@ pub fn vmax_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v16i8")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smax.v16i8"
-        )]
-        fn _vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
+    unsafe {
+        let mask: int8x16_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmaxq_s8(a, b) }
 }
 #[doc = "Maximum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s16)"]
@@ -27739,15 +27685,10 @@ pub fn vmaxq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4i16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smax.v4i16"
-        )]
-        fn _vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
+    unsafe {
+        let mask: int16x4_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmax_s16(a, b) }
 }
 #[doc = "Maximum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s16)"]
@@ -27768,15 +27709,10 @@ pub fn vmax_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v8i16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smax.v8i16"
-        )]
-        fn _vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
+    unsafe {
+        let mask: int16x8_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmaxq_s16(a, b) }
 }
 #[doc = "Maximum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_s32)"]
@@ -27797,15 +27733,10 @@ pub fn vmaxq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v2i32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smax.v2i32"
-        )]
-        fn _vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
+    unsafe {
+        let mask: int32x2_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmax_s32(a, b) }
 }
 #[doc = "Maximum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_s32)"]
@@ -27826,15 +27757,10 @@ pub fn vmax_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxs.v4i32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smax.v4i32"
-        )]
-        fn _vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
+    unsafe {
+        let mask: int32x4_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmaxq_s32(a, b) }
 }
 #[doc = "Maximum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u8)"]
@@ -27855,15 +27781,10 @@ pub fn vmaxq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v8i8")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umax.v8i8"
-        )]
-        fn _vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
+    unsafe {
+        let mask: uint8x8_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmax_u8(a, b) }
 }
 #[doc = "Maximum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u8)"]
@@ -27884,15 +27805,10 @@ pub fn vmax_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v16i8")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umax.v16i8"
-        )]
-        fn _vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
+    unsafe {
+        let mask: uint8x16_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmaxq_u8(a, b) }
 }
 #[doc = "Maximum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u16)"]
@@ -27913,15 +27829,10 @@ pub fn vmaxq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v4i16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umax.v4i16"
-        )]
-        fn _vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
+    unsafe {
+        let mask: uint16x4_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmax_u16(a, b) }
 }
 #[doc = "Maximum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u16)"]
@@ -27942,15 +27853,10 @@ pub fn vmax_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v8i16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umax.v8i16"
-        )]
-        fn _vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
+    unsafe {
+        let mask: uint16x8_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmaxq_u16(a, b) }
 }
 #[doc = "Maximum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmax_u32)"]
@@ -27971,15 +27877,10 @@ pub fn vmaxq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v2i32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umax.v2i32"
-        )]
-        fn _vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
+    unsafe {
+        let mask: uint32x2_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmax_u32(a, b) }
 }
 #[doc = "Maximum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxq_u32)"]
@@ -28000,15 +27901,10 @@ pub fn vmax_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxu.v4i32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umax.v4i32"
-        )]
-        fn _vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
+    unsafe {
+        let mask: uint32x4_t = simd_ge(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmaxq_u32(a, b) }
 }
 #[doc = "Floating-point Maximum Number (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f16)"]
@@ -28022,15 +27918,7 @@ pub fn vmaxq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
 #[target_feature(enable = "neon,fp16")]
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
 pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v4f16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnm.v4f16"
-        )]
-        fn _vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
-    }
-    unsafe { _vmaxnm_f16(a, b) }
+    unsafe { simd_fmax(a, b) }
 }
 #[doc = "Floating-point Maximum Number (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f16)"]
@@ -28044,15 +27932,7 @@ pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
 #[target_feature(enable = "neon,fp16")]
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
 pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v8f16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnm.v8f16"
-        )]
-        fn _vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
-    }
-    unsafe { _vmaxnmq_f16(a, b) }
+    unsafe { simd_fmax(a, b) }
 }
 #[doc = "Floating-point Maximum Number (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnm_f32)"]
@@ -28073,15 +27953,7 @@ pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v2f32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnm.v2f32"
-        )]
-        fn _vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
-    }
-    unsafe { _vmaxnm_f32(a, b) }
+    unsafe { simd_fmax(a, b) }
 }
 #[doc = "Floating-point Maximum Number (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmaxnmq_f32)"]
@@ -28102,15 +27974,7 @@ pub fn vmaxnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmaxnm.v4f32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fmaxnm.v4f32"
-        )]
-        fn _vmaxnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
-    }
-    unsafe { _vmaxnmq_f32(a, b) }
+    unsafe { simd_fmax(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_f16)"]
@@ -28233,15 +28097,10 @@ pub fn vminq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v8i8")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smin.v8i8"
-        )]
-        fn _vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t;
+    unsafe {
+        let mask: int8x8_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmin_s8(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s8)"]
@@ -28262,15 +28121,10 @@ pub fn vmin_s8(a: int8x8_t, b: int8x8_t) -> int8x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v16i8")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smin.v16i8"
-        )]
-        fn _vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t;
+    unsafe {
+        let mask: int8x16_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vminq_s8(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s16)"]
@@ -28291,15 +28145,10 @@ pub fn vminq_s8(a: int8x16_t, b: int8x16_t) -> int8x16_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4i16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smin.v4i16"
-        )]
-        fn _vmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t;
+    unsafe {
+        let mask: int16x4_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmin_s16(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s16)"]
@@ -28320,15 +28169,10 @@ pub fn vmin_s16(a: int16x4_t, b: int16x4_t) -> int16x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v8i16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smin.v8i16"
-        )]
-        fn _vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t;
+    unsafe {
+        let mask: int16x8_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vminq_s16(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_s32)"]
@@ -28349,15 +28193,10 @@ pub fn vminq_s16(a: int16x8_t, b: int16x8_t) -> int16x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v2i32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smin.v2i32"
-        )]
-        fn _vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t;
+    unsafe {
+        let mask: int32x2_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmin_s32(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_s32)"]
@@ -28378,15 +28217,10 @@ pub fn vmin_s32(a: int32x2_t, b: int32x2_t) -> int32x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vmins.v4i32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.smin.v4i32"
-        )]
-        fn _vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t;
+    unsafe {
+        let mask: int32x4_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vminq_s32(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u8)"]
@@ -28407,15 +28241,10 @@ pub fn vminq_s32(a: int32x4_t, b: int32x4_t) -> int32x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v8i8")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umin.v8i8"
-        )]
-        fn _vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t;
+    unsafe {
+        let mask: uint8x8_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmin_u8(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u8)"]
@@ -28436,15 +28265,10 @@ pub fn vmin_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v16i8")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umin.v16i8"
-        )]
-        fn _vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t;
+    unsafe {
+        let mask: uint8x16_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vminq_u8(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u16)"]
@@ -28465,15 +28289,10 @@ pub fn vminq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v4i16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umin.v4i16"
-        )]
-        fn _vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t;
+    unsafe {
+        let mask: uint16x4_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmin_u16(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u16)"]
@@ -28494,15 +28313,10 @@ pub fn vmin_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v8i16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umin.v8i16"
-        )]
-        fn _vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t;
+    unsafe {
+        let mask: uint16x8_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vminq_u16(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmin_u32)"]
@@ -28523,15 +28337,10 @@ pub fn vminq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v2i32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umin.v2i32"
-        )]
-        fn _vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t;
+    unsafe {
+        let mask: uint32x2_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vmin_u32(a, b) }
 }
 #[doc = "Minimum (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminq_u32)"]
@@ -28552,15 +28361,10 @@ pub fn vmin_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminu.v4i32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.umin.v4i32"
-        )]
-        fn _vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t;
+    unsafe {
+        let mask: uint32x4_t = simd_le(a, b);
+        simd_select(mask, a, b)
     }
-    unsafe { _vminq_u32(a, b) }
 }
 #[doc = "Floating-point Minimum Number (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f16)"]
@@ -28574,15 +28378,7 @@ pub fn vminq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
 #[target_feature(enable = "neon,fp16")]
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
 pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v4f16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnm.v4f16"
-        )]
-        fn _vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
-    }
-    unsafe { _vminnm_f16(a, b) }
+    unsafe { simd_fmin(a, b) }
 }
 #[doc = "Floating-point Minimum Number (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f16)"]
@@ -28596,15 +28392,7 @@ pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t {
 #[target_feature(enable = "neon,fp16")]
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
 pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v8f16")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnm.v8f16"
-        )]
-        fn _vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
-    }
-    unsafe { _vminnmq_f16(a, b) }
+    unsafe { simd_fmin(a, b) }
 }
 #[doc = "Floating-point Minimum Number (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnm_f32)"]
@@ -28625,15 +28413,7 @@ pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v2f32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnm.v2f32"
-        )]
-        fn _vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t;
-    }
-    unsafe { _vminnm_f32(a, b) }
+    unsafe { simd_fmin(a, b) }
 }
 #[doc = "Floating-point Minimum Number (vector)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vminnmq_f32)"]
@@ -28654,15 +28434,7 @@ pub fn vminnm_f32(a: float32x2_t, b: float32x2_t) -> float32x2_t {
     unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800")
 )]
 pub fn vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t {
-    unsafe extern "unadjusted" {
-        #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vminnm.v4f32")]
-        #[cfg_attr(
-            any(target_arch = "aarch64", target_arch = "arm64ec"),
-            link_name = "llvm.aarch64.neon.fminnm.v4f32"
-        )]
-        fn _vminnmq_f32(a: float32x4_t, b: float32x4_t) -> float32x4_t;
-    }
-    unsafe { _vminnmq_f32(a, b) }
+    unsafe { simd_fmin(a, b) }
 }
 #[doc = "Floating-point multiply-add to accumulator"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vmla_f32)"]
@@ -39566,17 +39338,7 @@ pub fn vqrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v8i8")]
         fn _vqrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
     }
-    unsafe {
-        _vqrshrn_n_s16(
-            a,
-            const {
-                int16x8_t([
-                    -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16,
-                    -N as i16,
-                ])
-            },
-        )
-    }
+    unsafe { _vqrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
 }
 #[doc = "Signed saturating rounded shift right narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s32)"]
@@ -39592,12 +39354,7 @@ pub fn vqrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v4i16")]
         fn _vqrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
     }
-    unsafe {
-        _vqrshrn_n_s32(
-            a,
-            const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) },
-        )
-    }
+    unsafe { _vqrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
 }
 #[doc = "Signed saturating rounded shift right narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s64)"]
@@ -39613,7 +39370,7 @@ pub fn vqrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftns.v2i32")]
         fn _vqrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
     }
-    unsafe { _vqrshrn_n_s64(a, const { int64x2_t([-N as i64, -N as i64]) }) }
+    unsafe { _vqrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
 }
 #[doc = "Signed saturating rounded shift right narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrn_n_s16)"]
@@ -39806,17 +39563,7 @@ pub fn vqrshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v8i8")]
         fn _vqrshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
     }
-    unsafe {
-        _vqrshrun_n_s16(
-            a,
-            const {
-                int16x8_t([
-                    -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16,
-                    -N as i16,
-                ])
-            },
-        )
-    }
+    unsafe { _vqrshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
 }
 #[doc = "Signed saturating rounded shift right unsigned narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s32)"]
@@ -39832,12 +39579,7 @@ pub fn vqrshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v4i16")]
         fn _vqrshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
     }
-    unsafe {
-        _vqrshrun_n_s32(
-            a,
-            const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) },
-        )
-    }
+    unsafe { _vqrshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
 }
 #[doc = "Signed saturating rounded shift right unsigned narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s64)"]
@@ -39853,7 +39595,7 @@ pub fn vqrshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqrshiftnsu.v2i32")]
         fn _vqrshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
     }
-    unsafe { _vqrshrun_n_s64(a, const { int64x2_t([-N as i64, -N as i64]) }) }
+    unsafe { _vqrshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
 }
 #[doc = "Signed saturating rounded shift right unsigned narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqrshrun_n_s16)"]
@@ -41038,17 +40780,7 @@ pub fn vqshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v8i8")]
         fn _vqshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
     }
-    unsafe {
-        _vqshrn_n_s16(
-            a,
-            const {
-                int16x8_t([
-                    -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16,
-                    -N as i16,
-                ])
-            },
-        )
-    }
+    unsafe { _vqshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
 }
 #[doc = "Signed saturating shift right narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s32)"]
@@ -41064,12 +40796,7 @@ pub fn vqshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v4i16")]
         fn _vqshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
     }
-    unsafe {
-        _vqshrn_n_s32(
-            a,
-            const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) },
-        )
-    }
+    unsafe { _vqshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
 }
 #[doc = "Signed saturating shift right narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s64)"]
@@ -41085,7 +40812,7 @@ pub fn vqshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftns.v2i32")]
         fn _vqshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
     }
-    unsafe { _vqshrn_n_s64(a, const { int64x2_t([-N as i64, -N as i64]) }) }
+    unsafe { _vqshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
 }
 #[doc = "Signed saturating shift right narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrn_n_s16)"]
@@ -41278,17 +41005,7 @@ pub fn vqshrun_n_s16<const N: i32>(a: int16x8_t) -> uint8x8_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v8i8")]
         fn _vqshrun_n_s16(a: int16x8_t, n: int16x8_t) -> uint8x8_t;
     }
-    unsafe {
-        _vqshrun_n_s16(
-            a,
-            const {
-                int16x8_t([
-                    -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16,
-                    -N as i16,
-                ])
-            },
-        )
-    }
+    unsafe { _vqshrun_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
 }
 #[doc = "Signed saturating shift right unsigned narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s32)"]
@@ -41304,12 +41021,7 @@ pub fn vqshrun_n_s32<const N: i32>(a: int32x4_t) -> uint16x4_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v4i16")]
         fn _vqshrun_n_s32(a: int32x4_t, n: int32x4_t) -> uint16x4_t;
     }
-    unsafe {
-        _vqshrun_n_s32(
-            a,
-            const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) },
-        )
-    }
+    unsafe { _vqshrun_n_s32(a, const { int32x4_t([-N; 4]) }) }
 }
 #[doc = "Signed saturating shift right unsigned narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s64)"]
@@ -41325,7 +41037,7 @@ pub fn vqshrun_n_s64<const N: i32>(a: int64x2_t) -> uint32x2_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vqshiftnsu.v2i32")]
         fn _vqshrun_n_s64(a: int64x2_t, n: int64x2_t) -> uint32x2_t;
     }
-    unsafe { _vqshrun_n_s64(a, const { int64x2_t([-N as i64, -N as i64]) }) }
+    unsafe { _vqshrun_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
 }
 #[doc = "Signed saturating shift right unsigned narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vqshrun_n_s16)"]
@@ -59483,17 +59195,7 @@ pub fn vrshrn_n_s16<const N: i32>(a: int16x8_t) -> int8x8_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v8i8")]
         fn _vrshrn_n_s16(a: int16x8_t, n: int16x8_t) -> int8x8_t;
     }
-    unsafe {
-        _vrshrn_n_s16(
-            a,
-            const {
-                int16x8_t([
-                    -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16,
-                    -N as i16,
-                ])
-            },
-        )
-    }
+    unsafe { _vrshrn_n_s16(a, const { int16x8_t([-N as i16; 8]) }) }
 }
 #[doc = "Rounding shift right narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s32)"]
@@ -59509,12 +59211,7 @@ pub fn vrshrn_n_s32<const N: i32>(a: int32x4_t) -> int16x4_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v4i16")]
         fn _vrshrn_n_s32(a: int32x4_t, n: int32x4_t) -> int16x4_t;
     }
-    unsafe {
-        _vrshrn_n_s32(
-            a,
-            const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) },
-        )
-    }
+    unsafe { _vrshrn_n_s32(a, const { int32x4_t([-N; 4]) }) }
 }
 #[doc = "Rounding shift right narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s64)"]
@@ -59530,7 +59227,7 @@ pub fn vrshrn_n_s64<const N: i32>(a: int64x2_t) -> int32x2_t {
         #[cfg_attr(target_arch = "arm", link_name = "llvm.arm.neon.vrshiftn.v2i32")]
         fn _vrshrn_n_s64(a: int64x2_t, n: int64x2_t) -> int32x2_t;
     }
-    unsafe { _vrshrn_n_s64(a, const { int64x2_t([-N as i64, -N as i64]) }) }
+    unsafe { _vrshrn_n_s64(a, const { int64x2_t([-N as i64; 2]) }) }
 }
 #[doc = "Rounding shift right narrow"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vrshrn_n_s16)"]
@@ -63183,7 +62880,7 @@ pub fn vsli_n_u32<const N: i32>(a: uint32x2_t, b: uint32x2_t) -> uint32x2_t {
         transmute(vshiftins_v2i32(
             transmute(a),
             transmute(b),
-            int32x2_t::splat(N as i32),
+            int32x2_t::splat(N),
         ))
     }
 }
@@ -63201,7 +62898,7 @@ pub fn vsliq_n_u32<const N: i32>(a: uint32x4_t, b: uint32x4_t) -> uint32x4_t {
         transmute(vshiftins_v4i32(
             transmute(a),
             transmute(b),
-            int32x4_t::splat(N as i32),
+            int32x4_t::splat(N),
         ))
     }
 }
@@ -63739,7 +63436,7 @@ pub fn vsriq_n_s16<const N: i32>(a: int16x8_t, b: int16x8_t) -> int16x8_t {
 #[rustc_legacy_const_generics(2)]
 pub fn vsri_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
     static_assert!(1 <= N && N <= 32);
-    vshiftins_v2i32(a, b, int32x2_t::splat(-N as i32))
+    vshiftins_v2i32(a, b, int32x2_t::splat(-N))
 }
 #[doc = "Shift Right and Insert (immediate)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsriq_n_s32)"]
@@ -63751,7 +63448,7 @@ pub fn vsri_n_s32<const N: i32>(a: int32x2_t, b: int32x2_t) -> int32x2_t {
 #[rustc_legacy_const_generics(2)]
 pub fn vsriq_n_s32<const N: i32>(a: int32x4_t, b: int32x4_t) -> int32x4_t {
     static_assert!(1 <= N && N <= 32);
-    vshiftins_v4i32(a, b, int32x4_t::splat(-N as i32))
+    vshiftins_v4i32(a, b, int32x4_t::splat(-N))
 }
 #[doc = "Shift Right and Insert (immediate)"]
 #[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vsri_n_s64)"]
@@ -73297,7 +72994,11 @@ pub fn vtbx4_p8(a: poly8x8_t, b: poly8x8x4_t, c: uint8x8_t) -> poly8x8_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[target_feature(enable = "neon,fp16")]
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
@@ -73315,7 +73016,11 @@ pub fn vtrn_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[target_feature(enable = "neon,fp16")]
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
@@ -73334,7 +73039,11 @@ pub fn vtrnq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73359,7 +73068,11 @@ pub fn vtrn_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73384,7 +73097,11 @@ pub fn vtrn_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73409,7 +73126,11 @@ pub fn vtrn_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73434,7 +73155,11 @@ pub fn vtrnq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73459,7 +73184,11 @@ pub fn vtrn_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73492,7 +73221,11 @@ pub fn vtrnq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73517,7 +73250,11 @@ pub fn vtrn_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73542,7 +73279,11 @@ pub fn vtrnq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73567,7 +73308,11 @@ pub fn vtrnq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73592,7 +73337,11 @@ pub fn vtrn_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73625,7 +73374,11 @@ pub fn vtrnq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73650,7 +73403,11 @@ pub fn vtrn_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73675,7 +73432,11 @@ pub fn vtrnq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73700,7 +73461,11 @@ pub fn vtrnq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73725,7 +73490,11 @@ pub fn vtrn_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73758,7 +73527,11 @@ pub fn vtrnq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -73783,7 +73556,11 @@ pub fn vtrn_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(trn)
+    assert_instr(trn1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(trn2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74349,7 +74126,11 @@ pub fn vusmmlaq_s32(a: int32x4_t, b: uint8x16_t, c: int8x16_t) -> int32x4_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[target_feature(enable = "neon,fp16")]
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
@@ -74367,7 +74148,11 @@ pub fn vuzp_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[target_feature(enable = "neon,fp16")]
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
@@ -74386,7 +74171,11 @@ pub fn vuzpq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74411,7 +74200,11 @@ pub fn vuzp_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74436,7 +74229,11 @@ pub fn vuzp_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74461,7 +74258,11 @@ pub fn vuzp_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74486,7 +74287,11 @@ pub fn vuzpq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74511,7 +74316,11 @@ pub fn vuzp_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74544,7 +74353,11 @@ pub fn vuzpq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74569,7 +74382,11 @@ pub fn vuzp_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74594,7 +74411,11 @@ pub fn vuzpq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74619,7 +74440,11 @@ pub fn vuzpq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74644,7 +74469,11 @@ pub fn vuzp_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74677,7 +74506,11 @@ pub fn vuzpq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74702,7 +74535,11 @@ pub fn vuzp_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74727,7 +74564,11 @@ pub fn vuzpq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74752,7 +74593,11 @@ pub fn vuzpq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74777,7 +74622,11 @@ pub fn vuzp_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74810,7 +74659,11 @@ pub fn vuzpq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74835,7 +74688,11 @@ pub fn vuzp_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vuzp))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(uzp)
+    assert_instr(uzp1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(uzp2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74859,7 +74716,11 @@ pub fn vuzpq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[target_feature(enable = "neon,fp16")]
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
@@ -74877,7 +74738,11 @@ pub fn vzip_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr("vzip.16"))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[target_feature(enable = "neon,fp16")]
 #[unstable(feature = "stdarch_neon_f16", issue = "136306")]
@@ -74896,7 +74761,11 @@ pub fn vzipq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74921,7 +74790,11 @@ pub fn vzip_f32(a: float32x2_t, b: float32x2_t) -> float32x2x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74946,7 +74819,11 @@ pub fn vzip_s32(a: int32x2_t, b: int32x2_t) -> int32x2x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vtrn))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74971,7 +74848,11 @@ pub fn vzip_u32(a: uint32x2_t, b: uint32x2_t) -> uint32x2x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -74996,7 +74877,11 @@ pub fn vzip_s8(a: int8x8_t, b: int8x8_t) -> int8x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75021,7 +74906,11 @@ pub fn vzip_s16(a: int16x4_t, b: int16x4_t) -> int16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75046,7 +74935,11 @@ pub fn vzip_u8(a: uint8x8_t, b: uint8x8_t) -> uint8x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75071,7 +74964,11 @@ pub fn vzip_u16(a: uint16x4_t, b: uint16x4_t) -> uint16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75096,7 +74993,11 @@ pub fn vzip_p8(a: poly8x8_t, b: poly8x8_t) -> poly8x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75121,7 +75022,11 @@ pub fn vzip_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75146,7 +75051,11 @@ pub fn vzipq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75179,7 +75088,11 @@ pub fn vzipq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75204,7 +75117,11 @@ pub fn vzipq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75229,7 +75146,11 @@ pub fn vzipq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75262,7 +75183,11 @@ pub fn vzipq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75287,7 +75212,11 @@ pub fn vzipq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75312,7 +75241,11 @@ pub fn vzipq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
@@ -75345,7 +75278,11 @@ pub fn vzipq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
 #[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
 #[cfg_attr(
     all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
-    assert_instr(zip)
+    assert_instr(zip1)
+)]
+#[cfg_attr(
+    all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
+    assert_instr(zip2)
 )]
 #[cfg_attr(
     not(target_arch = "arm"),
diff --git a/library/stdarch/crates/core_arch/src/core_arch_docs.md b/library/stdarch/crates/core_arch/src/core_arch_docs.md
index bfa1b722886..6aea2b46184 100644
--- a/library/stdarch/crates/core_arch/src/core_arch_docs.md
+++ b/library/stdarch/crates/core_arch/src/core_arch_docs.md
@@ -193,6 +193,7 @@ others at:
 * [`powerpc64`]
 * [`nvptx`]
 * [`wasm32`]
+* [`loongarch32`]
 * [`loongarch64`]
 * [`s390x`]
 
@@ -208,6 +209,7 @@ others at:
 [`powerpc64`]: ../../core/arch/powerpc64/index.html
 [`nvptx`]: ../../core/arch/nvptx/index.html
 [`wasm32`]: ../../core/arch/wasm32/index.html
+[`loongarch32`]: ../../core/arch/loongarch32/index.html
 [`loongarch64`]: ../../core/arch/loongarch64/index.html
 [`s390x`]: ../../core/arch/s390x/index.html
 
diff --git a/library/stdarch/crates/core_arch/src/loongarch32/mod.rs b/library/stdarch/crates/core_arch/src/loongarch32/mod.rs
new file mode 100644
index 00000000000..fb05450373c
--- /dev/null
+++ b/library/stdarch/crates/core_arch/src/loongarch32/mod.rs
@@ -0,0 +1,47 @@
+//! `LoongArch32` intrinsics
+
+use crate::arch::asm;
+
+#[allow(improper_ctypes)]
+unsafe extern "unadjusted" {
+    #[link_name = "llvm.loongarch.cacop.w"]
+    fn __cacop(a: i32, b: i32, c: i32);
+    #[link_name = "llvm.loongarch.csrrd.w"]
+    fn __csrrd(a: i32) -> i32;
+    #[link_name = "llvm.loongarch.csrwr.w"]
+    fn __csrwr(a: i32, b: i32) -> i32;
+    #[link_name = "llvm.loongarch.csrxchg.w"]
+    fn __csrxchg(a: i32, b: i32, c: i32) -> i32;
+}
+
+/// Generates the cache operation instruction
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn cacop<const IMM12: i32>(a: i32, b: i32) {
+    static_assert_simm_bits!(IMM12, 12);
+    __cacop(a, b, IMM12);
+}
+
+/// Reads the CSR
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn csrrd<const IMM14: i32>() -> i32 {
+    static_assert_uimm_bits!(IMM14, 14);
+    __csrrd(IMM14)
+}
+
+/// Writes the CSR
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn csrwr<const IMM14: i32>(a: i32) -> i32 {
+    static_assert_uimm_bits!(IMM14, 14);
+    __csrwr(a, IMM14)
+}
+
+/// Exchanges the CSR
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn csrxchg<const IMM14: i32>(a: i32, b: i32) -> i32 {
+    static_assert_uimm_bits!(IMM14, 14);
+    __csrxchg(a, b, IMM14)
+}
diff --git a/library/stdarch/crates/core_arch/src/loongarch64/lasx/generated.rs b/library/stdarch/crates/core_arch/src/loongarch64/lasx/generated.rs
index 2e56d8fb9b8..4361acdc1fc 100644
--- a/library/stdarch/crates/core_arch/src/loongarch64/lasx/generated.rs
+++ b/library/stdarch/crates/core_arch/src/loongarch64/lasx/generated.rs
@@ -1495,3501 +1495,3501 @@ unsafe extern "unadjusted" {
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsll_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvsll_b(a, b)
+pub fn lasx_xvsll_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvsll_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsll_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvsll_h(a, b)
+pub fn lasx_xvsll_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvsll_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsll_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvsll_w(a, b)
+pub fn lasx_xvsll_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvsll_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsll_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsll_d(a, b)
+pub fn lasx_xvsll_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsll_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslli_b<const IMM3: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvslli_b<const IMM3: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvslli_b(a, IMM3)
+    unsafe { __lasx_xvslli_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslli_h<const IMM4: u32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvslli_h<const IMM4: u32>(a: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvslli_h(a, IMM4)
+    unsafe { __lasx_xvslli_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslli_w<const IMM5: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvslli_w<const IMM5: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvslli_w(a, IMM5)
+    unsafe { __lasx_xvslli_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslli_d<const IMM6: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvslli_d<const IMM6: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvslli_d(a, IMM6)
+    unsafe { __lasx_xvslli_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsra_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvsra_b(a, b)
+pub fn lasx_xvsra_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvsra_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsra_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvsra_h(a, b)
+pub fn lasx_xvsra_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvsra_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsra_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvsra_w(a, b)
+pub fn lasx_xvsra_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvsra_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsra_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsra_d(a, b)
+pub fn lasx_xvsra_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsra_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrai_b<const IMM3: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvsrai_b<const IMM3: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvsrai_b(a, IMM3)
+    unsafe { __lasx_xvsrai_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrai_h<const IMM4: u32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvsrai_h<const IMM4: u32>(a: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsrai_h(a, IMM4)
+    unsafe { __lasx_xvsrai_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrai_w<const IMM5: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvsrai_w<const IMM5: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsrai_w(a, IMM5)
+    unsafe { __lasx_xvsrai_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrai_d<const IMM6: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvsrai_d<const IMM6: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvsrai_d(a, IMM6)
+    unsafe { __lasx_xvsrai_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrar_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvsrar_b(a, b)
+pub fn lasx_xvsrar_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvsrar_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrar_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvsrar_h(a, b)
+pub fn lasx_xvsrar_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvsrar_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrar_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvsrar_w(a, b)
+pub fn lasx_xvsrar_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvsrar_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrar_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsrar_d(a, b)
+pub fn lasx_xvsrar_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsrar_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrari_b<const IMM3: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvsrari_b<const IMM3: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvsrari_b(a, IMM3)
+    unsafe { __lasx_xvsrari_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrari_h<const IMM4: u32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvsrari_h<const IMM4: u32>(a: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsrari_h(a, IMM4)
+    unsafe { __lasx_xvsrari_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrari_w<const IMM5: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvsrari_w<const IMM5: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsrari_w(a, IMM5)
+    unsafe { __lasx_xvsrari_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrari_d<const IMM6: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvsrari_d<const IMM6: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvsrari_d(a, IMM6)
+    unsafe { __lasx_xvsrari_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrl_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvsrl_b(a, b)
+pub fn lasx_xvsrl_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvsrl_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrl_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvsrl_h(a, b)
+pub fn lasx_xvsrl_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvsrl_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrl_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvsrl_w(a, b)
+pub fn lasx_xvsrl_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvsrl_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrl_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsrl_d(a, b)
+pub fn lasx_xvsrl_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsrl_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrli_b<const IMM3: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvsrli_b<const IMM3: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvsrli_b(a, IMM3)
+    unsafe { __lasx_xvsrli_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrli_h<const IMM4: u32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvsrli_h<const IMM4: u32>(a: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsrli_h(a, IMM4)
+    unsafe { __lasx_xvsrli_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrli_w<const IMM5: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvsrli_w<const IMM5: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsrli_w(a, IMM5)
+    unsafe { __lasx_xvsrli_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrli_d<const IMM6: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvsrli_d<const IMM6: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvsrli_d(a, IMM6)
+    unsafe { __lasx_xvsrli_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlr_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvsrlr_b(a, b)
+pub fn lasx_xvsrlr_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvsrlr_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlr_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvsrlr_h(a, b)
+pub fn lasx_xvsrlr_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvsrlr_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlr_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvsrlr_w(a, b)
+pub fn lasx_xvsrlr_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvsrlr_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlr_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsrlr_d(a, b)
+pub fn lasx_xvsrlr_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsrlr_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlri_b<const IMM3: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvsrlri_b<const IMM3: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvsrlri_b(a, IMM3)
+    unsafe { __lasx_xvsrlri_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlri_h<const IMM4: u32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvsrlri_h<const IMM4: u32>(a: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsrlri_h(a, IMM4)
+    unsafe { __lasx_xvsrlri_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlri_w<const IMM5: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvsrlri_w<const IMM5: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsrlri_w(a, IMM5)
+    unsafe { __lasx_xvsrlri_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlri_d<const IMM6: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvsrlri_d<const IMM6: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvsrlri_d(a, IMM6)
+    unsafe { __lasx_xvsrlri_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitclr_b(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvbitclr_b(a, b)
+pub fn lasx_xvbitclr_b(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvbitclr_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitclr_h(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvbitclr_h(a, b)
+pub fn lasx_xvbitclr_h(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvbitclr_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitclr_w(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvbitclr_w(a, b)
+pub fn lasx_xvbitclr_w(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvbitclr_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitclr_d(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvbitclr_d(a, b)
+pub fn lasx_xvbitclr_d(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvbitclr_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitclri_b<const IMM3: u32>(a: v32u8) -> v32u8 {
+pub fn lasx_xvbitclri_b<const IMM3: u32>(a: v32u8) -> v32u8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvbitclri_b(a, IMM3)
+    unsafe { __lasx_xvbitclri_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitclri_h<const IMM4: u32>(a: v16u16) -> v16u16 {
+pub fn lasx_xvbitclri_h<const IMM4: u32>(a: v16u16) -> v16u16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvbitclri_h(a, IMM4)
+    unsafe { __lasx_xvbitclri_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitclri_w<const IMM5: u32>(a: v8u32) -> v8u32 {
+pub fn lasx_xvbitclri_w<const IMM5: u32>(a: v8u32) -> v8u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvbitclri_w(a, IMM5)
+    unsafe { __lasx_xvbitclri_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitclri_d<const IMM6: u32>(a: v4u64) -> v4u64 {
+pub fn lasx_xvbitclri_d<const IMM6: u32>(a: v4u64) -> v4u64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvbitclri_d(a, IMM6)
+    unsafe { __lasx_xvbitclri_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitset_b(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvbitset_b(a, b)
+pub fn lasx_xvbitset_b(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvbitset_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitset_h(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvbitset_h(a, b)
+pub fn lasx_xvbitset_h(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvbitset_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitset_w(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvbitset_w(a, b)
+pub fn lasx_xvbitset_w(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvbitset_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitset_d(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvbitset_d(a, b)
+pub fn lasx_xvbitset_d(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvbitset_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitseti_b<const IMM3: u32>(a: v32u8) -> v32u8 {
+pub fn lasx_xvbitseti_b<const IMM3: u32>(a: v32u8) -> v32u8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvbitseti_b(a, IMM3)
+    unsafe { __lasx_xvbitseti_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitseti_h<const IMM4: u32>(a: v16u16) -> v16u16 {
+pub fn lasx_xvbitseti_h<const IMM4: u32>(a: v16u16) -> v16u16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvbitseti_h(a, IMM4)
+    unsafe { __lasx_xvbitseti_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitseti_w<const IMM5: u32>(a: v8u32) -> v8u32 {
+pub fn lasx_xvbitseti_w<const IMM5: u32>(a: v8u32) -> v8u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvbitseti_w(a, IMM5)
+    unsafe { __lasx_xvbitseti_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitseti_d<const IMM6: u32>(a: v4u64) -> v4u64 {
+pub fn lasx_xvbitseti_d<const IMM6: u32>(a: v4u64) -> v4u64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvbitseti_d(a, IMM6)
+    unsafe { __lasx_xvbitseti_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitrev_b(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvbitrev_b(a, b)
+pub fn lasx_xvbitrev_b(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvbitrev_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitrev_h(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvbitrev_h(a, b)
+pub fn lasx_xvbitrev_h(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvbitrev_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitrev_w(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvbitrev_w(a, b)
+pub fn lasx_xvbitrev_w(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvbitrev_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitrev_d(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvbitrev_d(a, b)
+pub fn lasx_xvbitrev_d(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvbitrev_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitrevi_b<const IMM3: u32>(a: v32u8) -> v32u8 {
+pub fn lasx_xvbitrevi_b<const IMM3: u32>(a: v32u8) -> v32u8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvbitrevi_b(a, IMM3)
+    unsafe { __lasx_xvbitrevi_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitrevi_h<const IMM4: u32>(a: v16u16) -> v16u16 {
+pub fn lasx_xvbitrevi_h<const IMM4: u32>(a: v16u16) -> v16u16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvbitrevi_h(a, IMM4)
+    unsafe { __lasx_xvbitrevi_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitrevi_w<const IMM5: u32>(a: v8u32) -> v8u32 {
+pub fn lasx_xvbitrevi_w<const IMM5: u32>(a: v8u32) -> v8u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvbitrevi_w(a, IMM5)
+    unsafe { __lasx_xvbitrevi_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitrevi_d<const IMM6: u32>(a: v4u64) -> v4u64 {
+pub fn lasx_xvbitrevi_d<const IMM6: u32>(a: v4u64) -> v4u64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvbitrevi_d(a, IMM6)
+    unsafe { __lasx_xvbitrevi_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvadd_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvadd_b(a, b)
+pub fn lasx_xvadd_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvadd_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvadd_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvadd_h(a, b)
+pub fn lasx_xvadd_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvadd_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvadd_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvadd_w(a, b)
+pub fn lasx_xvadd_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvadd_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvadd_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvadd_d(a, b)
+pub fn lasx_xvadd_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvadd_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddi_bu<const IMM5: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvaddi_bu<const IMM5: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvaddi_bu(a, IMM5)
+    unsafe { __lasx_xvaddi_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddi_hu<const IMM5: u32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvaddi_hu<const IMM5: u32>(a: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvaddi_hu(a, IMM5)
+    unsafe { __lasx_xvaddi_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddi_wu<const IMM5: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvaddi_wu<const IMM5: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvaddi_wu(a, IMM5)
+    unsafe { __lasx_xvaddi_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddi_du<const IMM5: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvaddi_du<const IMM5: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvaddi_du(a, IMM5)
+    unsafe { __lasx_xvaddi_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsub_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvsub_b(a, b)
+pub fn lasx_xvsub_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvsub_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsub_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvsub_h(a, b)
+pub fn lasx_xvsub_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvsub_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsub_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvsub_w(a, b)
+pub fn lasx_xvsub_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvsub_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsub_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsub_d(a, b)
+pub fn lasx_xvsub_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsub_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubi_bu<const IMM5: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvsubi_bu<const IMM5: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsubi_bu(a, IMM5)
+    unsafe { __lasx_xvsubi_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubi_hu<const IMM5: u32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvsubi_hu<const IMM5: u32>(a: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsubi_hu(a, IMM5)
+    unsafe { __lasx_xvsubi_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubi_wu<const IMM5: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvsubi_wu<const IMM5: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsubi_wu(a, IMM5)
+    unsafe { __lasx_xvsubi_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubi_du<const IMM5: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvsubi_du<const IMM5: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsubi_du(a, IMM5)
+    unsafe { __lasx_xvsubi_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmax_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvmax_b(a, b)
+pub fn lasx_xvmax_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvmax_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmax_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvmax_h(a, b)
+pub fn lasx_xvmax_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvmax_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmax_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvmax_w(a, b)
+pub fn lasx_xvmax_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvmax_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmax_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvmax_d(a, b)
+pub fn lasx_xvmax_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmax_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaxi_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvmaxi_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvmaxi_b(a, IMM_S5)
+    unsafe { __lasx_xvmaxi_b(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaxi_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvmaxi_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvmaxi_h(a, IMM_S5)
+    unsafe { __lasx_xvmaxi_h(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaxi_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvmaxi_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvmaxi_w(a, IMM_S5)
+    unsafe { __lasx_xvmaxi_w(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaxi_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvmaxi_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvmaxi_d(a, IMM_S5)
+    unsafe { __lasx_xvmaxi_d(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmax_bu(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvmax_bu(a, b)
+pub fn lasx_xvmax_bu(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvmax_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmax_hu(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvmax_hu(a, b)
+pub fn lasx_xvmax_hu(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvmax_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmax_wu(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvmax_wu(a, b)
+pub fn lasx_xvmax_wu(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvmax_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmax_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvmax_du(a, b)
+pub fn lasx_xvmax_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvmax_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaxi_bu<const IMM5: u32>(a: v32u8) -> v32u8 {
+pub fn lasx_xvmaxi_bu<const IMM5: u32>(a: v32u8) -> v32u8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvmaxi_bu(a, IMM5)
+    unsafe { __lasx_xvmaxi_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaxi_hu<const IMM5: u32>(a: v16u16) -> v16u16 {
+pub fn lasx_xvmaxi_hu<const IMM5: u32>(a: v16u16) -> v16u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvmaxi_hu(a, IMM5)
+    unsafe { __lasx_xvmaxi_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaxi_wu<const IMM5: u32>(a: v8u32) -> v8u32 {
+pub fn lasx_xvmaxi_wu<const IMM5: u32>(a: v8u32) -> v8u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvmaxi_wu(a, IMM5)
+    unsafe { __lasx_xvmaxi_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaxi_du<const IMM5: u32>(a: v4u64) -> v4u64 {
+pub fn lasx_xvmaxi_du<const IMM5: u32>(a: v4u64) -> v4u64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvmaxi_du(a, IMM5)
+    unsafe { __lasx_xvmaxi_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmin_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvmin_b(a, b)
+pub fn lasx_xvmin_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvmin_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmin_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvmin_h(a, b)
+pub fn lasx_xvmin_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvmin_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmin_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvmin_w(a, b)
+pub fn lasx_xvmin_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvmin_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmin_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvmin_d(a, b)
+pub fn lasx_xvmin_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmin_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmini_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvmini_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvmini_b(a, IMM_S5)
+    unsafe { __lasx_xvmini_b(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmini_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvmini_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvmini_h(a, IMM_S5)
+    unsafe { __lasx_xvmini_h(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmini_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvmini_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvmini_w(a, IMM_S5)
+    unsafe { __lasx_xvmini_w(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmini_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvmini_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvmini_d(a, IMM_S5)
+    unsafe { __lasx_xvmini_d(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmin_bu(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvmin_bu(a, b)
+pub fn lasx_xvmin_bu(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvmin_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmin_hu(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvmin_hu(a, b)
+pub fn lasx_xvmin_hu(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvmin_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmin_wu(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvmin_wu(a, b)
+pub fn lasx_xvmin_wu(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvmin_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmin_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvmin_du(a, b)
+pub fn lasx_xvmin_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvmin_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmini_bu<const IMM5: u32>(a: v32u8) -> v32u8 {
+pub fn lasx_xvmini_bu<const IMM5: u32>(a: v32u8) -> v32u8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvmini_bu(a, IMM5)
+    unsafe { __lasx_xvmini_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmini_hu<const IMM5: u32>(a: v16u16) -> v16u16 {
+pub fn lasx_xvmini_hu<const IMM5: u32>(a: v16u16) -> v16u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvmini_hu(a, IMM5)
+    unsafe { __lasx_xvmini_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmini_wu<const IMM5: u32>(a: v8u32) -> v8u32 {
+pub fn lasx_xvmini_wu<const IMM5: u32>(a: v8u32) -> v8u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvmini_wu(a, IMM5)
+    unsafe { __lasx_xvmini_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmini_du<const IMM5: u32>(a: v4u64) -> v4u64 {
+pub fn lasx_xvmini_du<const IMM5: u32>(a: v4u64) -> v4u64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvmini_du(a, IMM5)
+    unsafe { __lasx_xvmini_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvseq_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvseq_b(a, b)
+pub fn lasx_xvseq_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvseq_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvseq_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvseq_h(a, b)
+pub fn lasx_xvseq_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvseq_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvseq_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvseq_w(a, b)
+pub fn lasx_xvseq_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvseq_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvseq_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvseq_d(a, b)
+pub fn lasx_xvseq_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvseq_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvseqi_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvseqi_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvseqi_b(a, IMM_S5)
+    unsafe { __lasx_xvseqi_b(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvseqi_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvseqi_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvseqi_h(a, IMM_S5)
+    unsafe { __lasx_xvseqi_h(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvseqi_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvseqi_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvseqi_w(a, IMM_S5)
+    unsafe { __lasx_xvseqi_w(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvseqi_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvseqi_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvseqi_d(a, IMM_S5)
+    unsafe { __lasx_xvseqi_d(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslt_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvslt_b(a, b)
+pub fn lasx_xvslt_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvslt_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslt_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvslt_h(a, b)
+pub fn lasx_xvslt_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvslt_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslt_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvslt_w(a, b)
+pub fn lasx_xvslt_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvslt_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslt_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvslt_d(a, b)
+pub fn lasx_xvslt_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvslt_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslti_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvslti_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvslti_b(a, IMM_S5)
+    unsafe { __lasx_xvslti_b(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslti_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvslti_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvslti_h(a, IMM_S5)
+    unsafe { __lasx_xvslti_h(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslti_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvslti_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvslti_w(a, IMM_S5)
+    unsafe { __lasx_xvslti_w(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslti_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvslti_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvslti_d(a, IMM_S5)
+    unsafe { __lasx_xvslti_d(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslt_bu(a: v32u8, b: v32u8) -> v32i8 {
-    __lasx_xvslt_bu(a, b)
+pub fn lasx_xvslt_bu(a: v32u8, b: v32u8) -> v32i8 {
+    unsafe { __lasx_xvslt_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslt_hu(a: v16u16, b: v16u16) -> v16i16 {
-    __lasx_xvslt_hu(a, b)
+pub fn lasx_xvslt_hu(a: v16u16, b: v16u16) -> v16i16 {
+    unsafe { __lasx_xvslt_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslt_wu(a: v8u32, b: v8u32) -> v8i32 {
-    __lasx_xvslt_wu(a, b)
+pub fn lasx_xvslt_wu(a: v8u32, b: v8u32) -> v8i32 {
+    unsafe { __lasx_xvslt_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslt_du(a: v4u64, b: v4u64) -> v4i64 {
-    __lasx_xvslt_du(a, b)
+pub fn lasx_xvslt_du(a: v4u64, b: v4u64) -> v4i64 {
+    unsafe { __lasx_xvslt_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslti_bu<const IMM5: u32>(a: v32u8) -> v32i8 {
+pub fn lasx_xvslti_bu<const IMM5: u32>(a: v32u8) -> v32i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvslti_bu(a, IMM5)
+    unsafe { __lasx_xvslti_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslti_hu<const IMM5: u32>(a: v16u16) -> v16i16 {
+pub fn lasx_xvslti_hu<const IMM5: u32>(a: v16u16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvslti_hu(a, IMM5)
+    unsafe { __lasx_xvslti_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslti_wu<const IMM5: u32>(a: v8u32) -> v8i32 {
+pub fn lasx_xvslti_wu<const IMM5: u32>(a: v8u32) -> v8i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvslti_wu(a, IMM5)
+    unsafe { __lasx_xvslti_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslti_du<const IMM5: u32>(a: v4u64) -> v4i64 {
+pub fn lasx_xvslti_du<const IMM5: u32>(a: v4u64) -> v4i64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvslti_du(a, IMM5)
+    unsafe { __lasx_xvslti_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsle_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvsle_b(a, b)
+pub fn lasx_xvsle_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvsle_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsle_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvsle_h(a, b)
+pub fn lasx_xvsle_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvsle_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsle_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvsle_w(a, b)
+pub fn lasx_xvsle_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvsle_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsle_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsle_d(a, b)
+pub fn lasx_xvsle_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsle_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslei_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvslei_b<const IMM_S5: i32>(a: v32i8) -> v32i8 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvslei_b(a, IMM_S5)
+    unsafe { __lasx_xvslei_b(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslei_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvslei_h<const IMM_S5: i32>(a: v16i16) -> v16i16 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvslei_h(a, IMM_S5)
+    unsafe { __lasx_xvslei_h(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslei_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvslei_w<const IMM_S5: i32>(a: v8i32) -> v8i32 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvslei_w(a, IMM_S5)
+    unsafe { __lasx_xvslei_w(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslei_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvslei_d<const IMM_S5: i32>(a: v4i64) -> v4i64 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lasx_xvslei_d(a, IMM_S5)
+    unsafe { __lasx_xvslei_d(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsle_bu(a: v32u8, b: v32u8) -> v32i8 {
-    __lasx_xvsle_bu(a, b)
+pub fn lasx_xvsle_bu(a: v32u8, b: v32u8) -> v32i8 {
+    unsafe { __lasx_xvsle_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsle_hu(a: v16u16, b: v16u16) -> v16i16 {
-    __lasx_xvsle_hu(a, b)
+pub fn lasx_xvsle_hu(a: v16u16, b: v16u16) -> v16i16 {
+    unsafe { __lasx_xvsle_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsle_wu(a: v8u32, b: v8u32) -> v8i32 {
-    __lasx_xvsle_wu(a, b)
+pub fn lasx_xvsle_wu(a: v8u32, b: v8u32) -> v8i32 {
+    unsafe { __lasx_xvsle_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsle_du(a: v4u64, b: v4u64) -> v4i64 {
-    __lasx_xvsle_du(a, b)
+pub fn lasx_xvsle_du(a: v4u64, b: v4u64) -> v4i64 {
+    unsafe { __lasx_xvsle_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslei_bu<const IMM5: u32>(a: v32u8) -> v32i8 {
+pub fn lasx_xvslei_bu<const IMM5: u32>(a: v32u8) -> v32i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvslei_bu(a, IMM5)
+    unsafe { __lasx_xvslei_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslei_hu<const IMM5: u32>(a: v16u16) -> v16i16 {
+pub fn lasx_xvslei_hu<const IMM5: u32>(a: v16u16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvslei_hu(a, IMM5)
+    unsafe { __lasx_xvslei_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslei_wu<const IMM5: u32>(a: v8u32) -> v8i32 {
+pub fn lasx_xvslei_wu<const IMM5: u32>(a: v8u32) -> v8i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvslei_wu(a, IMM5)
+    unsafe { __lasx_xvslei_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvslei_du<const IMM5: u32>(a: v4u64) -> v4i64 {
+pub fn lasx_xvslei_du<const IMM5: u32>(a: v4u64) -> v4i64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvslei_du(a, IMM5)
+    unsafe { __lasx_xvslei_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsat_b<const IMM3: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvsat_b<const IMM3: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvsat_b(a, IMM3)
+    unsafe { __lasx_xvsat_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsat_h<const IMM4: u32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvsat_h<const IMM4: u32>(a: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsat_h(a, IMM4)
+    unsafe { __lasx_xvsat_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsat_w<const IMM5: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvsat_w<const IMM5: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsat_w(a, IMM5)
+    unsafe { __lasx_xvsat_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsat_d<const IMM6: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvsat_d<const IMM6: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvsat_d(a, IMM6)
+    unsafe { __lasx_xvsat_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsat_bu<const IMM3: u32>(a: v32u8) -> v32u8 {
+pub fn lasx_xvsat_bu<const IMM3: u32>(a: v32u8) -> v32u8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvsat_bu(a, IMM3)
+    unsafe { __lasx_xvsat_bu(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsat_hu<const IMM4: u32>(a: v16u16) -> v16u16 {
+pub fn lasx_xvsat_hu<const IMM4: u32>(a: v16u16) -> v16u16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsat_hu(a, IMM4)
+    unsafe { __lasx_xvsat_hu(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsat_wu<const IMM5: u32>(a: v8u32) -> v8u32 {
+pub fn lasx_xvsat_wu<const IMM5: u32>(a: v8u32) -> v8u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsat_wu(a, IMM5)
+    unsafe { __lasx_xvsat_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsat_du<const IMM6: u32>(a: v4u64) -> v4u64 {
+pub fn lasx_xvsat_du<const IMM6: u32>(a: v4u64) -> v4u64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvsat_du(a, IMM6)
+    unsafe { __lasx_xvsat_du(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvadda_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvadda_b(a, b)
+pub fn lasx_xvadda_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvadda_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvadda_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvadda_h(a, b)
+pub fn lasx_xvadda_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvadda_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvadda_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvadda_w(a, b)
+pub fn lasx_xvadda_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvadda_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvadda_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvadda_d(a, b)
+pub fn lasx_xvadda_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvadda_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsadd_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvsadd_b(a, b)
+pub fn lasx_xvsadd_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvsadd_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsadd_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvsadd_h(a, b)
+pub fn lasx_xvsadd_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvsadd_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsadd_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvsadd_w(a, b)
+pub fn lasx_xvsadd_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvsadd_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsadd_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsadd_d(a, b)
+pub fn lasx_xvsadd_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsadd_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsadd_bu(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvsadd_bu(a, b)
+pub fn lasx_xvsadd_bu(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvsadd_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsadd_hu(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvsadd_hu(a, b)
+pub fn lasx_xvsadd_hu(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvsadd_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsadd_wu(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvsadd_wu(a, b)
+pub fn lasx_xvsadd_wu(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvsadd_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsadd_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvsadd_du(a, b)
+pub fn lasx_xvsadd_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvsadd_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavg_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvavg_b(a, b)
+pub fn lasx_xvavg_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvavg_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavg_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvavg_h(a, b)
+pub fn lasx_xvavg_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvavg_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavg_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvavg_w(a, b)
+pub fn lasx_xvavg_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvavg_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavg_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvavg_d(a, b)
+pub fn lasx_xvavg_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvavg_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavg_bu(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvavg_bu(a, b)
+pub fn lasx_xvavg_bu(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvavg_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavg_hu(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvavg_hu(a, b)
+pub fn lasx_xvavg_hu(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvavg_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavg_wu(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvavg_wu(a, b)
+pub fn lasx_xvavg_wu(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvavg_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavg_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvavg_du(a, b)
+pub fn lasx_xvavg_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvavg_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavgr_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvavgr_b(a, b)
+pub fn lasx_xvavgr_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvavgr_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavgr_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvavgr_h(a, b)
+pub fn lasx_xvavgr_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvavgr_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavgr_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvavgr_w(a, b)
+pub fn lasx_xvavgr_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvavgr_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavgr_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvavgr_d(a, b)
+pub fn lasx_xvavgr_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvavgr_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavgr_bu(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvavgr_bu(a, b)
+pub fn lasx_xvavgr_bu(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvavgr_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavgr_hu(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvavgr_hu(a, b)
+pub fn lasx_xvavgr_hu(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvavgr_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavgr_wu(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvavgr_wu(a, b)
+pub fn lasx_xvavgr_wu(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvavgr_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvavgr_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvavgr_du(a, b)
+pub fn lasx_xvavgr_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvavgr_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssub_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvssub_b(a, b)
+pub fn lasx_xvssub_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvssub_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssub_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvssub_h(a, b)
+pub fn lasx_xvssub_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvssub_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssub_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvssub_w(a, b)
+pub fn lasx_xvssub_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvssub_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssub_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvssub_d(a, b)
+pub fn lasx_xvssub_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvssub_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssub_bu(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvssub_bu(a, b)
+pub fn lasx_xvssub_bu(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvssub_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssub_hu(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvssub_hu(a, b)
+pub fn lasx_xvssub_hu(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvssub_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssub_wu(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvssub_wu(a, b)
+pub fn lasx_xvssub_wu(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvssub_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssub_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvssub_du(a, b)
+pub fn lasx_xvssub_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvssub_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvabsd_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvabsd_b(a, b)
+pub fn lasx_xvabsd_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvabsd_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvabsd_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvabsd_h(a, b)
+pub fn lasx_xvabsd_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvabsd_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvabsd_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvabsd_w(a, b)
+pub fn lasx_xvabsd_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvabsd_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvabsd_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvabsd_d(a, b)
+pub fn lasx_xvabsd_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvabsd_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvabsd_bu(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvabsd_bu(a, b)
+pub fn lasx_xvabsd_bu(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvabsd_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvabsd_hu(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvabsd_hu(a, b)
+pub fn lasx_xvabsd_hu(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvabsd_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvabsd_wu(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvabsd_wu(a, b)
+pub fn lasx_xvabsd_wu(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvabsd_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvabsd_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvabsd_du(a, b)
+pub fn lasx_xvabsd_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvabsd_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmul_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvmul_b(a, b)
+pub fn lasx_xvmul_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvmul_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmul_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvmul_h(a, b)
+pub fn lasx_xvmul_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvmul_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmul_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvmul_w(a, b)
+pub fn lasx_xvmul_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvmul_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmul_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvmul_d(a, b)
+pub fn lasx_xvmul_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmul_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmadd_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
-    __lasx_xvmadd_b(a, b, c)
+pub fn lasx_xvmadd_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
+    unsafe { __lasx_xvmadd_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmadd_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
-    __lasx_xvmadd_h(a, b, c)
+pub fn lasx_xvmadd_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
+    unsafe { __lasx_xvmadd_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmadd_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {
-    __lasx_xvmadd_w(a, b, c)
+pub fn lasx_xvmadd_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {
+    unsafe { __lasx_xvmadd_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmadd_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
-    __lasx_xvmadd_d(a, b, c)
+pub fn lasx_xvmadd_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmadd_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmsub_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
-    __lasx_xvmsub_b(a, b, c)
+pub fn lasx_xvmsub_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
+    unsafe { __lasx_xvmsub_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmsub_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
-    __lasx_xvmsub_h(a, b, c)
+pub fn lasx_xvmsub_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
+    unsafe { __lasx_xvmsub_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmsub_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {
-    __lasx_xvmsub_w(a, b, c)
+pub fn lasx_xvmsub_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {
+    unsafe { __lasx_xvmsub_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmsub_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
-    __lasx_xvmsub_d(a, b, c)
+pub fn lasx_xvmsub_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmsub_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvdiv_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvdiv_b(a, b)
+pub fn lasx_xvdiv_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvdiv_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvdiv_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvdiv_h(a, b)
+pub fn lasx_xvdiv_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvdiv_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvdiv_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvdiv_w(a, b)
+pub fn lasx_xvdiv_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvdiv_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvdiv_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvdiv_d(a, b)
+pub fn lasx_xvdiv_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvdiv_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvdiv_bu(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvdiv_bu(a, b)
+pub fn lasx_xvdiv_bu(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvdiv_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvdiv_hu(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvdiv_hu(a, b)
+pub fn lasx_xvdiv_hu(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvdiv_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvdiv_wu(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvdiv_wu(a, b)
+pub fn lasx_xvdiv_wu(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvdiv_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvdiv_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvdiv_du(a, b)
+pub fn lasx_xvdiv_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvdiv_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhaddw_h_b(a: v32i8, b: v32i8) -> v16i16 {
-    __lasx_xvhaddw_h_b(a, b)
+pub fn lasx_xvhaddw_h_b(a: v32i8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvhaddw_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhaddw_w_h(a: v16i16, b: v16i16) -> v8i32 {
-    __lasx_xvhaddw_w_h(a, b)
+pub fn lasx_xvhaddw_w_h(a: v16i16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvhaddw_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhaddw_d_w(a: v8i32, b: v8i32) -> v4i64 {
-    __lasx_xvhaddw_d_w(a, b)
+pub fn lasx_xvhaddw_d_w(a: v8i32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvhaddw_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhaddw_hu_bu(a: v32u8, b: v32u8) -> v16u16 {
-    __lasx_xvhaddw_hu_bu(a, b)
+pub fn lasx_xvhaddw_hu_bu(a: v32u8, b: v32u8) -> v16u16 {
+    unsafe { __lasx_xvhaddw_hu_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhaddw_wu_hu(a: v16u16, b: v16u16) -> v8u32 {
-    __lasx_xvhaddw_wu_hu(a, b)
+pub fn lasx_xvhaddw_wu_hu(a: v16u16, b: v16u16) -> v8u32 {
+    unsafe { __lasx_xvhaddw_wu_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhaddw_du_wu(a: v8u32, b: v8u32) -> v4u64 {
-    __lasx_xvhaddw_du_wu(a, b)
+pub fn lasx_xvhaddw_du_wu(a: v8u32, b: v8u32) -> v4u64 {
+    unsafe { __lasx_xvhaddw_du_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhsubw_h_b(a: v32i8, b: v32i8) -> v16i16 {
-    __lasx_xvhsubw_h_b(a, b)
+pub fn lasx_xvhsubw_h_b(a: v32i8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvhsubw_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhsubw_w_h(a: v16i16, b: v16i16) -> v8i32 {
-    __lasx_xvhsubw_w_h(a, b)
+pub fn lasx_xvhsubw_w_h(a: v16i16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvhsubw_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhsubw_d_w(a: v8i32, b: v8i32) -> v4i64 {
-    __lasx_xvhsubw_d_w(a, b)
+pub fn lasx_xvhsubw_d_w(a: v8i32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvhsubw_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhsubw_hu_bu(a: v32u8, b: v32u8) -> v16i16 {
-    __lasx_xvhsubw_hu_bu(a, b)
+pub fn lasx_xvhsubw_hu_bu(a: v32u8, b: v32u8) -> v16i16 {
+    unsafe { __lasx_xvhsubw_hu_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhsubw_wu_hu(a: v16u16, b: v16u16) -> v8i32 {
-    __lasx_xvhsubw_wu_hu(a, b)
+pub fn lasx_xvhsubw_wu_hu(a: v16u16, b: v16u16) -> v8i32 {
+    unsafe { __lasx_xvhsubw_wu_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhsubw_du_wu(a: v8u32, b: v8u32) -> v4i64 {
-    __lasx_xvhsubw_du_wu(a, b)
+pub fn lasx_xvhsubw_du_wu(a: v8u32, b: v8u32) -> v4i64 {
+    unsafe { __lasx_xvhsubw_du_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmod_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvmod_b(a, b)
+pub fn lasx_xvmod_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvmod_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmod_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvmod_h(a, b)
+pub fn lasx_xvmod_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvmod_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmod_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvmod_w(a, b)
+pub fn lasx_xvmod_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvmod_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmod_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvmod_d(a, b)
+pub fn lasx_xvmod_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmod_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmod_bu(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvmod_bu(a, b)
+pub fn lasx_xvmod_bu(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvmod_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmod_hu(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvmod_hu(a, b)
+pub fn lasx_xvmod_hu(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvmod_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmod_wu(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvmod_wu(a, b)
+pub fn lasx_xvmod_wu(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvmod_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmod_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvmod_du(a, b)
+pub fn lasx_xvmod_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvmod_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrepl128vei_b<const IMM4: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvrepl128vei_b<const IMM4: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvrepl128vei_b(a, IMM4)
+    unsafe { __lasx_xvrepl128vei_b(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrepl128vei_h<const IMM3: u32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvrepl128vei_h<const IMM3: u32>(a: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvrepl128vei_h(a, IMM3)
+    unsafe { __lasx_xvrepl128vei_h(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrepl128vei_w<const IMM2: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvrepl128vei_w<const IMM2: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM2, 2);
-    __lasx_xvrepl128vei_w(a, IMM2)
+    unsafe { __lasx_xvrepl128vei_w(a, IMM2) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrepl128vei_d<const IMM1: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvrepl128vei_d<const IMM1: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM1, 1);
-    __lasx_xvrepl128vei_d(a, IMM1)
+    unsafe { __lasx_xvrepl128vei_d(a, IMM1) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickev_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvpickev_b(a, b)
+pub fn lasx_xvpickev_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvpickev_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickev_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvpickev_h(a, b)
+pub fn lasx_xvpickev_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvpickev_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickev_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvpickev_w(a, b)
+pub fn lasx_xvpickev_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvpickev_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickev_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvpickev_d(a, b)
+pub fn lasx_xvpickev_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvpickev_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickod_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvpickod_b(a, b)
+pub fn lasx_xvpickod_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvpickod_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickod_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvpickod_h(a, b)
+pub fn lasx_xvpickod_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvpickod_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickod_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvpickod_w(a, b)
+pub fn lasx_xvpickod_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvpickod_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickod_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvpickod_d(a, b)
+pub fn lasx_xvpickod_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvpickod_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvilvh_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvilvh_b(a, b)
+pub fn lasx_xvilvh_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvilvh_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvilvh_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvilvh_h(a, b)
+pub fn lasx_xvilvh_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvilvh_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvilvh_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvilvh_w(a, b)
+pub fn lasx_xvilvh_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvilvh_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvilvh_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvilvh_d(a, b)
+pub fn lasx_xvilvh_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvilvh_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvilvl_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvilvl_b(a, b)
+pub fn lasx_xvilvl_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvilvl_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvilvl_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvilvl_h(a, b)
+pub fn lasx_xvilvl_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvilvl_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvilvl_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvilvl_w(a, b)
+pub fn lasx_xvilvl_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvilvl_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvilvl_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvilvl_d(a, b)
+pub fn lasx_xvilvl_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvilvl_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpackev_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvpackev_b(a, b)
+pub fn lasx_xvpackev_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvpackev_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpackev_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvpackev_h(a, b)
+pub fn lasx_xvpackev_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvpackev_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpackev_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvpackev_w(a, b)
+pub fn lasx_xvpackev_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvpackev_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpackev_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvpackev_d(a, b)
+pub fn lasx_xvpackev_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvpackev_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpackod_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvpackod_b(a, b)
+pub fn lasx_xvpackod_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvpackod_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpackod_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvpackod_h(a, b)
+pub fn lasx_xvpackod_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvpackod_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpackod_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvpackod_w(a, b)
+pub fn lasx_xvpackod_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvpackod_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpackod_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvpackod_d(a, b)
+pub fn lasx_xvpackod_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvpackod_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvshuf_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
-    __lasx_xvshuf_b(a, b, c)
+pub fn lasx_xvshuf_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
+    unsafe { __lasx_xvshuf_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvshuf_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
-    __lasx_xvshuf_h(a, b, c)
+pub fn lasx_xvshuf_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
+    unsafe { __lasx_xvshuf_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvshuf_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {
-    __lasx_xvshuf_w(a, b, c)
+pub fn lasx_xvshuf_w(a: v8i32, b: v8i32, c: v8i32) -> v8i32 {
+    unsafe { __lasx_xvshuf_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvshuf_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
-    __lasx_xvshuf_d(a, b, c)
+pub fn lasx_xvshuf_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
+    unsafe { __lasx_xvshuf_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvand_v(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvand_v(a, b)
+pub fn lasx_xvand_v(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvand_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvandi_b<const IMM8: u32>(a: v32u8) -> v32u8 {
+pub fn lasx_xvandi_b<const IMM8: u32>(a: v32u8) -> v32u8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvandi_b(a, IMM8)
+    unsafe { __lasx_xvandi_b(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvor_v(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvor_v(a, b)
+pub fn lasx_xvor_v(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvor_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvori_b<const IMM8: u32>(a: v32u8) -> v32u8 {
+pub fn lasx_xvori_b<const IMM8: u32>(a: v32u8) -> v32u8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvori_b(a, IMM8)
+    unsafe { __lasx_xvori_b(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvnor_v(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvnor_v(a, b)
+pub fn lasx_xvnor_v(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvnor_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvnori_b<const IMM8: u32>(a: v32u8) -> v32u8 {
+pub fn lasx_xvnori_b<const IMM8: u32>(a: v32u8) -> v32u8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvnori_b(a, IMM8)
+    unsafe { __lasx_xvnori_b(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvxor_v(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvxor_v(a, b)
+pub fn lasx_xvxor_v(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvxor_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvxori_b<const IMM8: u32>(a: v32u8) -> v32u8 {
+pub fn lasx_xvxori_b<const IMM8: u32>(a: v32u8) -> v32u8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvxori_b(a, IMM8)
+    unsafe { __lasx_xvxori_b(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitsel_v(a: v32u8, b: v32u8, c: v32u8) -> v32u8 {
-    __lasx_xvbitsel_v(a, b, c)
+pub fn lasx_xvbitsel_v(a: v32u8, b: v32u8, c: v32u8) -> v32u8 {
+    unsafe { __lasx_xvbitsel_v(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbitseli_b<const IMM8: u32>(a: v32u8, b: v32u8) -> v32u8 {
+pub fn lasx_xvbitseli_b<const IMM8: u32>(a: v32u8, b: v32u8) -> v32u8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvbitseli_b(a, b, IMM8)
+    unsafe { __lasx_xvbitseli_b(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvshuf4i_b<const IMM8: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvshuf4i_b<const IMM8: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvshuf4i_b(a, IMM8)
+    unsafe { __lasx_xvshuf4i_b(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvshuf4i_h<const IMM8: u32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvshuf4i_h<const IMM8: u32>(a: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvshuf4i_h(a, IMM8)
+    unsafe { __lasx_xvshuf4i_h(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvshuf4i_w<const IMM8: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvshuf4i_w<const IMM8: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvshuf4i_w(a, IMM8)
+    unsafe { __lasx_xvshuf4i_w(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplgr2vr_b(a: i32) -> v32i8 {
-    __lasx_xvreplgr2vr_b(a)
+pub fn lasx_xvreplgr2vr_b(a: i32) -> v32i8 {
+    unsafe { __lasx_xvreplgr2vr_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplgr2vr_h(a: i32) -> v16i16 {
-    __lasx_xvreplgr2vr_h(a)
+pub fn lasx_xvreplgr2vr_h(a: i32) -> v16i16 {
+    unsafe { __lasx_xvreplgr2vr_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplgr2vr_w(a: i32) -> v8i32 {
-    __lasx_xvreplgr2vr_w(a)
+pub fn lasx_xvreplgr2vr_w(a: i32) -> v8i32 {
+    unsafe { __lasx_xvreplgr2vr_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplgr2vr_d(a: i64) -> v4i64 {
-    __lasx_xvreplgr2vr_d(a)
+pub fn lasx_xvreplgr2vr_d(a: i64) -> v4i64 {
+    unsafe { __lasx_xvreplgr2vr_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpcnt_b(a: v32i8) -> v32i8 {
-    __lasx_xvpcnt_b(a)
+pub fn lasx_xvpcnt_b(a: v32i8) -> v32i8 {
+    unsafe { __lasx_xvpcnt_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpcnt_h(a: v16i16) -> v16i16 {
-    __lasx_xvpcnt_h(a)
+pub fn lasx_xvpcnt_h(a: v16i16) -> v16i16 {
+    unsafe { __lasx_xvpcnt_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpcnt_w(a: v8i32) -> v8i32 {
-    __lasx_xvpcnt_w(a)
+pub fn lasx_xvpcnt_w(a: v8i32) -> v8i32 {
+    unsafe { __lasx_xvpcnt_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpcnt_d(a: v4i64) -> v4i64 {
-    __lasx_xvpcnt_d(a)
+pub fn lasx_xvpcnt_d(a: v4i64) -> v4i64 {
+    unsafe { __lasx_xvpcnt_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvclo_b(a: v32i8) -> v32i8 {
-    __lasx_xvclo_b(a)
+pub fn lasx_xvclo_b(a: v32i8) -> v32i8 {
+    unsafe { __lasx_xvclo_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvclo_h(a: v16i16) -> v16i16 {
-    __lasx_xvclo_h(a)
+pub fn lasx_xvclo_h(a: v16i16) -> v16i16 {
+    unsafe { __lasx_xvclo_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvclo_w(a: v8i32) -> v8i32 {
-    __lasx_xvclo_w(a)
+pub fn lasx_xvclo_w(a: v8i32) -> v8i32 {
+    unsafe { __lasx_xvclo_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvclo_d(a: v4i64) -> v4i64 {
-    __lasx_xvclo_d(a)
+pub fn lasx_xvclo_d(a: v4i64) -> v4i64 {
+    unsafe { __lasx_xvclo_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvclz_b(a: v32i8) -> v32i8 {
-    __lasx_xvclz_b(a)
+pub fn lasx_xvclz_b(a: v32i8) -> v32i8 {
+    unsafe { __lasx_xvclz_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvclz_h(a: v16i16) -> v16i16 {
-    __lasx_xvclz_h(a)
+pub fn lasx_xvclz_h(a: v16i16) -> v16i16 {
+    unsafe { __lasx_xvclz_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvclz_w(a: v8i32) -> v8i32 {
-    __lasx_xvclz_w(a)
+pub fn lasx_xvclz_w(a: v8i32) -> v8i32 {
+    unsafe { __lasx_xvclz_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvclz_d(a: v4i64) -> v4i64 {
-    __lasx_xvclz_d(a)
+pub fn lasx_xvclz_d(a: v4i64) -> v4i64 {
+    unsafe { __lasx_xvclz_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfadd_s(a: v8f32, b: v8f32) -> v8f32 {
-    __lasx_xvfadd_s(a, b)
+pub fn lasx_xvfadd_s(a: v8f32, b: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfadd_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfadd_d(a: v4f64, b: v4f64) -> v4f64 {
-    __lasx_xvfadd_d(a, b)
+pub fn lasx_xvfadd_d(a: v4f64, b: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfadd_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfsub_s(a: v8f32, b: v8f32) -> v8f32 {
-    __lasx_xvfsub_s(a, b)
+pub fn lasx_xvfsub_s(a: v8f32, b: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfsub_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfsub_d(a: v4f64, b: v4f64) -> v4f64 {
-    __lasx_xvfsub_d(a, b)
+pub fn lasx_xvfsub_d(a: v4f64, b: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfsub_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmul_s(a: v8f32, b: v8f32) -> v8f32 {
-    __lasx_xvfmul_s(a, b)
+pub fn lasx_xvfmul_s(a: v8f32, b: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfmul_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmul_d(a: v4f64, b: v4f64) -> v4f64 {
-    __lasx_xvfmul_d(a, b)
+pub fn lasx_xvfmul_d(a: v4f64, b: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfmul_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfdiv_s(a: v8f32, b: v8f32) -> v8f32 {
-    __lasx_xvfdiv_s(a, b)
+pub fn lasx_xvfdiv_s(a: v8f32, b: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfdiv_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfdiv_d(a: v4f64, b: v4f64) -> v4f64 {
-    __lasx_xvfdiv_d(a, b)
+pub fn lasx_xvfdiv_d(a: v4f64, b: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfdiv_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcvt_h_s(a: v8f32, b: v8f32) -> v16i16 {
-    __lasx_xvfcvt_h_s(a, b)
+pub fn lasx_xvfcvt_h_s(a: v8f32, b: v8f32) -> v16i16 {
+    unsafe { __lasx_xvfcvt_h_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcvt_s_d(a: v4f64, b: v4f64) -> v8f32 {
-    __lasx_xvfcvt_s_d(a, b)
+pub fn lasx_xvfcvt_s_d(a: v4f64, b: v4f64) -> v8f32 {
+    unsafe { __lasx_xvfcvt_s_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmin_s(a: v8f32, b: v8f32) -> v8f32 {
-    __lasx_xvfmin_s(a, b)
+pub fn lasx_xvfmin_s(a: v8f32, b: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfmin_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmin_d(a: v4f64, b: v4f64) -> v4f64 {
-    __lasx_xvfmin_d(a, b)
+pub fn lasx_xvfmin_d(a: v4f64, b: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfmin_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmina_s(a: v8f32, b: v8f32) -> v8f32 {
-    __lasx_xvfmina_s(a, b)
+pub fn lasx_xvfmina_s(a: v8f32, b: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfmina_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmina_d(a: v4f64, b: v4f64) -> v4f64 {
-    __lasx_xvfmina_d(a, b)
+pub fn lasx_xvfmina_d(a: v4f64, b: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfmina_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmax_s(a: v8f32, b: v8f32) -> v8f32 {
-    __lasx_xvfmax_s(a, b)
+pub fn lasx_xvfmax_s(a: v8f32, b: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfmax_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmax_d(a: v4f64, b: v4f64) -> v4f64 {
-    __lasx_xvfmax_d(a, b)
+pub fn lasx_xvfmax_d(a: v4f64, b: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfmax_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmaxa_s(a: v8f32, b: v8f32) -> v8f32 {
-    __lasx_xvfmaxa_s(a, b)
+pub fn lasx_xvfmaxa_s(a: v8f32, b: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfmaxa_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmaxa_d(a: v4f64, b: v4f64) -> v4f64 {
-    __lasx_xvfmaxa_d(a, b)
+pub fn lasx_xvfmaxa_d(a: v4f64, b: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfmaxa_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfclass_s(a: v8f32) -> v8i32 {
-    __lasx_xvfclass_s(a)
+pub fn lasx_xvfclass_s(a: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfclass_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfclass_d(a: v4f64) -> v4i64 {
-    __lasx_xvfclass_d(a)
+pub fn lasx_xvfclass_d(a: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfclass_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfsqrt_s(a: v8f32) -> v8f32 {
-    __lasx_xvfsqrt_s(a)
+pub fn lasx_xvfsqrt_s(a: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfsqrt_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfsqrt_d(a: v4f64) -> v4f64 {
-    __lasx_xvfsqrt_d(a)
+pub fn lasx_xvfsqrt_d(a: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfsqrt_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrecip_s(a: v8f32) -> v8f32 {
-    __lasx_xvfrecip_s(a)
+pub fn lasx_xvfrecip_s(a: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfrecip_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrecip_d(a: v4f64) -> v4f64 {
-    __lasx_xvfrecip_d(a)
+pub fn lasx_xvfrecip_d(a: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfrecip_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx,frecipe")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrecipe_s(a: v8f32) -> v8f32 {
-    __lasx_xvfrecipe_s(a)
+pub fn lasx_xvfrecipe_s(a: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfrecipe_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx,frecipe")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrecipe_d(a: v4f64) -> v4f64 {
-    __lasx_xvfrecipe_d(a)
+pub fn lasx_xvfrecipe_d(a: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfrecipe_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx,frecipe")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrsqrte_s(a: v8f32) -> v8f32 {
-    __lasx_xvfrsqrte_s(a)
+pub fn lasx_xvfrsqrte_s(a: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfrsqrte_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx,frecipe")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrsqrte_d(a: v4f64) -> v4f64 {
-    __lasx_xvfrsqrte_d(a)
+pub fn lasx_xvfrsqrte_d(a: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfrsqrte_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrint_s(a: v8f32) -> v8f32 {
-    __lasx_xvfrint_s(a)
+pub fn lasx_xvfrint_s(a: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfrint_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrint_d(a: v4f64) -> v4f64 {
-    __lasx_xvfrint_d(a)
+pub fn lasx_xvfrint_d(a: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfrint_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrsqrt_s(a: v8f32) -> v8f32 {
-    __lasx_xvfrsqrt_s(a)
+pub fn lasx_xvfrsqrt_s(a: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfrsqrt_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrsqrt_d(a: v4f64) -> v4f64 {
-    __lasx_xvfrsqrt_d(a)
+pub fn lasx_xvfrsqrt_d(a: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfrsqrt_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvflogb_s(a: v8f32) -> v8f32 {
-    __lasx_xvflogb_s(a)
+pub fn lasx_xvflogb_s(a: v8f32) -> v8f32 {
+    unsafe { __lasx_xvflogb_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvflogb_d(a: v4f64) -> v4f64 {
-    __lasx_xvflogb_d(a)
+pub fn lasx_xvflogb_d(a: v4f64) -> v4f64 {
+    unsafe { __lasx_xvflogb_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcvth_s_h(a: v16i16) -> v8f32 {
-    __lasx_xvfcvth_s_h(a)
+pub fn lasx_xvfcvth_s_h(a: v16i16) -> v8f32 {
+    unsafe { __lasx_xvfcvth_s_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcvth_d_s(a: v8f32) -> v4f64 {
-    __lasx_xvfcvth_d_s(a)
+pub fn lasx_xvfcvth_d_s(a: v8f32) -> v4f64 {
+    unsafe { __lasx_xvfcvth_d_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcvtl_s_h(a: v16i16) -> v8f32 {
-    __lasx_xvfcvtl_s_h(a)
+pub fn lasx_xvfcvtl_s_h(a: v16i16) -> v8f32 {
+    unsafe { __lasx_xvfcvtl_s_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcvtl_d_s(a: v8f32) -> v4f64 {
-    __lasx_xvfcvtl_d_s(a)
+pub fn lasx_xvfcvtl_d_s(a: v8f32) -> v4f64 {
+    unsafe { __lasx_xvfcvtl_d_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftint_w_s(a: v8f32) -> v8i32 {
-    __lasx_xvftint_w_s(a)
+pub fn lasx_xvftint_w_s(a: v8f32) -> v8i32 {
+    unsafe { __lasx_xvftint_w_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftint_l_d(a: v4f64) -> v4i64 {
-    __lasx_xvftint_l_d(a)
+pub fn lasx_xvftint_l_d(a: v4f64) -> v4i64 {
+    unsafe { __lasx_xvftint_l_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftint_wu_s(a: v8f32) -> v8u32 {
-    __lasx_xvftint_wu_s(a)
+pub fn lasx_xvftint_wu_s(a: v8f32) -> v8u32 {
+    unsafe { __lasx_xvftint_wu_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftint_lu_d(a: v4f64) -> v4u64 {
-    __lasx_xvftint_lu_d(a)
+pub fn lasx_xvftint_lu_d(a: v4f64) -> v4u64 {
+    unsafe { __lasx_xvftint_lu_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrz_w_s(a: v8f32) -> v8i32 {
-    __lasx_xvftintrz_w_s(a)
+pub fn lasx_xvftintrz_w_s(a: v8f32) -> v8i32 {
+    unsafe { __lasx_xvftintrz_w_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrz_l_d(a: v4f64) -> v4i64 {
-    __lasx_xvftintrz_l_d(a)
+pub fn lasx_xvftintrz_l_d(a: v4f64) -> v4i64 {
+    unsafe { __lasx_xvftintrz_l_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrz_wu_s(a: v8f32) -> v8u32 {
-    __lasx_xvftintrz_wu_s(a)
+pub fn lasx_xvftintrz_wu_s(a: v8f32) -> v8u32 {
+    unsafe { __lasx_xvftintrz_wu_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrz_lu_d(a: v4f64) -> v4u64 {
-    __lasx_xvftintrz_lu_d(a)
+pub fn lasx_xvftintrz_lu_d(a: v4f64) -> v4u64 {
+    unsafe { __lasx_xvftintrz_lu_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvffint_s_w(a: v8i32) -> v8f32 {
-    __lasx_xvffint_s_w(a)
+pub fn lasx_xvffint_s_w(a: v8i32) -> v8f32 {
+    unsafe { __lasx_xvffint_s_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvffint_d_l(a: v4i64) -> v4f64 {
-    __lasx_xvffint_d_l(a)
+pub fn lasx_xvffint_d_l(a: v4i64) -> v4f64 {
+    unsafe { __lasx_xvffint_d_l(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvffint_s_wu(a: v8u32) -> v8f32 {
-    __lasx_xvffint_s_wu(a)
+pub fn lasx_xvffint_s_wu(a: v8u32) -> v8f32 {
+    unsafe { __lasx_xvffint_s_wu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvffint_d_lu(a: v4u64) -> v4f64 {
-    __lasx_xvffint_d_lu(a)
+pub fn lasx_xvffint_d_lu(a: v4u64) -> v4f64 {
+    unsafe { __lasx_xvffint_d_lu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplve_b(a: v32i8, b: i32) -> v32i8 {
-    __lasx_xvreplve_b(a, b)
+pub fn lasx_xvreplve_b(a: v32i8, b: i32) -> v32i8 {
+    unsafe { __lasx_xvreplve_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplve_h(a: v16i16, b: i32) -> v16i16 {
-    __lasx_xvreplve_h(a, b)
+pub fn lasx_xvreplve_h(a: v16i16, b: i32) -> v16i16 {
+    unsafe { __lasx_xvreplve_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplve_w(a: v8i32, b: i32) -> v8i32 {
-    __lasx_xvreplve_w(a, b)
+pub fn lasx_xvreplve_w(a: v8i32, b: i32) -> v8i32 {
+    unsafe { __lasx_xvreplve_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplve_d(a: v4i64, b: i32) -> v4i64 {
-    __lasx_xvreplve_d(a, b)
+pub fn lasx_xvreplve_d(a: v4i64, b: i32) -> v4i64 {
+    unsafe { __lasx_xvreplve_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpermi_w<const IMM8: u32>(a: v8i32, b: v8i32) -> v8i32 {
+pub fn lasx_xvpermi_w<const IMM8: u32>(a: v8i32, b: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvpermi_w(a, b, IMM8)
+    unsafe { __lasx_xvpermi_w(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvandn_v(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvandn_v(a, b)
+pub fn lasx_xvandn_v(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvandn_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvneg_b(a: v32i8) -> v32i8 {
-    __lasx_xvneg_b(a)
+pub fn lasx_xvneg_b(a: v32i8) -> v32i8 {
+    unsafe { __lasx_xvneg_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvneg_h(a: v16i16) -> v16i16 {
-    __lasx_xvneg_h(a)
+pub fn lasx_xvneg_h(a: v16i16) -> v16i16 {
+    unsafe { __lasx_xvneg_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvneg_w(a: v8i32) -> v8i32 {
-    __lasx_xvneg_w(a)
+pub fn lasx_xvneg_w(a: v8i32) -> v8i32 {
+    unsafe { __lasx_xvneg_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvneg_d(a: v4i64) -> v4i64 {
-    __lasx_xvneg_d(a)
+pub fn lasx_xvneg_d(a: v4i64) -> v4i64 {
+    unsafe { __lasx_xvneg_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmuh_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvmuh_b(a, b)
+pub fn lasx_xvmuh_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvmuh_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmuh_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvmuh_h(a, b)
+pub fn lasx_xvmuh_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvmuh_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmuh_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvmuh_w(a, b)
+pub fn lasx_xvmuh_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvmuh_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmuh_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvmuh_d(a, b)
+pub fn lasx_xvmuh_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmuh_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmuh_bu(a: v32u8, b: v32u8) -> v32u8 {
-    __lasx_xvmuh_bu(a, b)
+pub fn lasx_xvmuh_bu(a: v32u8, b: v32u8) -> v32u8 {
+    unsafe { __lasx_xvmuh_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmuh_hu(a: v16u16, b: v16u16) -> v16u16 {
-    __lasx_xvmuh_hu(a, b)
+pub fn lasx_xvmuh_hu(a: v16u16, b: v16u16) -> v16u16 {
+    unsafe { __lasx_xvmuh_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmuh_wu(a: v8u32, b: v8u32) -> v8u32 {
-    __lasx_xvmuh_wu(a, b)
+pub fn lasx_xvmuh_wu(a: v8u32, b: v8u32) -> v8u32 {
+    unsafe { __lasx_xvmuh_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmuh_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvmuh_du(a, b)
+pub fn lasx_xvmuh_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvmuh_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsllwil_h_b<const IMM3: u32>(a: v32i8) -> v16i16 {
+pub fn lasx_xvsllwil_h_b<const IMM3: u32>(a: v32i8) -> v16i16 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvsllwil_h_b(a, IMM3)
+    unsafe { __lasx_xvsllwil_h_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsllwil_w_h<const IMM4: u32>(a: v16i16) -> v8i32 {
+pub fn lasx_xvsllwil_w_h<const IMM4: u32>(a: v16i16) -> v8i32 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsllwil_w_h(a, IMM4)
+    unsafe { __lasx_xvsllwil_w_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsllwil_d_w<const IMM5: u32>(a: v8i32) -> v4i64 {
+pub fn lasx_xvsllwil_d_w<const IMM5: u32>(a: v8i32) -> v4i64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsllwil_d_w(a, IMM5)
+    unsafe { __lasx_xvsllwil_d_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsllwil_hu_bu<const IMM3: u32>(a: v32u8) -> v16u16 {
+pub fn lasx_xvsllwil_hu_bu<const IMM3: u32>(a: v32u8) -> v16u16 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvsllwil_hu_bu(a, IMM3)
+    unsafe { __lasx_xvsllwil_hu_bu(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsllwil_wu_hu<const IMM4: u32>(a: v16u16) -> v8u32 {
+pub fn lasx_xvsllwil_wu_hu<const IMM4: u32>(a: v16u16) -> v8u32 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsllwil_wu_hu(a, IMM4)
+    unsafe { __lasx_xvsllwil_wu_hu(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsllwil_du_wu<const IMM5: u32>(a: v8u32) -> v4u64 {
+pub fn lasx_xvsllwil_du_wu<const IMM5: u32>(a: v8u32) -> v4u64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsllwil_du_wu(a, IMM5)
+    unsafe { __lasx_xvsllwil_du_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsran_b_h(a: v16i16, b: v16i16) -> v32i8 {
-    __lasx_xvsran_b_h(a, b)
+pub fn lasx_xvsran_b_h(a: v16i16, b: v16i16) -> v32i8 {
+    unsafe { __lasx_xvsran_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsran_h_w(a: v8i32, b: v8i32) -> v16i16 {
-    __lasx_xvsran_h_w(a, b)
+pub fn lasx_xvsran_h_w(a: v8i32, b: v8i32) -> v16i16 {
+    unsafe { __lasx_xvsran_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsran_w_d(a: v4i64, b: v4i64) -> v8i32 {
-    __lasx_xvsran_w_d(a, b)
+pub fn lasx_xvsran_w_d(a: v4i64, b: v4i64) -> v8i32 {
+    unsafe { __lasx_xvsran_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssran_b_h(a: v16i16, b: v16i16) -> v32i8 {
-    __lasx_xvssran_b_h(a, b)
+pub fn lasx_xvssran_b_h(a: v16i16, b: v16i16) -> v32i8 {
+    unsafe { __lasx_xvssran_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssran_h_w(a: v8i32, b: v8i32) -> v16i16 {
-    __lasx_xvssran_h_w(a, b)
+pub fn lasx_xvssran_h_w(a: v8i32, b: v8i32) -> v16i16 {
+    unsafe { __lasx_xvssran_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssran_w_d(a: v4i64, b: v4i64) -> v8i32 {
-    __lasx_xvssran_w_d(a, b)
+pub fn lasx_xvssran_w_d(a: v4i64, b: v4i64) -> v8i32 {
+    unsafe { __lasx_xvssran_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssran_bu_h(a: v16u16, b: v16u16) -> v32u8 {
-    __lasx_xvssran_bu_h(a, b)
+pub fn lasx_xvssran_bu_h(a: v16u16, b: v16u16) -> v32u8 {
+    unsafe { __lasx_xvssran_bu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssran_hu_w(a: v8u32, b: v8u32) -> v16u16 {
-    __lasx_xvssran_hu_w(a, b)
+pub fn lasx_xvssran_hu_w(a: v8u32, b: v8u32) -> v16u16 {
+    unsafe { __lasx_xvssran_hu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssran_wu_d(a: v4u64, b: v4u64) -> v8u32 {
-    __lasx_xvssran_wu_d(a, b)
+pub fn lasx_xvssran_wu_d(a: v4u64, b: v4u64) -> v8u32 {
+    unsafe { __lasx_xvssran_wu_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrarn_b_h(a: v16i16, b: v16i16) -> v32i8 {
-    __lasx_xvsrarn_b_h(a, b)
+pub fn lasx_xvsrarn_b_h(a: v16i16, b: v16i16) -> v32i8 {
+    unsafe { __lasx_xvsrarn_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrarn_h_w(a: v8i32, b: v8i32) -> v16i16 {
-    __lasx_xvsrarn_h_w(a, b)
+pub fn lasx_xvsrarn_h_w(a: v8i32, b: v8i32) -> v16i16 {
+    unsafe { __lasx_xvsrarn_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrarn_w_d(a: v4i64, b: v4i64) -> v8i32 {
-    __lasx_xvsrarn_w_d(a, b)
+pub fn lasx_xvsrarn_w_d(a: v4i64, b: v4i64) -> v8i32 {
+    unsafe { __lasx_xvsrarn_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarn_b_h(a: v16i16, b: v16i16) -> v32i8 {
-    __lasx_xvssrarn_b_h(a, b)
+pub fn lasx_xvssrarn_b_h(a: v16i16, b: v16i16) -> v32i8 {
+    unsafe { __lasx_xvssrarn_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarn_h_w(a: v8i32, b: v8i32) -> v16i16 {
-    __lasx_xvssrarn_h_w(a, b)
+pub fn lasx_xvssrarn_h_w(a: v8i32, b: v8i32) -> v16i16 {
+    unsafe { __lasx_xvssrarn_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarn_w_d(a: v4i64, b: v4i64) -> v8i32 {
-    __lasx_xvssrarn_w_d(a, b)
+pub fn lasx_xvssrarn_w_d(a: v4i64, b: v4i64) -> v8i32 {
+    unsafe { __lasx_xvssrarn_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarn_bu_h(a: v16u16, b: v16u16) -> v32u8 {
-    __lasx_xvssrarn_bu_h(a, b)
+pub fn lasx_xvssrarn_bu_h(a: v16u16, b: v16u16) -> v32u8 {
+    unsafe { __lasx_xvssrarn_bu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarn_hu_w(a: v8u32, b: v8u32) -> v16u16 {
-    __lasx_xvssrarn_hu_w(a, b)
+pub fn lasx_xvssrarn_hu_w(a: v8u32, b: v8u32) -> v16u16 {
+    unsafe { __lasx_xvssrarn_hu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarn_wu_d(a: v4u64, b: v4u64) -> v8u32 {
-    __lasx_xvssrarn_wu_d(a, b)
+pub fn lasx_xvssrarn_wu_d(a: v4u64, b: v4u64) -> v8u32 {
+    unsafe { __lasx_xvssrarn_wu_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrln_b_h(a: v16i16, b: v16i16) -> v32i8 {
-    __lasx_xvsrln_b_h(a, b)
+pub fn lasx_xvsrln_b_h(a: v16i16, b: v16i16) -> v32i8 {
+    unsafe { __lasx_xvsrln_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrln_h_w(a: v8i32, b: v8i32) -> v16i16 {
-    __lasx_xvsrln_h_w(a, b)
+pub fn lasx_xvsrln_h_w(a: v8i32, b: v8i32) -> v16i16 {
+    unsafe { __lasx_xvsrln_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrln_w_d(a: v4i64, b: v4i64) -> v8i32 {
-    __lasx_xvsrln_w_d(a, b)
+pub fn lasx_xvsrln_w_d(a: v4i64, b: v4i64) -> v8i32 {
+    unsafe { __lasx_xvsrln_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrln_bu_h(a: v16u16, b: v16u16) -> v32u8 {
-    __lasx_xvssrln_bu_h(a, b)
+pub fn lasx_xvssrln_bu_h(a: v16u16, b: v16u16) -> v32u8 {
+    unsafe { __lasx_xvssrln_bu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrln_hu_w(a: v8u32, b: v8u32) -> v16u16 {
-    __lasx_xvssrln_hu_w(a, b)
+pub fn lasx_xvssrln_hu_w(a: v8u32, b: v8u32) -> v16u16 {
+    unsafe { __lasx_xvssrln_hu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrln_wu_d(a: v4u64, b: v4u64) -> v8u32 {
-    __lasx_xvssrln_wu_d(a, b)
+pub fn lasx_xvssrln_wu_d(a: v4u64, b: v4u64) -> v8u32 {
+    unsafe { __lasx_xvssrln_wu_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlrn_b_h(a: v16i16, b: v16i16) -> v32i8 {
-    __lasx_xvsrlrn_b_h(a, b)
+pub fn lasx_xvsrlrn_b_h(a: v16i16, b: v16i16) -> v32i8 {
+    unsafe { __lasx_xvsrlrn_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlrn_h_w(a: v8i32, b: v8i32) -> v16i16 {
-    __lasx_xvsrlrn_h_w(a, b)
+pub fn lasx_xvsrlrn_h_w(a: v8i32, b: v8i32) -> v16i16 {
+    unsafe { __lasx_xvsrlrn_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlrn_w_d(a: v4i64, b: v4i64) -> v8i32 {
-    __lasx_xvsrlrn_w_d(a, b)
+pub fn lasx_xvsrlrn_w_d(a: v4i64, b: v4i64) -> v8i32 {
+    unsafe { __lasx_xvsrlrn_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrn_bu_h(a: v16u16, b: v16u16) -> v32u8 {
-    __lasx_xvssrlrn_bu_h(a, b)
+pub fn lasx_xvssrlrn_bu_h(a: v16u16, b: v16u16) -> v32u8 {
+    unsafe { __lasx_xvssrlrn_bu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrn_hu_w(a: v8u32, b: v8u32) -> v16u16 {
-    __lasx_xvssrlrn_hu_w(a, b)
+pub fn lasx_xvssrlrn_hu_w(a: v8u32, b: v8u32) -> v16u16 {
+    unsafe { __lasx_xvssrlrn_hu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrn_wu_d(a: v4u64, b: v4u64) -> v8u32 {
-    __lasx_xvssrlrn_wu_d(a, b)
+pub fn lasx_xvssrlrn_wu_d(a: v4u64, b: v4u64) -> v8u32 {
+    unsafe { __lasx_xvssrlrn_wu_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrstpi_b<const IMM5: u32>(a: v32i8, b: v32i8) -> v32i8 {
+pub fn lasx_xvfrstpi_b<const IMM5: u32>(a: v32i8, b: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvfrstpi_b(a, b, IMM5)
+    unsafe { __lasx_xvfrstpi_b(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrstpi_h<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
+pub fn lasx_xvfrstpi_h<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvfrstpi_h(a, b, IMM5)
+    unsafe { __lasx_xvfrstpi_h(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrstp_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
-    __lasx_xvfrstp_b(a, b, c)
+pub fn lasx_xvfrstp_b(a: v32i8, b: v32i8, c: v32i8) -> v32i8 {
+    unsafe { __lasx_xvfrstp_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrstp_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
-    __lasx_xvfrstp_h(a, b, c)
+pub fn lasx_xvfrstp_h(a: v16i16, b: v16i16, c: v16i16) -> v16i16 {
+    unsafe { __lasx_xvfrstp_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvshuf4i_d<const IMM8: u32>(a: v4i64, b: v4i64) -> v4i64 {
+pub fn lasx_xvshuf4i_d<const IMM8: u32>(a: v4i64, b: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvshuf4i_d(a, b, IMM8)
+    unsafe { __lasx_xvshuf4i_d(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbsrl_v<const IMM5: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvbsrl_v<const IMM5: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvbsrl_v(a, IMM5)
+    unsafe { __lasx_xvbsrl_v(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvbsll_v<const IMM5: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvbsll_v<const IMM5: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvbsll_v(a, IMM5)
+    unsafe { __lasx_xvbsll_v(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvextrins_b<const IMM8: u32>(a: v32i8, b: v32i8) -> v32i8 {
+pub fn lasx_xvextrins_b<const IMM8: u32>(a: v32i8, b: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvextrins_b(a, b, IMM8)
+    unsafe { __lasx_xvextrins_b(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvextrins_h<const IMM8: u32>(a: v16i16, b: v16i16) -> v16i16 {
+pub fn lasx_xvextrins_h<const IMM8: u32>(a: v16i16, b: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvextrins_h(a, b, IMM8)
+    unsafe { __lasx_xvextrins_h(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvextrins_w<const IMM8: u32>(a: v8i32, b: v8i32) -> v8i32 {
+pub fn lasx_xvextrins_w<const IMM8: u32>(a: v8i32, b: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvextrins_w(a, b, IMM8)
+    unsafe { __lasx_xvextrins_w(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvextrins_d<const IMM8: u32>(a: v4i64, b: v4i64) -> v4i64 {
+pub fn lasx_xvextrins_d<const IMM8: u32>(a: v4i64, b: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvextrins_d(a, b, IMM8)
+    unsafe { __lasx_xvextrins_d(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmskltz_b(a: v32i8) -> v32i8 {
-    __lasx_xvmskltz_b(a)
+pub fn lasx_xvmskltz_b(a: v32i8) -> v32i8 {
+    unsafe { __lasx_xvmskltz_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmskltz_h(a: v16i16) -> v16i16 {
-    __lasx_xvmskltz_h(a)
+pub fn lasx_xvmskltz_h(a: v16i16) -> v16i16 {
+    unsafe { __lasx_xvmskltz_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmskltz_w(a: v8i32) -> v8i32 {
-    __lasx_xvmskltz_w(a)
+pub fn lasx_xvmskltz_w(a: v8i32) -> v8i32 {
+    unsafe { __lasx_xvmskltz_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmskltz_d(a: v4i64) -> v4i64 {
-    __lasx_xvmskltz_d(a)
+pub fn lasx_xvmskltz_d(a: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmskltz_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsigncov_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvsigncov_b(a, b)
+pub fn lasx_xvsigncov_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvsigncov_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsigncov_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvsigncov_h(a, b)
+pub fn lasx_xvsigncov_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvsigncov_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsigncov_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvsigncov_w(a, b)
+pub fn lasx_xvsigncov_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvsigncov_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsigncov_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsigncov_d(a, b)
+pub fn lasx_xvsigncov_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsigncov_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmadd_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
-    __lasx_xvfmadd_s(a, b, c)
+pub fn lasx_xvfmadd_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfmadd_s(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmadd_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
-    __lasx_xvfmadd_d(a, b, c)
+pub fn lasx_xvfmadd_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfmadd_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmsub_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
-    __lasx_xvfmsub_s(a, b, c)
+pub fn lasx_xvfmsub_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfmsub_s(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfmsub_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
-    __lasx_xvfmsub_d(a, b, c)
+pub fn lasx_xvfmsub_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfmsub_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfnmadd_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
-    __lasx_xvfnmadd_s(a, b, c)
+pub fn lasx_xvfnmadd_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfnmadd_s(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfnmadd_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
-    __lasx_xvfnmadd_d(a, b, c)
+pub fn lasx_xvfnmadd_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfnmadd_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfnmsub_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
-    __lasx_xvfnmsub_s(a, b, c)
+pub fn lasx_xvfnmsub_s(a: v8f32, b: v8f32, c: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfnmsub_s(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfnmsub_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
-    __lasx_xvfnmsub_d(a, b, c)
+pub fn lasx_xvfnmsub_d(a: v4f64, b: v4f64, c: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfnmsub_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrne_w_s(a: v8f32) -> v8i32 {
-    __lasx_xvftintrne_w_s(a)
+pub fn lasx_xvftintrne_w_s(a: v8f32) -> v8i32 {
+    unsafe { __lasx_xvftintrne_w_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrne_l_d(a: v4f64) -> v4i64 {
-    __lasx_xvftintrne_l_d(a)
+pub fn lasx_xvftintrne_l_d(a: v4f64) -> v4i64 {
+    unsafe { __lasx_xvftintrne_l_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrp_w_s(a: v8f32) -> v8i32 {
-    __lasx_xvftintrp_w_s(a)
+pub fn lasx_xvftintrp_w_s(a: v8f32) -> v8i32 {
+    unsafe { __lasx_xvftintrp_w_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrp_l_d(a: v4f64) -> v4i64 {
-    __lasx_xvftintrp_l_d(a)
+pub fn lasx_xvftintrp_l_d(a: v4f64) -> v4i64 {
+    unsafe { __lasx_xvftintrp_l_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrm_w_s(a: v8f32) -> v8i32 {
-    __lasx_xvftintrm_w_s(a)
+pub fn lasx_xvftintrm_w_s(a: v8f32) -> v8i32 {
+    unsafe { __lasx_xvftintrm_w_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrm_l_d(a: v4f64) -> v4i64 {
-    __lasx_xvftintrm_l_d(a)
+pub fn lasx_xvftintrm_l_d(a: v4f64) -> v4i64 {
+    unsafe { __lasx_xvftintrm_l_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftint_w_d(a: v4f64, b: v4f64) -> v8i32 {
-    __lasx_xvftint_w_d(a, b)
+pub fn lasx_xvftint_w_d(a: v4f64, b: v4f64) -> v8i32 {
+    unsafe { __lasx_xvftint_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvffint_s_l(a: v4i64, b: v4i64) -> v8f32 {
-    __lasx_xvffint_s_l(a, b)
+pub fn lasx_xvffint_s_l(a: v4i64, b: v4i64) -> v8f32 {
+    unsafe { __lasx_xvffint_s_l(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrz_w_d(a: v4f64, b: v4f64) -> v8i32 {
-    __lasx_xvftintrz_w_d(a, b)
+pub fn lasx_xvftintrz_w_d(a: v4f64, b: v4f64) -> v8i32 {
+    unsafe { __lasx_xvftintrz_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrp_w_d(a: v4f64, b: v4f64) -> v8i32 {
-    __lasx_xvftintrp_w_d(a, b)
+pub fn lasx_xvftintrp_w_d(a: v4f64, b: v4f64) -> v8i32 {
+    unsafe { __lasx_xvftintrp_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrm_w_d(a: v4f64, b: v4f64) -> v8i32 {
-    __lasx_xvftintrm_w_d(a, b)
+pub fn lasx_xvftintrm_w_d(a: v4f64, b: v4f64) -> v8i32 {
+    unsafe { __lasx_xvftintrm_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrne_w_d(a: v4f64, b: v4f64) -> v8i32 {
-    __lasx_xvftintrne_w_d(a, b)
+pub fn lasx_xvftintrne_w_d(a: v4f64, b: v4f64) -> v8i32 {
+    unsafe { __lasx_xvftintrne_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftinth_l_s(a: v8f32) -> v4i64 {
-    __lasx_xvftinth_l_s(a)
+pub fn lasx_xvftinth_l_s(a: v8f32) -> v4i64 {
+    unsafe { __lasx_xvftinth_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintl_l_s(a: v8f32) -> v4i64 {
-    __lasx_xvftintl_l_s(a)
+pub fn lasx_xvftintl_l_s(a: v8f32) -> v4i64 {
+    unsafe { __lasx_xvftintl_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvffinth_d_w(a: v8i32) -> v4f64 {
-    __lasx_xvffinth_d_w(a)
+pub fn lasx_xvffinth_d_w(a: v8i32) -> v4f64 {
+    unsafe { __lasx_xvffinth_d_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvffintl_d_w(a: v8i32) -> v4f64 {
-    __lasx_xvffintl_d_w(a)
+pub fn lasx_xvffintl_d_w(a: v8i32) -> v4f64 {
+    unsafe { __lasx_xvffintl_d_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrzh_l_s(a: v8f32) -> v4i64 {
-    __lasx_xvftintrzh_l_s(a)
+pub fn lasx_xvftintrzh_l_s(a: v8f32) -> v4i64 {
+    unsafe { __lasx_xvftintrzh_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrzl_l_s(a: v8f32) -> v4i64 {
-    __lasx_xvftintrzl_l_s(a)
+pub fn lasx_xvftintrzl_l_s(a: v8f32) -> v4i64 {
+    unsafe { __lasx_xvftintrzl_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrph_l_s(a: v8f32) -> v4i64 {
-    __lasx_xvftintrph_l_s(a)
+pub fn lasx_xvftintrph_l_s(a: v8f32) -> v4i64 {
+    unsafe { __lasx_xvftintrph_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrpl_l_s(a: v8f32) -> v4i64 {
-    __lasx_xvftintrpl_l_s(a)
+pub fn lasx_xvftintrpl_l_s(a: v8f32) -> v4i64 {
+    unsafe { __lasx_xvftintrpl_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrmh_l_s(a: v8f32) -> v4i64 {
-    __lasx_xvftintrmh_l_s(a)
+pub fn lasx_xvftintrmh_l_s(a: v8f32) -> v4i64 {
+    unsafe { __lasx_xvftintrmh_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrml_l_s(a: v8f32) -> v4i64 {
-    __lasx_xvftintrml_l_s(a)
+pub fn lasx_xvftintrml_l_s(a: v8f32) -> v4i64 {
+    unsafe { __lasx_xvftintrml_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrneh_l_s(a: v8f32) -> v4i64 {
-    __lasx_xvftintrneh_l_s(a)
+pub fn lasx_xvftintrneh_l_s(a: v8f32) -> v4i64 {
+    unsafe { __lasx_xvftintrneh_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvftintrnel_l_s(a: v8f32) -> v4i64 {
-    __lasx_xvftintrnel_l_s(a)
+pub fn lasx_xvftintrnel_l_s(a: v8f32) -> v4i64 {
+    unsafe { __lasx_xvftintrnel_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrintrne_s(a: v8f32) -> v8f32 {
-    __lasx_xvfrintrne_s(a)
+pub fn lasx_xvfrintrne_s(a: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfrintrne_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrintrne_d(a: v4f64) -> v4f64 {
-    __lasx_xvfrintrne_d(a)
+pub fn lasx_xvfrintrne_d(a: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfrintrne_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrintrz_s(a: v8f32) -> v8f32 {
-    __lasx_xvfrintrz_s(a)
+pub fn lasx_xvfrintrz_s(a: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfrintrz_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrintrz_d(a: v4f64) -> v4f64 {
-    __lasx_xvfrintrz_d(a)
+pub fn lasx_xvfrintrz_d(a: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfrintrz_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrintrp_s(a: v8f32) -> v8f32 {
-    __lasx_xvfrintrp_s(a)
+pub fn lasx_xvfrintrp_s(a: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfrintrp_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrintrp_d(a: v4f64) -> v4f64 {
-    __lasx_xvfrintrp_d(a)
+pub fn lasx_xvfrintrp_d(a: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfrintrp_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrintrm_s(a: v8f32) -> v8f32 {
-    __lasx_xvfrintrm_s(a)
+pub fn lasx_xvfrintrm_s(a: v8f32) -> v8f32 {
+    unsafe { __lasx_xvfrintrm_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfrintrm_d(a: v4f64) -> v4f64 {
-    __lasx_xvfrintrm_d(a)
+pub fn lasx_xvfrintrm_d(a: v4f64) -> v4f64 {
+    unsafe { __lasx_xvfrintrm_d(a) }
 }
 
 #[inline]
@@ -5054,94 +5054,94 @@ pub unsafe fn lasx_xvstelm_d<const IMM_S8: i32, const IMM1: u32>(a: v4i64, mem_a
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvinsve0_w<const IMM3: u32>(a: v8i32, b: v8i32) -> v8i32 {
+pub fn lasx_xvinsve0_w<const IMM3: u32>(a: v8i32, b: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvinsve0_w(a, b, IMM3)
+    unsafe { __lasx_xvinsve0_w(a, b, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvinsve0_d<const IMM2: u32>(a: v4i64, b: v4i64) -> v4i64 {
+pub fn lasx_xvinsve0_d<const IMM2: u32>(a: v4i64, b: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM2, 2);
-    __lasx_xvinsve0_d(a, b, IMM2)
+    unsafe { __lasx_xvinsve0_d(a, b, IMM2) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickve_w<const IMM3: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvpickve_w<const IMM3: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvpickve_w(a, IMM3)
+    unsafe { __lasx_xvpickve_w(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickve_d<const IMM2: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvpickve_d<const IMM2: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM2, 2);
-    __lasx_xvpickve_d(a, IMM2)
+    unsafe { __lasx_xvpickve_d(a, IMM2) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrn_b_h(a: v16i16, b: v16i16) -> v32i8 {
-    __lasx_xvssrlrn_b_h(a, b)
+pub fn lasx_xvssrlrn_b_h(a: v16i16, b: v16i16) -> v32i8 {
+    unsafe { __lasx_xvssrlrn_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrn_h_w(a: v8i32, b: v8i32) -> v16i16 {
-    __lasx_xvssrlrn_h_w(a, b)
+pub fn lasx_xvssrlrn_h_w(a: v8i32, b: v8i32) -> v16i16 {
+    unsafe { __lasx_xvssrlrn_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrn_w_d(a: v4i64, b: v4i64) -> v8i32 {
-    __lasx_xvssrlrn_w_d(a, b)
+pub fn lasx_xvssrlrn_w_d(a: v4i64, b: v4i64) -> v8i32 {
+    unsafe { __lasx_xvssrlrn_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrln_b_h(a: v16i16, b: v16i16) -> v32i8 {
-    __lasx_xvssrln_b_h(a, b)
+pub fn lasx_xvssrln_b_h(a: v16i16, b: v16i16) -> v32i8 {
+    unsafe { __lasx_xvssrln_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrln_h_w(a: v8i32, b: v8i32) -> v16i16 {
-    __lasx_xvssrln_h_w(a, b)
+pub fn lasx_xvssrln_h_w(a: v8i32, b: v8i32) -> v16i16 {
+    unsafe { __lasx_xvssrln_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrln_w_d(a: v4i64, b: v4i64) -> v8i32 {
-    __lasx_xvssrln_w_d(a, b)
+pub fn lasx_xvssrln_w_d(a: v4i64, b: v4i64) -> v8i32 {
+    unsafe { __lasx_xvssrln_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvorn_v(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvorn_v(a, b)
+pub fn lasx_xvorn_v(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvorn_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(0)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvldi<const IMM_S13: i32>() -> v4i64 {
+pub fn lasx_xvldi<const IMM_S13: i32>() -> v4i64 {
     static_assert_simm_bits!(IMM_S13, 13);
-    __lasx_xvldi(IMM_S13)
+    unsafe { __lasx_xvldi(IMM_S13) }
 }
 
 #[inline]
@@ -5161,170 +5161,170 @@ pub unsafe fn lasx_xvstx(a: v32i8, mem_addr: *mut i8, b: i64) {
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvextl_qu_du(a: v4u64) -> v4u64 {
-    __lasx_xvextl_qu_du(a)
+pub fn lasx_xvextl_qu_du(a: v4u64) -> v4u64 {
+    unsafe { __lasx_xvextl_qu_du(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvinsgr2vr_w<const IMM3: u32>(a: v8i32, b: i32) -> v8i32 {
+pub fn lasx_xvinsgr2vr_w<const IMM3: u32>(a: v8i32, b: i32) -> v8i32 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvinsgr2vr_w(a, b, IMM3)
+    unsafe { __lasx_xvinsgr2vr_w(a, b, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvinsgr2vr_d<const IMM2: u32>(a: v4i64, b: i64) -> v4i64 {
+pub fn lasx_xvinsgr2vr_d<const IMM2: u32>(a: v4i64, b: i64) -> v4i64 {
     static_assert_uimm_bits!(IMM2, 2);
-    __lasx_xvinsgr2vr_d(a, b, IMM2)
+    unsafe { __lasx_xvinsgr2vr_d(a, b, IMM2) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplve0_b(a: v32i8) -> v32i8 {
-    __lasx_xvreplve0_b(a)
+pub fn lasx_xvreplve0_b(a: v32i8) -> v32i8 {
+    unsafe { __lasx_xvreplve0_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplve0_h(a: v16i16) -> v16i16 {
-    __lasx_xvreplve0_h(a)
+pub fn lasx_xvreplve0_h(a: v16i16) -> v16i16 {
+    unsafe { __lasx_xvreplve0_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplve0_w(a: v8i32) -> v8i32 {
-    __lasx_xvreplve0_w(a)
+pub fn lasx_xvreplve0_w(a: v8i32) -> v8i32 {
+    unsafe { __lasx_xvreplve0_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplve0_d(a: v4i64) -> v4i64 {
-    __lasx_xvreplve0_d(a)
+pub fn lasx_xvreplve0_d(a: v4i64) -> v4i64 {
+    unsafe { __lasx_xvreplve0_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvreplve0_q(a: v32i8) -> v32i8 {
-    __lasx_xvreplve0_q(a)
+pub fn lasx_xvreplve0_q(a: v32i8) -> v32i8 {
+    unsafe { __lasx_xvreplve0_q(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_h_b(a: v32i8) -> v16i16 {
-    __lasx_vext2xv_h_b(a)
+pub fn lasx_vext2xv_h_b(a: v32i8) -> v16i16 {
+    unsafe { __lasx_vext2xv_h_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_w_h(a: v16i16) -> v8i32 {
-    __lasx_vext2xv_w_h(a)
+pub fn lasx_vext2xv_w_h(a: v16i16) -> v8i32 {
+    unsafe { __lasx_vext2xv_w_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_d_w(a: v8i32) -> v4i64 {
-    __lasx_vext2xv_d_w(a)
+pub fn lasx_vext2xv_d_w(a: v8i32) -> v4i64 {
+    unsafe { __lasx_vext2xv_d_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_w_b(a: v32i8) -> v8i32 {
-    __lasx_vext2xv_w_b(a)
+pub fn lasx_vext2xv_w_b(a: v32i8) -> v8i32 {
+    unsafe { __lasx_vext2xv_w_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_d_h(a: v16i16) -> v4i64 {
-    __lasx_vext2xv_d_h(a)
+pub fn lasx_vext2xv_d_h(a: v16i16) -> v4i64 {
+    unsafe { __lasx_vext2xv_d_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_d_b(a: v32i8) -> v4i64 {
-    __lasx_vext2xv_d_b(a)
+pub fn lasx_vext2xv_d_b(a: v32i8) -> v4i64 {
+    unsafe { __lasx_vext2xv_d_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_hu_bu(a: v32i8) -> v16i16 {
-    __lasx_vext2xv_hu_bu(a)
+pub fn lasx_vext2xv_hu_bu(a: v32i8) -> v16i16 {
+    unsafe { __lasx_vext2xv_hu_bu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_wu_hu(a: v16i16) -> v8i32 {
-    __lasx_vext2xv_wu_hu(a)
+pub fn lasx_vext2xv_wu_hu(a: v16i16) -> v8i32 {
+    unsafe { __lasx_vext2xv_wu_hu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_du_wu(a: v8i32) -> v4i64 {
-    __lasx_vext2xv_du_wu(a)
+pub fn lasx_vext2xv_du_wu(a: v8i32) -> v4i64 {
+    unsafe { __lasx_vext2xv_du_wu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_wu_bu(a: v32i8) -> v8i32 {
-    __lasx_vext2xv_wu_bu(a)
+pub fn lasx_vext2xv_wu_bu(a: v32i8) -> v8i32 {
+    unsafe { __lasx_vext2xv_wu_bu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_du_hu(a: v16i16) -> v4i64 {
-    __lasx_vext2xv_du_hu(a)
+pub fn lasx_vext2xv_du_hu(a: v16i16) -> v4i64 {
+    unsafe { __lasx_vext2xv_du_hu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_vext2xv_du_bu(a: v32i8) -> v4i64 {
-    __lasx_vext2xv_du_bu(a)
+pub fn lasx_vext2xv_du_bu(a: v32i8) -> v4i64 {
+    unsafe { __lasx_vext2xv_du_bu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpermi_q<const IMM8: u32>(a: v32i8, b: v32i8) -> v32i8 {
+pub fn lasx_xvpermi_q<const IMM8: u32>(a: v32i8, b: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvpermi_q(a, b, IMM8)
+    unsafe { __lasx_xvpermi_q(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpermi_d<const IMM8: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvpermi_d<const IMM8: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lasx_xvpermi_d(a, IMM8)
+    unsafe { __lasx_xvpermi_d(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvperm_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvperm_w(a, b)
+pub fn lasx_xvperm_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvperm_w(a, b) }
 }
 
 #[inline]
@@ -5367,1697 +5367,1697 @@ pub unsafe fn lasx_xvldrepl_d<const IMM_S9: i32>(mem_addr: *const i8) -> v4i64 {
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickve2gr_w<const IMM3: u32>(a: v8i32) -> i32 {
+pub fn lasx_xvpickve2gr_w<const IMM3: u32>(a: v8i32) -> i32 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvpickve2gr_w(a, IMM3)
+    unsafe { __lasx_xvpickve2gr_w(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickve2gr_wu<const IMM3: u32>(a: v8i32) -> u32 {
+pub fn lasx_xvpickve2gr_wu<const IMM3: u32>(a: v8i32) -> u32 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvpickve2gr_wu(a, IMM3)
+    unsafe { __lasx_xvpickve2gr_wu(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickve2gr_d<const IMM2: u32>(a: v4i64) -> i64 {
+pub fn lasx_xvpickve2gr_d<const IMM2: u32>(a: v4i64) -> i64 {
     static_assert_uimm_bits!(IMM2, 2);
-    __lasx_xvpickve2gr_d(a, IMM2)
+    unsafe { __lasx_xvpickve2gr_d(a, IMM2) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickve2gr_du<const IMM2: u32>(a: v4i64) -> u64 {
+pub fn lasx_xvpickve2gr_du<const IMM2: u32>(a: v4i64) -> u64 {
     static_assert_uimm_bits!(IMM2, 2);
-    __lasx_xvpickve2gr_du(a, IMM2)
+    unsafe { __lasx_xvpickve2gr_du(a, IMM2) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_q_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvaddwev_q_d(a, b)
+pub fn lasx_xvaddwev_q_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvaddwev_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_d_w(a: v8i32, b: v8i32) -> v4i64 {
-    __lasx_xvaddwev_d_w(a, b)
+pub fn lasx_xvaddwev_d_w(a: v8i32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvaddwev_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_w_h(a: v16i16, b: v16i16) -> v8i32 {
-    __lasx_xvaddwev_w_h(a, b)
+pub fn lasx_xvaddwev_w_h(a: v16i16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvaddwev_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_h_b(a: v32i8, b: v32i8) -> v16i16 {
-    __lasx_xvaddwev_h_b(a, b)
+pub fn lasx_xvaddwev_h_b(a: v32i8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvaddwev_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_q_du(a: v4u64, b: v4u64) -> v4i64 {
-    __lasx_xvaddwev_q_du(a, b)
+pub fn lasx_xvaddwev_q_du(a: v4u64, b: v4u64) -> v4i64 {
+    unsafe { __lasx_xvaddwev_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {
-    __lasx_xvaddwev_d_wu(a, b)
+pub fn lasx_xvaddwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {
+    unsafe { __lasx_xvaddwev_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {
-    __lasx_xvaddwev_w_hu(a, b)
+pub fn lasx_xvaddwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {
+    unsafe { __lasx_xvaddwev_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {
-    __lasx_xvaddwev_h_bu(a, b)
+pub fn lasx_xvaddwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {
+    unsafe { __lasx_xvaddwev_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwev_q_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsubwev_q_d(a, b)
+pub fn lasx_xvsubwev_q_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsubwev_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwev_d_w(a: v8i32, b: v8i32) -> v4i64 {
-    __lasx_xvsubwev_d_w(a, b)
+pub fn lasx_xvsubwev_d_w(a: v8i32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvsubwev_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwev_w_h(a: v16i16, b: v16i16) -> v8i32 {
-    __lasx_xvsubwev_w_h(a, b)
+pub fn lasx_xvsubwev_w_h(a: v16i16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvsubwev_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwev_h_b(a: v32i8, b: v32i8) -> v16i16 {
-    __lasx_xvsubwev_h_b(a, b)
+pub fn lasx_xvsubwev_h_b(a: v32i8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvsubwev_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwev_q_du(a: v4u64, b: v4u64) -> v4i64 {
-    __lasx_xvsubwev_q_du(a, b)
+pub fn lasx_xvsubwev_q_du(a: v4u64, b: v4u64) -> v4i64 {
+    unsafe { __lasx_xvsubwev_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {
-    __lasx_xvsubwev_d_wu(a, b)
+pub fn lasx_xvsubwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {
+    unsafe { __lasx_xvsubwev_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {
-    __lasx_xvsubwev_w_hu(a, b)
+pub fn lasx_xvsubwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {
+    unsafe { __lasx_xvsubwev_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {
-    __lasx_xvsubwev_h_bu(a, b)
+pub fn lasx_xvsubwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {
+    unsafe { __lasx_xvsubwev_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_q_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvmulwev_q_d(a, b)
+pub fn lasx_xvmulwev_q_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmulwev_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_d_w(a: v8i32, b: v8i32) -> v4i64 {
-    __lasx_xvmulwev_d_w(a, b)
+pub fn lasx_xvmulwev_d_w(a: v8i32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvmulwev_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_w_h(a: v16i16, b: v16i16) -> v8i32 {
-    __lasx_xvmulwev_w_h(a, b)
+pub fn lasx_xvmulwev_w_h(a: v16i16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvmulwev_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_h_b(a: v32i8, b: v32i8) -> v16i16 {
-    __lasx_xvmulwev_h_b(a, b)
+pub fn lasx_xvmulwev_h_b(a: v32i8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvmulwev_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_q_du(a: v4u64, b: v4u64) -> v4i64 {
-    __lasx_xvmulwev_q_du(a, b)
+pub fn lasx_xvmulwev_q_du(a: v4u64, b: v4u64) -> v4i64 {
+    unsafe { __lasx_xvmulwev_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {
-    __lasx_xvmulwev_d_wu(a, b)
+pub fn lasx_xvmulwev_d_wu(a: v8u32, b: v8u32) -> v4i64 {
+    unsafe { __lasx_xvmulwev_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {
-    __lasx_xvmulwev_w_hu(a, b)
+pub fn lasx_xvmulwev_w_hu(a: v16u16, b: v16u16) -> v8i32 {
+    unsafe { __lasx_xvmulwev_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {
-    __lasx_xvmulwev_h_bu(a, b)
+pub fn lasx_xvmulwev_h_bu(a: v32u8, b: v32u8) -> v16i16 {
+    unsafe { __lasx_xvmulwev_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_q_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvaddwod_q_d(a, b)
+pub fn lasx_xvaddwod_q_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvaddwod_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_d_w(a: v8i32, b: v8i32) -> v4i64 {
-    __lasx_xvaddwod_d_w(a, b)
+pub fn lasx_xvaddwod_d_w(a: v8i32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvaddwod_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_w_h(a: v16i16, b: v16i16) -> v8i32 {
-    __lasx_xvaddwod_w_h(a, b)
+pub fn lasx_xvaddwod_w_h(a: v16i16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvaddwod_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_h_b(a: v32i8, b: v32i8) -> v16i16 {
-    __lasx_xvaddwod_h_b(a, b)
+pub fn lasx_xvaddwod_h_b(a: v32i8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvaddwod_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_q_du(a: v4u64, b: v4u64) -> v4i64 {
-    __lasx_xvaddwod_q_du(a, b)
+pub fn lasx_xvaddwod_q_du(a: v4u64, b: v4u64) -> v4i64 {
+    unsafe { __lasx_xvaddwod_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {
-    __lasx_xvaddwod_d_wu(a, b)
+pub fn lasx_xvaddwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {
+    unsafe { __lasx_xvaddwod_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {
-    __lasx_xvaddwod_w_hu(a, b)
+pub fn lasx_xvaddwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {
+    unsafe { __lasx_xvaddwod_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {
-    __lasx_xvaddwod_h_bu(a, b)
+pub fn lasx_xvaddwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {
+    unsafe { __lasx_xvaddwod_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwod_q_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsubwod_q_d(a, b)
+pub fn lasx_xvsubwod_q_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsubwod_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwod_d_w(a: v8i32, b: v8i32) -> v4i64 {
-    __lasx_xvsubwod_d_w(a, b)
+pub fn lasx_xvsubwod_d_w(a: v8i32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvsubwod_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwod_w_h(a: v16i16, b: v16i16) -> v8i32 {
-    __lasx_xvsubwod_w_h(a, b)
+pub fn lasx_xvsubwod_w_h(a: v16i16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvsubwod_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwod_h_b(a: v32i8, b: v32i8) -> v16i16 {
-    __lasx_xvsubwod_h_b(a, b)
+pub fn lasx_xvsubwod_h_b(a: v32i8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvsubwod_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwod_q_du(a: v4u64, b: v4u64) -> v4i64 {
-    __lasx_xvsubwod_q_du(a, b)
+pub fn lasx_xvsubwod_q_du(a: v4u64, b: v4u64) -> v4i64 {
+    unsafe { __lasx_xvsubwod_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {
-    __lasx_xvsubwod_d_wu(a, b)
+pub fn lasx_xvsubwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {
+    unsafe { __lasx_xvsubwod_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {
-    __lasx_xvsubwod_w_hu(a, b)
+pub fn lasx_xvsubwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {
+    unsafe { __lasx_xvsubwod_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsubwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {
-    __lasx_xvsubwod_h_bu(a, b)
+pub fn lasx_xvsubwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {
+    unsafe { __lasx_xvsubwod_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_q_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvmulwod_q_d(a, b)
+pub fn lasx_xvmulwod_q_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmulwod_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_d_w(a: v8i32, b: v8i32) -> v4i64 {
-    __lasx_xvmulwod_d_w(a, b)
+pub fn lasx_xvmulwod_d_w(a: v8i32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvmulwod_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_w_h(a: v16i16, b: v16i16) -> v8i32 {
-    __lasx_xvmulwod_w_h(a, b)
+pub fn lasx_xvmulwod_w_h(a: v16i16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvmulwod_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_h_b(a: v32i8, b: v32i8) -> v16i16 {
-    __lasx_xvmulwod_h_b(a, b)
+pub fn lasx_xvmulwod_h_b(a: v32i8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvmulwod_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_q_du(a: v4u64, b: v4u64) -> v4i64 {
-    __lasx_xvmulwod_q_du(a, b)
+pub fn lasx_xvmulwod_q_du(a: v4u64, b: v4u64) -> v4i64 {
+    unsafe { __lasx_xvmulwod_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {
-    __lasx_xvmulwod_d_wu(a, b)
+pub fn lasx_xvmulwod_d_wu(a: v8u32, b: v8u32) -> v4i64 {
+    unsafe { __lasx_xvmulwod_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {
-    __lasx_xvmulwod_w_hu(a, b)
+pub fn lasx_xvmulwod_w_hu(a: v16u16, b: v16u16) -> v8i32 {
+    unsafe { __lasx_xvmulwod_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {
-    __lasx_xvmulwod_h_bu(a, b)
+pub fn lasx_xvmulwod_h_bu(a: v32u8, b: v32u8) -> v16i16 {
+    unsafe { __lasx_xvmulwod_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
-    __lasx_xvaddwev_d_wu_w(a, b)
+pub fn lasx_xvaddwev_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvaddwev_d_wu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
-    __lasx_xvaddwev_w_hu_h(a, b)
+pub fn lasx_xvaddwev_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvaddwev_w_hu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
-    __lasx_xvaddwev_h_bu_b(a, b)
+pub fn lasx_xvaddwev_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvaddwev_h_bu_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
-    __lasx_xvmulwev_d_wu_w(a, b)
+pub fn lasx_xvmulwev_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvmulwev_d_wu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
-    __lasx_xvmulwev_w_hu_h(a, b)
+pub fn lasx_xvmulwev_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvmulwev_w_hu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
-    __lasx_xvmulwev_h_bu_b(a, b)
+pub fn lasx_xvmulwev_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvmulwev_h_bu_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
-    __lasx_xvaddwod_d_wu_w(a, b)
+pub fn lasx_xvaddwod_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvaddwod_d_wu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
-    __lasx_xvaddwod_w_hu_h(a, b)
+pub fn lasx_xvaddwod_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvaddwod_w_hu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
-    __lasx_xvaddwod_h_bu_b(a, b)
+pub fn lasx_xvaddwod_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvaddwod_h_bu_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
-    __lasx_xvmulwod_d_wu_w(a, b)
+pub fn lasx_xvmulwod_d_wu_w(a: v8u32, b: v8i32) -> v4i64 {
+    unsafe { __lasx_xvmulwod_d_wu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
-    __lasx_xvmulwod_w_hu_h(a, b)
+pub fn lasx_xvmulwod_w_hu_h(a: v16u16, b: v16i16) -> v8i32 {
+    unsafe { __lasx_xvmulwod_w_hu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
-    __lasx_xvmulwod_h_bu_b(a, b)
+pub fn lasx_xvmulwod_h_bu_b(a: v32u8, b: v32i8) -> v16i16 {
+    unsafe { __lasx_xvmulwod_h_bu_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhaddw_q_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvhaddw_q_d(a, b)
+pub fn lasx_xvhaddw_q_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvhaddw_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhaddw_qu_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvhaddw_qu_du(a, b)
+pub fn lasx_xvhaddw_qu_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvhaddw_qu_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhsubw_q_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvhsubw_q_d(a, b)
+pub fn lasx_xvhsubw_q_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvhsubw_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvhsubw_qu_du(a: v4u64, b: v4u64) -> v4u64 {
-    __lasx_xvhsubw_qu_du(a, b)
+pub fn lasx_xvhsubw_qu_du(a: v4u64, b: v4u64) -> v4u64 {
+    unsafe { __lasx_xvhsubw_qu_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_q_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
-    __lasx_xvmaddwev_q_d(a, b, c)
+pub fn lasx_xvmaddwev_q_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmaddwev_q_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_d_w(a: v4i64, b: v8i32, c: v8i32) -> v4i64 {
-    __lasx_xvmaddwev_d_w(a, b, c)
+pub fn lasx_xvmaddwev_d_w(a: v4i64, b: v8i32, c: v8i32) -> v4i64 {
+    unsafe { __lasx_xvmaddwev_d_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_w_h(a: v8i32, b: v16i16, c: v16i16) -> v8i32 {
-    __lasx_xvmaddwev_w_h(a, b, c)
+pub fn lasx_xvmaddwev_w_h(a: v8i32, b: v16i16, c: v16i16) -> v8i32 {
+    unsafe { __lasx_xvmaddwev_w_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_h_b(a: v16i16, b: v32i8, c: v32i8) -> v16i16 {
-    __lasx_xvmaddwev_h_b(a, b, c)
+pub fn lasx_xvmaddwev_h_b(a: v16i16, b: v32i8, c: v32i8) -> v16i16 {
+    unsafe { __lasx_xvmaddwev_h_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_q_du(a: v4u64, b: v4u64, c: v4u64) -> v4u64 {
-    __lasx_xvmaddwev_q_du(a, b, c)
+pub fn lasx_xvmaddwev_q_du(a: v4u64, b: v4u64, c: v4u64) -> v4u64 {
+    unsafe { __lasx_xvmaddwev_q_du(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_d_wu(a: v4u64, b: v8u32, c: v8u32) -> v4u64 {
-    __lasx_xvmaddwev_d_wu(a, b, c)
+pub fn lasx_xvmaddwev_d_wu(a: v4u64, b: v8u32, c: v8u32) -> v4u64 {
+    unsafe { __lasx_xvmaddwev_d_wu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_w_hu(a: v8u32, b: v16u16, c: v16u16) -> v8u32 {
-    __lasx_xvmaddwev_w_hu(a, b, c)
+pub fn lasx_xvmaddwev_w_hu(a: v8u32, b: v16u16, c: v16u16) -> v8u32 {
+    unsafe { __lasx_xvmaddwev_w_hu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_h_bu(a: v16u16, b: v32u8, c: v32u8) -> v16u16 {
-    __lasx_xvmaddwev_h_bu(a, b, c)
+pub fn lasx_xvmaddwev_h_bu(a: v16u16, b: v32u8, c: v32u8) -> v16u16 {
+    unsafe { __lasx_xvmaddwev_h_bu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_q_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
-    __lasx_xvmaddwod_q_d(a, b, c)
+pub fn lasx_xvmaddwod_q_d(a: v4i64, b: v4i64, c: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmaddwod_q_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_d_w(a: v4i64, b: v8i32, c: v8i32) -> v4i64 {
-    __lasx_xvmaddwod_d_w(a, b, c)
+pub fn lasx_xvmaddwod_d_w(a: v4i64, b: v8i32, c: v8i32) -> v4i64 {
+    unsafe { __lasx_xvmaddwod_d_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_w_h(a: v8i32, b: v16i16, c: v16i16) -> v8i32 {
-    __lasx_xvmaddwod_w_h(a, b, c)
+pub fn lasx_xvmaddwod_w_h(a: v8i32, b: v16i16, c: v16i16) -> v8i32 {
+    unsafe { __lasx_xvmaddwod_w_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_h_b(a: v16i16, b: v32i8, c: v32i8) -> v16i16 {
-    __lasx_xvmaddwod_h_b(a, b, c)
+pub fn lasx_xvmaddwod_h_b(a: v16i16, b: v32i8, c: v32i8) -> v16i16 {
+    unsafe { __lasx_xvmaddwod_h_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_q_du(a: v4u64, b: v4u64, c: v4u64) -> v4u64 {
-    __lasx_xvmaddwod_q_du(a, b, c)
+pub fn lasx_xvmaddwod_q_du(a: v4u64, b: v4u64, c: v4u64) -> v4u64 {
+    unsafe { __lasx_xvmaddwod_q_du(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_d_wu(a: v4u64, b: v8u32, c: v8u32) -> v4u64 {
-    __lasx_xvmaddwod_d_wu(a, b, c)
+pub fn lasx_xvmaddwod_d_wu(a: v4u64, b: v8u32, c: v8u32) -> v4u64 {
+    unsafe { __lasx_xvmaddwod_d_wu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_w_hu(a: v8u32, b: v16u16, c: v16u16) -> v8u32 {
-    __lasx_xvmaddwod_w_hu(a, b, c)
+pub fn lasx_xvmaddwod_w_hu(a: v8u32, b: v16u16, c: v16u16) -> v8u32 {
+    unsafe { __lasx_xvmaddwod_w_hu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_h_bu(a: v16u16, b: v32u8, c: v32u8) -> v16u16 {
-    __lasx_xvmaddwod_h_bu(a, b, c)
+pub fn lasx_xvmaddwod_h_bu(a: v16u16, b: v32u8, c: v32u8) -> v16u16 {
+    unsafe { __lasx_xvmaddwod_h_bu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_q_du_d(a: v4i64, b: v4u64, c: v4i64) -> v4i64 {
-    __lasx_xvmaddwev_q_du_d(a, b, c)
+pub fn lasx_xvmaddwev_q_du_d(a: v4i64, b: v4u64, c: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmaddwev_q_du_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_d_wu_w(a: v4i64, b: v8u32, c: v8i32) -> v4i64 {
-    __lasx_xvmaddwev_d_wu_w(a, b, c)
+pub fn lasx_xvmaddwev_d_wu_w(a: v4i64, b: v8u32, c: v8i32) -> v4i64 {
+    unsafe { __lasx_xvmaddwev_d_wu_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_w_hu_h(a: v8i32, b: v16u16, c: v16i16) -> v8i32 {
-    __lasx_xvmaddwev_w_hu_h(a, b, c)
+pub fn lasx_xvmaddwev_w_hu_h(a: v8i32, b: v16u16, c: v16i16) -> v8i32 {
+    unsafe { __lasx_xvmaddwev_w_hu_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwev_h_bu_b(a: v16i16, b: v32u8, c: v32i8) -> v16i16 {
-    __lasx_xvmaddwev_h_bu_b(a, b, c)
+pub fn lasx_xvmaddwev_h_bu_b(a: v16i16, b: v32u8, c: v32i8) -> v16i16 {
+    unsafe { __lasx_xvmaddwev_h_bu_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_q_du_d(a: v4i64, b: v4u64, c: v4i64) -> v4i64 {
-    __lasx_xvmaddwod_q_du_d(a, b, c)
+pub fn lasx_xvmaddwod_q_du_d(a: v4i64, b: v4u64, c: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmaddwod_q_du_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_d_wu_w(a: v4i64, b: v8u32, c: v8i32) -> v4i64 {
-    __lasx_xvmaddwod_d_wu_w(a, b, c)
+pub fn lasx_xvmaddwod_d_wu_w(a: v4i64, b: v8u32, c: v8i32) -> v4i64 {
+    unsafe { __lasx_xvmaddwod_d_wu_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_w_hu_h(a: v8i32, b: v16u16, c: v16i16) -> v8i32 {
-    __lasx_xvmaddwod_w_hu_h(a, b, c)
+pub fn lasx_xvmaddwod_w_hu_h(a: v8i32, b: v16u16, c: v16i16) -> v8i32 {
+    unsafe { __lasx_xvmaddwod_w_hu_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmaddwod_h_bu_b(a: v16i16, b: v32u8, c: v32i8) -> v16i16 {
-    __lasx_xvmaddwod_h_bu_b(a, b, c)
+pub fn lasx_xvmaddwod_h_bu_b(a: v16i16, b: v32u8, c: v32i8) -> v16i16 {
+    unsafe { __lasx_xvmaddwod_h_bu_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrotr_b(a: v32i8, b: v32i8) -> v32i8 {
-    __lasx_xvrotr_b(a, b)
+pub fn lasx_xvrotr_b(a: v32i8, b: v32i8) -> v32i8 {
+    unsafe { __lasx_xvrotr_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrotr_h(a: v16i16, b: v16i16) -> v16i16 {
-    __lasx_xvrotr_h(a, b)
+pub fn lasx_xvrotr_h(a: v16i16, b: v16i16) -> v16i16 {
+    unsafe { __lasx_xvrotr_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrotr_w(a: v8i32, b: v8i32) -> v8i32 {
-    __lasx_xvrotr_w(a, b)
+pub fn lasx_xvrotr_w(a: v8i32, b: v8i32) -> v8i32 {
+    unsafe { __lasx_xvrotr_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrotr_d(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvrotr_d(a, b)
+pub fn lasx_xvrotr_d(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvrotr_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvadd_q(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvadd_q(a, b)
+pub fn lasx_xvadd_q(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvadd_q(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsub_q(a: v4i64, b: v4i64) -> v4i64 {
-    __lasx_xvsub_q(a, b)
+pub fn lasx_xvsub_q(a: v4i64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvsub_q(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwev_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
-    __lasx_xvaddwev_q_du_d(a, b)
+pub fn lasx_xvaddwev_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvaddwev_q_du_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvaddwod_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
-    __lasx_xvaddwod_q_du_d(a, b)
+pub fn lasx_xvaddwod_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvaddwod_q_du_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwev_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
-    __lasx_xvmulwev_q_du_d(a, b)
+pub fn lasx_xvmulwev_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmulwev_q_du_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmulwod_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
-    __lasx_xvmulwod_q_du_d(a, b)
+pub fn lasx_xvmulwod_q_du_d(a: v4u64, b: v4i64) -> v4i64 {
+    unsafe { __lasx_xvmulwod_q_du_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmskgez_b(a: v32i8) -> v32i8 {
-    __lasx_xvmskgez_b(a)
+pub fn lasx_xvmskgez_b(a: v32i8) -> v32i8 {
+    unsafe { __lasx_xvmskgez_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvmsknz_b(a: v32i8) -> v32i8 {
-    __lasx_xvmsknz_b(a)
+pub fn lasx_xvmsknz_b(a: v32i8) -> v32i8 {
+    unsafe { __lasx_xvmsknz_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvexth_h_b(a: v32i8) -> v16i16 {
-    __lasx_xvexth_h_b(a)
+pub fn lasx_xvexth_h_b(a: v32i8) -> v16i16 {
+    unsafe { __lasx_xvexth_h_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvexth_w_h(a: v16i16) -> v8i32 {
-    __lasx_xvexth_w_h(a)
+pub fn lasx_xvexth_w_h(a: v16i16) -> v8i32 {
+    unsafe { __lasx_xvexth_w_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvexth_d_w(a: v8i32) -> v4i64 {
-    __lasx_xvexth_d_w(a)
+pub fn lasx_xvexth_d_w(a: v8i32) -> v4i64 {
+    unsafe { __lasx_xvexth_d_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvexth_q_d(a: v4i64) -> v4i64 {
-    __lasx_xvexth_q_d(a)
+pub fn lasx_xvexth_q_d(a: v4i64) -> v4i64 {
+    unsafe { __lasx_xvexth_q_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvexth_hu_bu(a: v32u8) -> v16u16 {
-    __lasx_xvexth_hu_bu(a)
+pub fn lasx_xvexth_hu_bu(a: v32u8) -> v16u16 {
+    unsafe { __lasx_xvexth_hu_bu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvexth_wu_hu(a: v16u16) -> v8u32 {
-    __lasx_xvexth_wu_hu(a)
+pub fn lasx_xvexth_wu_hu(a: v16u16) -> v8u32 {
+    unsafe { __lasx_xvexth_wu_hu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvexth_du_wu(a: v8u32) -> v4u64 {
-    __lasx_xvexth_du_wu(a)
+pub fn lasx_xvexth_du_wu(a: v8u32) -> v4u64 {
+    unsafe { __lasx_xvexth_du_wu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvexth_qu_du(a: v4u64) -> v4u64 {
-    __lasx_xvexth_qu_du(a)
+pub fn lasx_xvexth_qu_du(a: v4u64) -> v4u64 {
+    unsafe { __lasx_xvexth_qu_du(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrotri_b<const IMM3: u32>(a: v32i8) -> v32i8 {
+pub fn lasx_xvrotri_b<const IMM3: u32>(a: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvrotri_b(a, IMM3)
+    unsafe { __lasx_xvrotri_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrotri_h<const IMM4: u32>(a: v16i16) -> v16i16 {
+pub fn lasx_xvrotri_h<const IMM4: u32>(a: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvrotri_h(a, IMM4)
+    unsafe { __lasx_xvrotri_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrotri_w<const IMM5: u32>(a: v8i32) -> v8i32 {
+pub fn lasx_xvrotri_w<const IMM5: u32>(a: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvrotri_w(a, IMM5)
+    unsafe { __lasx_xvrotri_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrotri_d<const IMM6: u32>(a: v4i64) -> v4i64 {
+pub fn lasx_xvrotri_d<const IMM6: u32>(a: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvrotri_d(a, IMM6)
+    unsafe { __lasx_xvrotri_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvextl_q_d(a: v4i64) -> v4i64 {
-    __lasx_xvextl_q_d(a)
+pub fn lasx_xvextl_q_d(a: v4i64) -> v4i64 {
+    unsafe { __lasx_xvextl_q_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
+pub fn lasx_xvsrlni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsrlni_b_h(a, b, IMM4)
+    unsafe { __lasx_xvsrlni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
+pub fn lasx_xvsrlni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsrlni_h_w(a, b, IMM5)
+    unsafe { __lasx_xvsrlni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
+pub fn lasx_xvsrlni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvsrlni_w_d(a, b, IMM6)
+    unsafe { __lasx_xvsrlni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
+pub fn lasx_xvsrlni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvsrlni_d_q(a, b, IMM7)
+    unsafe { __lasx_xvsrlni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlrni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
+pub fn lasx_xvsrlrni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsrlrni_b_h(a, b, IMM4)
+    unsafe { __lasx_xvsrlrni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlrni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
+pub fn lasx_xvsrlrni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsrlrni_h_w(a, b, IMM5)
+    unsafe { __lasx_xvsrlrni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlrni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
+pub fn lasx_xvsrlrni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvsrlrni_w_d(a, b, IMM6)
+    unsafe { __lasx_xvsrlrni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrlrni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
+pub fn lasx_xvsrlrni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvsrlrni_d_q(a, b, IMM7)
+    unsafe { __lasx_xvsrlrni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
+pub fn lasx_xvssrlni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvssrlni_b_h(a, b, IMM4)
+    unsafe { __lasx_xvssrlni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
+pub fn lasx_xvssrlni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvssrlni_h_w(a, b, IMM5)
+    unsafe { __lasx_xvssrlni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
+pub fn lasx_xvssrlni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvssrlni_w_d(a, b, IMM6)
+    unsafe { __lasx_xvssrlni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
+pub fn lasx_xvssrlni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvssrlni_d_q(a, b, IMM7)
+    unsafe { __lasx_xvssrlni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
+pub fn lasx_xvssrlni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvssrlni_bu_h(a, b, IMM4)
+    unsafe { __lasx_xvssrlni_bu_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
+pub fn lasx_xvssrlni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvssrlni_hu_w(a, b, IMM5)
+    unsafe { __lasx_xvssrlni_hu_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
+pub fn lasx_xvssrlni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvssrlni_wu_d(a, b, IMM6)
+    unsafe { __lasx_xvssrlni_wu_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
+pub fn lasx_xvssrlni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvssrlni_du_q(a, b, IMM7)
+    unsafe { __lasx_xvssrlni_du_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
+pub fn lasx_xvssrlrni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvssrlrni_b_h(a, b, IMM4)
+    unsafe { __lasx_xvssrlrni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
+pub fn lasx_xvssrlrni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvssrlrni_h_w(a, b, IMM5)
+    unsafe { __lasx_xvssrlrni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
+pub fn lasx_xvssrlrni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvssrlrni_w_d(a, b, IMM6)
+    unsafe { __lasx_xvssrlrni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
+pub fn lasx_xvssrlrni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvssrlrni_d_q(a, b, IMM7)
+    unsafe { __lasx_xvssrlrni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
+pub fn lasx_xvssrlrni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvssrlrni_bu_h(a, b, IMM4)
+    unsafe { __lasx_xvssrlrni_bu_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
+pub fn lasx_xvssrlrni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvssrlrni_hu_w(a, b, IMM5)
+    unsafe { __lasx_xvssrlrni_hu_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
+pub fn lasx_xvssrlrni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvssrlrni_wu_d(a, b, IMM6)
+    unsafe { __lasx_xvssrlrni_wu_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrlrni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
+pub fn lasx_xvssrlrni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvssrlrni_du_q(a, b, IMM7)
+    unsafe { __lasx_xvssrlrni_du_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrani_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
+pub fn lasx_xvsrani_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsrani_b_h(a, b, IMM4)
+    unsafe { __lasx_xvsrani_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrani_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
+pub fn lasx_xvsrani_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsrani_h_w(a, b, IMM5)
+    unsafe { __lasx_xvsrani_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrani_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
+pub fn lasx_xvsrani_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvsrani_w_d(a, b, IMM6)
+    unsafe { __lasx_xvsrani_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrani_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
+pub fn lasx_xvsrani_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvsrani_d_q(a, b, IMM7)
+    unsafe { __lasx_xvsrani_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrarni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
+pub fn lasx_xvsrarni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvsrarni_b_h(a, b, IMM4)
+    unsafe { __lasx_xvsrarni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrarni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
+pub fn lasx_xvsrarni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvsrarni_h_w(a, b, IMM5)
+    unsafe { __lasx_xvsrarni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrarni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
+pub fn lasx_xvsrarni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvsrarni_w_d(a, b, IMM6)
+    unsafe { __lasx_xvsrarni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvsrarni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
+pub fn lasx_xvsrarni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvsrarni_d_q(a, b, IMM7)
+    unsafe { __lasx_xvsrarni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrani_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
+pub fn lasx_xvssrani_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvssrani_b_h(a, b, IMM4)
+    unsafe { __lasx_xvssrani_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrani_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
+pub fn lasx_xvssrani_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvssrani_h_w(a, b, IMM5)
+    unsafe { __lasx_xvssrani_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrani_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
+pub fn lasx_xvssrani_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvssrani_w_d(a, b, IMM6)
+    unsafe { __lasx_xvssrani_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrani_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
+pub fn lasx_xvssrani_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvssrani_d_q(a, b, IMM7)
+    unsafe { __lasx_xvssrani_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrani_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
+pub fn lasx_xvssrani_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvssrani_bu_h(a, b, IMM4)
+    unsafe { __lasx_xvssrani_bu_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrani_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
+pub fn lasx_xvssrani_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvssrani_hu_w(a, b, IMM5)
+    unsafe { __lasx_xvssrani_hu_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrani_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
+pub fn lasx_xvssrani_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvssrani_wu_d(a, b, IMM6)
+    unsafe { __lasx_xvssrani_wu_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrani_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
+pub fn lasx_xvssrani_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvssrani_du_q(a, b, IMM7)
+    unsafe { __lasx_xvssrani_du_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
+pub fn lasx_xvssrarni_b_h<const IMM4: u32>(a: v32i8, b: v32i8) -> v32i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvssrarni_b_h(a, b, IMM4)
+    unsafe { __lasx_xvssrarni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
+pub fn lasx_xvssrarni_h_w<const IMM5: u32>(a: v16i16, b: v16i16) -> v16i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvssrarni_h_w(a, b, IMM5)
+    unsafe { __lasx_xvssrarni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
+pub fn lasx_xvssrarni_w_d<const IMM6: u32>(a: v8i32, b: v8i32) -> v8i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvssrarni_w_d(a, b, IMM6)
+    unsafe { __lasx_xvssrarni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
+pub fn lasx_xvssrarni_d_q<const IMM7: u32>(a: v4i64, b: v4i64) -> v4i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvssrarni_d_q(a, b, IMM7)
+    unsafe { __lasx_xvssrarni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
+pub fn lasx_xvssrarni_bu_h<const IMM4: u32>(a: v32u8, b: v32i8) -> v32u8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lasx_xvssrarni_bu_h(a, b, IMM4)
+    unsafe { __lasx_xvssrarni_bu_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
+pub fn lasx_xvssrarni_hu_w<const IMM5: u32>(a: v16u16, b: v16i16) -> v16u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lasx_xvssrarni_hu_w(a, b, IMM5)
+    unsafe { __lasx_xvssrarni_hu_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
+pub fn lasx_xvssrarni_wu_d<const IMM6: u32>(a: v8u32, b: v8i32) -> v8u32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lasx_xvssrarni_wu_d(a, b, IMM6)
+    unsafe { __lasx_xvssrarni_wu_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvssrarni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
+pub fn lasx_xvssrarni_du_q<const IMM7: u32>(a: v4u64, b: v4i64) -> v4u64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lasx_xvssrarni_du_q(a, b, IMM7)
+    unsafe { __lasx_xvssrarni_du_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xbnz_b(a: v32u8) -> i32 {
-    __lasx_xbnz_b(a)
+pub fn lasx_xbnz_b(a: v32u8) -> i32 {
+    unsafe { __lasx_xbnz_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xbnz_d(a: v4u64) -> i32 {
-    __lasx_xbnz_d(a)
+pub fn lasx_xbnz_d(a: v4u64) -> i32 {
+    unsafe { __lasx_xbnz_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xbnz_h(a: v16u16) -> i32 {
-    __lasx_xbnz_h(a)
+pub fn lasx_xbnz_h(a: v16u16) -> i32 {
+    unsafe { __lasx_xbnz_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xbnz_v(a: v32u8) -> i32 {
-    __lasx_xbnz_v(a)
+pub fn lasx_xbnz_v(a: v32u8) -> i32 {
+    unsafe { __lasx_xbnz_v(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xbnz_w(a: v8u32) -> i32 {
-    __lasx_xbnz_w(a)
+pub fn lasx_xbnz_w(a: v8u32) -> i32 {
+    unsafe { __lasx_xbnz_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xbz_b(a: v32u8) -> i32 {
-    __lasx_xbz_b(a)
+pub fn lasx_xbz_b(a: v32u8) -> i32 {
+    unsafe { __lasx_xbz_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xbz_d(a: v4u64) -> i32 {
-    __lasx_xbz_d(a)
+pub fn lasx_xbz_d(a: v4u64) -> i32 {
+    unsafe { __lasx_xbz_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xbz_h(a: v16u16) -> i32 {
-    __lasx_xbz_h(a)
+pub fn lasx_xbz_h(a: v16u16) -> i32 {
+    unsafe { __lasx_xbz_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xbz_v(a: v32u8) -> i32 {
-    __lasx_xbz_v(a)
+pub fn lasx_xbz_v(a: v32u8) -> i32 {
+    unsafe { __lasx_xbz_v(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xbz_w(a: v8u32) -> i32 {
-    __lasx_xbz_w(a)
+pub fn lasx_xbz_w(a: v8u32) -> i32 {
+    unsafe { __lasx_xbz_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_caf_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_caf_d(a, b)
+pub fn lasx_xvfcmp_caf_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_caf_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_caf_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_caf_s(a, b)
+pub fn lasx_xvfcmp_caf_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_caf_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_ceq_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_ceq_d(a, b)
+pub fn lasx_xvfcmp_ceq_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_ceq_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_ceq_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_ceq_s(a, b)
+pub fn lasx_xvfcmp_ceq_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_ceq_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cle_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_cle_d(a, b)
+pub fn lasx_xvfcmp_cle_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_cle_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cle_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_cle_s(a, b)
+pub fn lasx_xvfcmp_cle_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_cle_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_clt_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_clt_d(a, b)
+pub fn lasx_xvfcmp_clt_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_clt_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_clt_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_clt_s(a, b)
+pub fn lasx_xvfcmp_clt_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_clt_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cne_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_cne_d(a, b)
+pub fn lasx_xvfcmp_cne_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_cne_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cne_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_cne_s(a, b)
+pub fn lasx_xvfcmp_cne_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_cne_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cor_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_cor_d(a, b)
+pub fn lasx_xvfcmp_cor_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_cor_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cor_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_cor_s(a, b)
+pub fn lasx_xvfcmp_cor_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_cor_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cueq_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_cueq_d(a, b)
+pub fn lasx_xvfcmp_cueq_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_cueq_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cueq_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_cueq_s(a, b)
+pub fn lasx_xvfcmp_cueq_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_cueq_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cule_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_cule_d(a, b)
+pub fn lasx_xvfcmp_cule_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_cule_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cule_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_cule_s(a, b)
+pub fn lasx_xvfcmp_cule_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_cule_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cult_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_cult_d(a, b)
+pub fn lasx_xvfcmp_cult_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_cult_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cult_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_cult_s(a, b)
+pub fn lasx_xvfcmp_cult_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_cult_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cun_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_cun_d(a, b)
+pub fn lasx_xvfcmp_cun_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_cun_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cune_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_cune_d(a, b)
+pub fn lasx_xvfcmp_cune_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_cune_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cune_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_cune_s(a, b)
+pub fn lasx_xvfcmp_cune_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_cune_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_cun_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_cun_s(a, b)
+pub fn lasx_xvfcmp_cun_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_cun_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_saf_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_saf_d(a, b)
+pub fn lasx_xvfcmp_saf_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_saf_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_saf_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_saf_s(a, b)
+pub fn lasx_xvfcmp_saf_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_saf_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_seq_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_seq_d(a, b)
+pub fn lasx_xvfcmp_seq_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_seq_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_seq_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_seq_s(a, b)
+pub fn lasx_xvfcmp_seq_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_seq_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sle_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_sle_d(a, b)
+pub fn lasx_xvfcmp_sle_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_sle_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sle_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_sle_s(a, b)
+pub fn lasx_xvfcmp_sle_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_sle_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_slt_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_slt_d(a, b)
+pub fn lasx_xvfcmp_slt_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_slt_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_slt_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_slt_s(a, b)
+pub fn lasx_xvfcmp_slt_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_slt_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sne_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_sne_d(a, b)
+pub fn lasx_xvfcmp_sne_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_sne_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sne_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_sne_s(a, b)
+pub fn lasx_xvfcmp_sne_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_sne_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sor_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_sor_d(a, b)
+pub fn lasx_xvfcmp_sor_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_sor_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sor_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_sor_s(a, b)
+pub fn lasx_xvfcmp_sor_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_sor_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sueq_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_sueq_d(a, b)
+pub fn lasx_xvfcmp_sueq_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_sueq_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sueq_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_sueq_s(a, b)
+pub fn lasx_xvfcmp_sueq_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_sueq_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sule_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_sule_d(a, b)
+pub fn lasx_xvfcmp_sule_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_sule_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sule_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_sule_s(a, b)
+pub fn lasx_xvfcmp_sule_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_sule_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sult_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_sult_d(a, b)
+pub fn lasx_xvfcmp_sult_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_sult_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sult_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_sult_s(a, b)
+pub fn lasx_xvfcmp_sult_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_sult_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sun_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_sun_d(a, b)
+pub fn lasx_xvfcmp_sun_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_sun_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sune_d(a: v4f64, b: v4f64) -> v4i64 {
-    __lasx_xvfcmp_sune_d(a, b)
+pub fn lasx_xvfcmp_sune_d(a: v4f64, b: v4f64) -> v4i64 {
+    unsafe { __lasx_xvfcmp_sune_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sune_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_sune_s(a, b)
+pub fn lasx_xvfcmp_sune_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_sune_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvfcmp_sun_s(a: v8f32, b: v8f32) -> v8i32 {
-    __lasx_xvfcmp_sun_s(a, b)
+pub fn lasx_xvfcmp_sun_s(a: v8f32, b: v8f32) -> v8i32 {
+    unsafe { __lasx_xvfcmp_sun_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickve_d_f<const IMM2: u32>(a: v4f64) -> v4f64 {
+pub fn lasx_xvpickve_d_f<const IMM2: u32>(a: v4f64) -> v4f64 {
     static_assert_uimm_bits!(IMM2, 2);
-    __lasx_xvpickve_d_f(a, IMM2)
+    unsafe { __lasx_xvpickve_d_f(a, IMM2) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvpickve_w_f<const IMM3: u32>(a: v8f32) -> v8f32 {
+pub fn lasx_xvpickve_w_f<const IMM3: u32>(a: v8f32) -> v8f32 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lasx_xvpickve_w_f(a, IMM3)
+    unsafe { __lasx_xvpickve_w_f(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(0)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrepli_b<const IMM_S10: i32>() -> v32i8 {
+pub fn lasx_xvrepli_b<const IMM_S10: i32>() -> v32i8 {
     static_assert_simm_bits!(IMM_S10, 10);
-    __lasx_xvrepli_b(IMM_S10)
+    unsafe { __lasx_xvrepli_b(IMM_S10) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(0)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrepli_d<const IMM_S10: i32>() -> v4i64 {
+pub fn lasx_xvrepli_d<const IMM_S10: i32>() -> v4i64 {
     static_assert_simm_bits!(IMM_S10, 10);
-    __lasx_xvrepli_d(IMM_S10)
+    unsafe { __lasx_xvrepli_d(IMM_S10) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(0)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrepli_h<const IMM_S10: i32>() -> v16i16 {
+pub fn lasx_xvrepli_h<const IMM_S10: i32>() -> v16i16 {
     static_assert_simm_bits!(IMM_S10, 10);
-    __lasx_xvrepli_h(IMM_S10)
+    unsafe { __lasx_xvrepli_h(IMM_S10) }
 }
 
 #[inline]
 #[target_feature(enable = "lasx")]
 #[rustc_legacy_const_generics(0)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lasx_xvrepli_w<const IMM_S10: i32>() -> v8i32 {
+pub fn lasx_xvrepli_w<const IMM_S10: i32>() -> v8i32 {
     static_assert_simm_bits!(IMM_S10, 10);
-    __lasx_xvrepli_w(IMM_S10)
+    unsafe { __lasx_xvrepli_w(IMM_S10) }
 }
diff --git a/library/stdarch/crates/core_arch/src/loongarch64/lsx/generated.rs b/library/stdarch/crates/core_arch/src/loongarch64/lsx/generated.rs
index 2bc364f3e06..ba821a3e3dc 100644
--- a/library/stdarch/crates/core_arch/src/loongarch64/lsx/generated.rs
+++ b/library/stdarch/crates/core_arch/src/loongarch64/lsx/generated.rs
@@ -1455,3593 +1455,3593 @@ unsafe extern "unadjusted" {
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsll_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vsll_b(a, b)
+pub fn lsx_vsll_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vsll_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsll_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vsll_h(a, b)
+pub fn lsx_vsll_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vsll_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsll_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vsll_w(a, b)
+pub fn lsx_vsll_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vsll_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsll_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsll_d(a, b)
+pub fn lsx_vsll_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsll_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslli_b<const IMM3: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vslli_b<const IMM3: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vslli_b(a, IMM3)
+    unsafe { __lsx_vslli_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslli_h<const IMM4: u32>(a: v8i16) -> v8i16 {
+pub fn lsx_vslli_h<const IMM4: u32>(a: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vslli_h(a, IMM4)
+    unsafe { __lsx_vslli_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslli_w<const IMM5: u32>(a: v4i32) -> v4i32 {
+pub fn lsx_vslli_w<const IMM5: u32>(a: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vslli_w(a, IMM5)
+    unsafe { __lsx_vslli_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslli_d<const IMM6: u32>(a: v2i64) -> v2i64 {
+pub fn lsx_vslli_d<const IMM6: u32>(a: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vslli_d(a, IMM6)
+    unsafe { __lsx_vslli_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsra_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vsra_b(a, b)
+pub fn lsx_vsra_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vsra_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsra_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vsra_h(a, b)
+pub fn lsx_vsra_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vsra_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsra_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vsra_w(a, b)
+pub fn lsx_vsra_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vsra_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsra_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsra_d(a, b)
+pub fn lsx_vsra_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsra_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrai_b<const IMM3: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vsrai_b<const IMM3: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vsrai_b(a, IMM3)
+    unsafe { __lsx_vsrai_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrai_h<const IMM4: u32>(a: v8i16) -> v8i16 {
+pub fn lsx_vsrai_h<const IMM4: u32>(a: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsrai_h(a, IMM4)
+    unsafe { __lsx_vsrai_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrai_w<const IMM5: u32>(a: v4i32) -> v4i32 {
+pub fn lsx_vsrai_w<const IMM5: u32>(a: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsrai_w(a, IMM5)
+    unsafe { __lsx_vsrai_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrai_d<const IMM6: u32>(a: v2i64) -> v2i64 {
+pub fn lsx_vsrai_d<const IMM6: u32>(a: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vsrai_d(a, IMM6)
+    unsafe { __lsx_vsrai_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrar_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vsrar_b(a, b)
+pub fn lsx_vsrar_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vsrar_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrar_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vsrar_h(a, b)
+pub fn lsx_vsrar_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vsrar_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrar_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vsrar_w(a, b)
+pub fn lsx_vsrar_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vsrar_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrar_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsrar_d(a, b)
+pub fn lsx_vsrar_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsrar_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrari_b<const IMM3: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vsrari_b<const IMM3: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vsrari_b(a, IMM3)
+    unsafe { __lsx_vsrari_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrari_h<const IMM4: u32>(a: v8i16) -> v8i16 {
+pub fn lsx_vsrari_h<const IMM4: u32>(a: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsrari_h(a, IMM4)
+    unsafe { __lsx_vsrari_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrari_w<const IMM5: u32>(a: v4i32) -> v4i32 {
+pub fn lsx_vsrari_w<const IMM5: u32>(a: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsrari_w(a, IMM5)
+    unsafe { __lsx_vsrari_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrari_d<const IMM6: u32>(a: v2i64) -> v2i64 {
+pub fn lsx_vsrari_d<const IMM6: u32>(a: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vsrari_d(a, IMM6)
+    unsafe { __lsx_vsrari_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrl_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vsrl_b(a, b)
+pub fn lsx_vsrl_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vsrl_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrl_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vsrl_h(a, b)
+pub fn lsx_vsrl_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vsrl_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrl_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vsrl_w(a, b)
+pub fn lsx_vsrl_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vsrl_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrl_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsrl_d(a, b)
+pub fn lsx_vsrl_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsrl_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrli_b<const IMM3: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vsrli_b<const IMM3: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vsrli_b(a, IMM3)
+    unsafe { __lsx_vsrli_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrli_h<const IMM4: u32>(a: v8i16) -> v8i16 {
+pub fn lsx_vsrli_h<const IMM4: u32>(a: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsrli_h(a, IMM4)
+    unsafe { __lsx_vsrli_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrli_w<const IMM5: u32>(a: v4i32) -> v4i32 {
+pub fn lsx_vsrli_w<const IMM5: u32>(a: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsrli_w(a, IMM5)
+    unsafe { __lsx_vsrli_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrli_d<const IMM6: u32>(a: v2i64) -> v2i64 {
+pub fn lsx_vsrli_d<const IMM6: u32>(a: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vsrli_d(a, IMM6)
+    unsafe { __lsx_vsrli_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlr_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vsrlr_b(a, b)
+pub fn lsx_vsrlr_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vsrlr_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlr_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vsrlr_h(a, b)
+pub fn lsx_vsrlr_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vsrlr_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlr_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vsrlr_w(a, b)
+pub fn lsx_vsrlr_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vsrlr_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlr_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsrlr_d(a, b)
+pub fn lsx_vsrlr_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsrlr_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlri_b<const IMM3: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vsrlri_b<const IMM3: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vsrlri_b(a, IMM3)
+    unsafe { __lsx_vsrlri_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlri_h<const IMM4: u32>(a: v8i16) -> v8i16 {
+pub fn lsx_vsrlri_h<const IMM4: u32>(a: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsrlri_h(a, IMM4)
+    unsafe { __lsx_vsrlri_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlri_w<const IMM5: u32>(a: v4i32) -> v4i32 {
+pub fn lsx_vsrlri_w<const IMM5: u32>(a: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsrlri_w(a, IMM5)
+    unsafe { __lsx_vsrlri_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlri_d<const IMM6: u32>(a: v2i64) -> v2i64 {
+pub fn lsx_vsrlri_d<const IMM6: u32>(a: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vsrlri_d(a, IMM6)
+    unsafe { __lsx_vsrlri_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitclr_b(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vbitclr_b(a, b)
+pub fn lsx_vbitclr_b(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vbitclr_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitclr_h(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vbitclr_h(a, b)
+pub fn lsx_vbitclr_h(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vbitclr_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitclr_w(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vbitclr_w(a, b)
+pub fn lsx_vbitclr_w(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vbitclr_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitclr_d(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vbitclr_d(a, b)
+pub fn lsx_vbitclr_d(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vbitclr_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitclri_b<const IMM3: u32>(a: v16u8) -> v16u8 {
+pub fn lsx_vbitclri_b<const IMM3: u32>(a: v16u8) -> v16u8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vbitclri_b(a, IMM3)
+    unsafe { __lsx_vbitclri_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitclri_h<const IMM4: u32>(a: v8u16) -> v8u16 {
+pub fn lsx_vbitclri_h<const IMM4: u32>(a: v8u16) -> v8u16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vbitclri_h(a, IMM4)
+    unsafe { __lsx_vbitclri_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitclri_w<const IMM5: u32>(a: v4u32) -> v4u32 {
+pub fn lsx_vbitclri_w<const IMM5: u32>(a: v4u32) -> v4u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vbitclri_w(a, IMM5)
+    unsafe { __lsx_vbitclri_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitclri_d<const IMM6: u32>(a: v2u64) -> v2u64 {
+pub fn lsx_vbitclri_d<const IMM6: u32>(a: v2u64) -> v2u64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vbitclri_d(a, IMM6)
+    unsafe { __lsx_vbitclri_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitset_b(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vbitset_b(a, b)
+pub fn lsx_vbitset_b(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vbitset_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitset_h(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vbitset_h(a, b)
+pub fn lsx_vbitset_h(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vbitset_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitset_w(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vbitset_w(a, b)
+pub fn lsx_vbitset_w(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vbitset_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitset_d(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vbitset_d(a, b)
+pub fn lsx_vbitset_d(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vbitset_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitseti_b<const IMM3: u32>(a: v16u8) -> v16u8 {
+pub fn lsx_vbitseti_b<const IMM3: u32>(a: v16u8) -> v16u8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vbitseti_b(a, IMM3)
+    unsafe { __lsx_vbitseti_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitseti_h<const IMM4: u32>(a: v8u16) -> v8u16 {
+pub fn lsx_vbitseti_h<const IMM4: u32>(a: v8u16) -> v8u16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vbitseti_h(a, IMM4)
+    unsafe { __lsx_vbitseti_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitseti_w<const IMM5: u32>(a: v4u32) -> v4u32 {
+pub fn lsx_vbitseti_w<const IMM5: u32>(a: v4u32) -> v4u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vbitseti_w(a, IMM5)
+    unsafe { __lsx_vbitseti_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitseti_d<const IMM6: u32>(a: v2u64) -> v2u64 {
+pub fn lsx_vbitseti_d<const IMM6: u32>(a: v2u64) -> v2u64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vbitseti_d(a, IMM6)
+    unsafe { __lsx_vbitseti_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitrev_b(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vbitrev_b(a, b)
+pub fn lsx_vbitrev_b(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vbitrev_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitrev_h(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vbitrev_h(a, b)
+pub fn lsx_vbitrev_h(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vbitrev_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitrev_w(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vbitrev_w(a, b)
+pub fn lsx_vbitrev_w(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vbitrev_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitrev_d(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vbitrev_d(a, b)
+pub fn lsx_vbitrev_d(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vbitrev_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitrevi_b<const IMM3: u32>(a: v16u8) -> v16u8 {
+pub fn lsx_vbitrevi_b<const IMM3: u32>(a: v16u8) -> v16u8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vbitrevi_b(a, IMM3)
+    unsafe { __lsx_vbitrevi_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitrevi_h<const IMM4: u32>(a: v8u16) -> v8u16 {
+pub fn lsx_vbitrevi_h<const IMM4: u32>(a: v8u16) -> v8u16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vbitrevi_h(a, IMM4)
+    unsafe { __lsx_vbitrevi_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitrevi_w<const IMM5: u32>(a: v4u32) -> v4u32 {
+pub fn lsx_vbitrevi_w<const IMM5: u32>(a: v4u32) -> v4u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vbitrevi_w(a, IMM5)
+    unsafe { __lsx_vbitrevi_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitrevi_d<const IMM6: u32>(a: v2u64) -> v2u64 {
+pub fn lsx_vbitrevi_d<const IMM6: u32>(a: v2u64) -> v2u64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vbitrevi_d(a, IMM6)
+    unsafe { __lsx_vbitrevi_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vadd_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vadd_b(a, b)
+pub fn lsx_vadd_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vadd_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vadd_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vadd_h(a, b)
+pub fn lsx_vadd_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vadd_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vadd_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vadd_w(a, b)
+pub fn lsx_vadd_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vadd_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vadd_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vadd_d(a, b)
+pub fn lsx_vadd_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vadd_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddi_bu<const IMM5: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vaddi_bu<const IMM5: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vaddi_bu(a, IMM5)
+    unsafe { __lsx_vaddi_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddi_hu<const IMM5: u32>(a: v8i16) -> v8i16 {
+pub fn lsx_vaddi_hu<const IMM5: u32>(a: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vaddi_hu(a, IMM5)
+    unsafe { __lsx_vaddi_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddi_wu<const IMM5: u32>(a: v4i32) -> v4i32 {
+pub fn lsx_vaddi_wu<const IMM5: u32>(a: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vaddi_wu(a, IMM5)
+    unsafe { __lsx_vaddi_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddi_du<const IMM5: u32>(a: v2i64) -> v2i64 {
+pub fn lsx_vaddi_du<const IMM5: u32>(a: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vaddi_du(a, IMM5)
+    unsafe { __lsx_vaddi_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsub_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vsub_b(a, b)
+pub fn lsx_vsub_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vsub_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsub_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vsub_h(a, b)
+pub fn lsx_vsub_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vsub_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsub_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vsub_w(a, b)
+pub fn lsx_vsub_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vsub_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsub_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsub_d(a, b)
+pub fn lsx_vsub_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsub_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubi_bu<const IMM5: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vsubi_bu<const IMM5: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsubi_bu(a, IMM5)
+    unsafe { __lsx_vsubi_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubi_hu<const IMM5: u32>(a: v8i16) -> v8i16 {
+pub fn lsx_vsubi_hu<const IMM5: u32>(a: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsubi_hu(a, IMM5)
+    unsafe { __lsx_vsubi_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubi_wu<const IMM5: u32>(a: v4i32) -> v4i32 {
+pub fn lsx_vsubi_wu<const IMM5: u32>(a: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsubi_wu(a, IMM5)
+    unsafe { __lsx_vsubi_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubi_du<const IMM5: u32>(a: v2i64) -> v2i64 {
+pub fn lsx_vsubi_du<const IMM5: u32>(a: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsubi_du(a, IMM5)
+    unsafe { __lsx_vsubi_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmax_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vmax_b(a, b)
+pub fn lsx_vmax_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vmax_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmax_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vmax_h(a, b)
+pub fn lsx_vmax_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vmax_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmax_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vmax_w(a, b)
+pub fn lsx_vmax_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vmax_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmax_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vmax_d(a, b)
+pub fn lsx_vmax_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vmax_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaxi_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
+pub fn lsx_vmaxi_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vmaxi_b(a, IMM_S5)
+    unsafe { __lsx_vmaxi_b(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaxi_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
+pub fn lsx_vmaxi_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vmaxi_h(a, IMM_S5)
+    unsafe { __lsx_vmaxi_h(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaxi_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
+pub fn lsx_vmaxi_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vmaxi_w(a, IMM_S5)
+    unsafe { __lsx_vmaxi_w(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaxi_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
+pub fn lsx_vmaxi_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vmaxi_d(a, IMM_S5)
+    unsafe { __lsx_vmaxi_d(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmax_bu(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vmax_bu(a, b)
+pub fn lsx_vmax_bu(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vmax_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmax_hu(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vmax_hu(a, b)
+pub fn lsx_vmax_hu(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vmax_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmax_wu(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vmax_wu(a, b)
+pub fn lsx_vmax_wu(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vmax_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmax_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vmax_du(a, b)
+pub fn lsx_vmax_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vmax_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaxi_bu<const IMM5: u32>(a: v16u8) -> v16u8 {
+pub fn lsx_vmaxi_bu<const IMM5: u32>(a: v16u8) -> v16u8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vmaxi_bu(a, IMM5)
+    unsafe { __lsx_vmaxi_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaxi_hu<const IMM5: u32>(a: v8u16) -> v8u16 {
+pub fn lsx_vmaxi_hu<const IMM5: u32>(a: v8u16) -> v8u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vmaxi_hu(a, IMM5)
+    unsafe { __lsx_vmaxi_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaxi_wu<const IMM5: u32>(a: v4u32) -> v4u32 {
+pub fn lsx_vmaxi_wu<const IMM5: u32>(a: v4u32) -> v4u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vmaxi_wu(a, IMM5)
+    unsafe { __lsx_vmaxi_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaxi_du<const IMM5: u32>(a: v2u64) -> v2u64 {
+pub fn lsx_vmaxi_du<const IMM5: u32>(a: v2u64) -> v2u64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vmaxi_du(a, IMM5)
+    unsafe { __lsx_vmaxi_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmin_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vmin_b(a, b)
+pub fn lsx_vmin_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vmin_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmin_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vmin_h(a, b)
+pub fn lsx_vmin_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vmin_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmin_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vmin_w(a, b)
+pub fn lsx_vmin_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vmin_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmin_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vmin_d(a, b)
+pub fn lsx_vmin_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vmin_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmini_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
+pub fn lsx_vmini_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vmini_b(a, IMM_S5)
+    unsafe { __lsx_vmini_b(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmini_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
+pub fn lsx_vmini_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vmini_h(a, IMM_S5)
+    unsafe { __lsx_vmini_h(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmini_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
+pub fn lsx_vmini_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vmini_w(a, IMM_S5)
+    unsafe { __lsx_vmini_w(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmini_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
+pub fn lsx_vmini_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vmini_d(a, IMM_S5)
+    unsafe { __lsx_vmini_d(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmin_bu(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vmin_bu(a, b)
+pub fn lsx_vmin_bu(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vmin_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmin_hu(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vmin_hu(a, b)
+pub fn lsx_vmin_hu(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vmin_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmin_wu(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vmin_wu(a, b)
+pub fn lsx_vmin_wu(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vmin_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmin_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vmin_du(a, b)
+pub fn lsx_vmin_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vmin_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmini_bu<const IMM5: u32>(a: v16u8) -> v16u8 {
+pub fn lsx_vmini_bu<const IMM5: u32>(a: v16u8) -> v16u8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vmini_bu(a, IMM5)
+    unsafe { __lsx_vmini_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmini_hu<const IMM5: u32>(a: v8u16) -> v8u16 {
+pub fn lsx_vmini_hu<const IMM5: u32>(a: v8u16) -> v8u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vmini_hu(a, IMM5)
+    unsafe { __lsx_vmini_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmini_wu<const IMM5: u32>(a: v4u32) -> v4u32 {
+pub fn lsx_vmini_wu<const IMM5: u32>(a: v4u32) -> v4u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vmini_wu(a, IMM5)
+    unsafe { __lsx_vmini_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmini_du<const IMM5: u32>(a: v2u64) -> v2u64 {
+pub fn lsx_vmini_du<const IMM5: u32>(a: v2u64) -> v2u64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vmini_du(a, IMM5)
+    unsafe { __lsx_vmini_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vseq_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vseq_b(a, b)
+pub fn lsx_vseq_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vseq_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vseq_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vseq_h(a, b)
+pub fn lsx_vseq_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vseq_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vseq_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vseq_w(a, b)
+pub fn lsx_vseq_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vseq_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vseq_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vseq_d(a, b)
+pub fn lsx_vseq_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vseq_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vseqi_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
+pub fn lsx_vseqi_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vseqi_b(a, IMM_S5)
+    unsafe { __lsx_vseqi_b(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vseqi_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
+pub fn lsx_vseqi_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vseqi_h(a, IMM_S5)
+    unsafe { __lsx_vseqi_h(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vseqi_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
+pub fn lsx_vseqi_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vseqi_w(a, IMM_S5)
+    unsafe { __lsx_vseqi_w(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vseqi_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
+pub fn lsx_vseqi_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vseqi_d(a, IMM_S5)
+    unsafe { __lsx_vseqi_d(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslti_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
+pub fn lsx_vslti_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vslti_b(a, IMM_S5)
+    unsafe { __lsx_vslti_b(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslt_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vslt_b(a, b)
+pub fn lsx_vslt_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vslt_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslt_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vslt_h(a, b)
+pub fn lsx_vslt_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vslt_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslt_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vslt_w(a, b)
+pub fn lsx_vslt_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vslt_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslt_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vslt_d(a, b)
+pub fn lsx_vslt_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vslt_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslti_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
+pub fn lsx_vslti_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vslti_h(a, IMM_S5)
+    unsafe { __lsx_vslti_h(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslti_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
+pub fn lsx_vslti_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vslti_w(a, IMM_S5)
+    unsafe { __lsx_vslti_w(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslti_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
+pub fn lsx_vslti_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vslti_d(a, IMM_S5)
+    unsafe { __lsx_vslti_d(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslt_bu(a: v16u8, b: v16u8) -> v16i8 {
-    __lsx_vslt_bu(a, b)
+pub fn lsx_vslt_bu(a: v16u8, b: v16u8) -> v16i8 {
+    unsafe { __lsx_vslt_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslt_hu(a: v8u16, b: v8u16) -> v8i16 {
-    __lsx_vslt_hu(a, b)
+pub fn lsx_vslt_hu(a: v8u16, b: v8u16) -> v8i16 {
+    unsafe { __lsx_vslt_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslt_wu(a: v4u32, b: v4u32) -> v4i32 {
-    __lsx_vslt_wu(a, b)
+pub fn lsx_vslt_wu(a: v4u32, b: v4u32) -> v4i32 {
+    unsafe { __lsx_vslt_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslt_du(a: v2u64, b: v2u64) -> v2i64 {
-    __lsx_vslt_du(a, b)
+pub fn lsx_vslt_du(a: v2u64, b: v2u64) -> v2i64 {
+    unsafe { __lsx_vslt_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslti_bu<const IMM5: u32>(a: v16u8) -> v16i8 {
+pub fn lsx_vslti_bu<const IMM5: u32>(a: v16u8) -> v16i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vslti_bu(a, IMM5)
+    unsafe { __lsx_vslti_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslti_hu<const IMM5: u32>(a: v8u16) -> v8i16 {
+pub fn lsx_vslti_hu<const IMM5: u32>(a: v8u16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vslti_hu(a, IMM5)
+    unsafe { __lsx_vslti_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslti_wu<const IMM5: u32>(a: v4u32) -> v4i32 {
+pub fn lsx_vslti_wu<const IMM5: u32>(a: v4u32) -> v4i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vslti_wu(a, IMM5)
+    unsafe { __lsx_vslti_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslti_du<const IMM5: u32>(a: v2u64) -> v2i64 {
+pub fn lsx_vslti_du<const IMM5: u32>(a: v2u64) -> v2i64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vslti_du(a, IMM5)
+    unsafe { __lsx_vslti_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsle_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vsle_b(a, b)
+pub fn lsx_vsle_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vsle_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsle_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vsle_h(a, b)
+pub fn lsx_vsle_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vsle_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsle_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vsle_w(a, b)
+pub fn lsx_vsle_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vsle_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsle_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsle_d(a, b)
+pub fn lsx_vsle_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsle_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslei_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
+pub fn lsx_vslei_b<const IMM_S5: i32>(a: v16i8) -> v16i8 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vslei_b(a, IMM_S5)
+    unsafe { __lsx_vslei_b(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslei_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
+pub fn lsx_vslei_h<const IMM_S5: i32>(a: v8i16) -> v8i16 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vslei_h(a, IMM_S5)
+    unsafe { __lsx_vslei_h(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslei_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
+pub fn lsx_vslei_w<const IMM_S5: i32>(a: v4i32) -> v4i32 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vslei_w(a, IMM_S5)
+    unsafe { __lsx_vslei_w(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslei_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
+pub fn lsx_vslei_d<const IMM_S5: i32>(a: v2i64) -> v2i64 {
     static_assert_simm_bits!(IMM_S5, 5);
-    __lsx_vslei_d(a, IMM_S5)
+    unsafe { __lsx_vslei_d(a, IMM_S5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsle_bu(a: v16u8, b: v16u8) -> v16i8 {
-    __lsx_vsle_bu(a, b)
+pub fn lsx_vsle_bu(a: v16u8, b: v16u8) -> v16i8 {
+    unsafe { __lsx_vsle_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsle_hu(a: v8u16, b: v8u16) -> v8i16 {
-    __lsx_vsle_hu(a, b)
+pub fn lsx_vsle_hu(a: v8u16, b: v8u16) -> v8i16 {
+    unsafe { __lsx_vsle_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsle_wu(a: v4u32, b: v4u32) -> v4i32 {
-    __lsx_vsle_wu(a, b)
+pub fn lsx_vsle_wu(a: v4u32, b: v4u32) -> v4i32 {
+    unsafe { __lsx_vsle_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsle_du(a: v2u64, b: v2u64) -> v2i64 {
-    __lsx_vsle_du(a, b)
+pub fn lsx_vsle_du(a: v2u64, b: v2u64) -> v2i64 {
+    unsafe { __lsx_vsle_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslei_bu<const IMM5: u32>(a: v16u8) -> v16i8 {
+pub fn lsx_vslei_bu<const IMM5: u32>(a: v16u8) -> v16i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vslei_bu(a, IMM5)
+    unsafe { __lsx_vslei_bu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslei_hu<const IMM5: u32>(a: v8u16) -> v8i16 {
+pub fn lsx_vslei_hu<const IMM5: u32>(a: v8u16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vslei_hu(a, IMM5)
+    unsafe { __lsx_vslei_hu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslei_wu<const IMM5: u32>(a: v4u32) -> v4i32 {
+pub fn lsx_vslei_wu<const IMM5: u32>(a: v4u32) -> v4i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vslei_wu(a, IMM5)
+    unsafe { __lsx_vslei_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vslei_du<const IMM5: u32>(a: v2u64) -> v2i64 {
+pub fn lsx_vslei_du<const IMM5: u32>(a: v2u64) -> v2i64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vslei_du(a, IMM5)
+    unsafe { __lsx_vslei_du(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsat_b<const IMM3: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vsat_b<const IMM3: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vsat_b(a, IMM3)
+    unsafe { __lsx_vsat_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsat_h<const IMM4: u32>(a: v8i16) -> v8i16 {
+pub fn lsx_vsat_h<const IMM4: u32>(a: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsat_h(a, IMM4)
+    unsafe { __lsx_vsat_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsat_w<const IMM5: u32>(a: v4i32) -> v4i32 {
+pub fn lsx_vsat_w<const IMM5: u32>(a: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsat_w(a, IMM5)
+    unsafe { __lsx_vsat_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsat_d<const IMM6: u32>(a: v2i64) -> v2i64 {
+pub fn lsx_vsat_d<const IMM6: u32>(a: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vsat_d(a, IMM6)
+    unsafe { __lsx_vsat_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsat_bu<const IMM3: u32>(a: v16u8) -> v16u8 {
+pub fn lsx_vsat_bu<const IMM3: u32>(a: v16u8) -> v16u8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vsat_bu(a, IMM3)
+    unsafe { __lsx_vsat_bu(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsat_hu<const IMM4: u32>(a: v8u16) -> v8u16 {
+pub fn lsx_vsat_hu<const IMM4: u32>(a: v8u16) -> v8u16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsat_hu(a, IMM4)
+    unsafe { __lsx_vsat_hu(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsat_wu<const IMM5: u32>(a: v4u32) -> v4u32 {
+pub fn lsx_vsat_wu<const IMM5: u32>(a: v4u32) -> v4u32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsat_wu(a, IMM5)
+    unsafe { __lsx_vsat_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsat_du<const IMM6: u32>(a: v2u64) -> v2u64 {
+pub fn lsx_vsat_du<const IMM6: u32>(a: v2u64) -> v2u64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vsat_du(a, IMM6)
+    unsafe { __lsx_vsat_du(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vadda_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vadda_b(a, b)
+pub fn lsx_vadda_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vadda_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vadda_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vadda_h(a, b)
+pub fn lsx_vadda_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vadda_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vadda_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vadda_w(a, b)
+pub fn lsx_vadda_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vadda_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vadda_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vadda_d(a, b)
+pub fn lsx_vadda_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vadda_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsadd_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vsadd_b(a, b)
+pub fn lsx_vsadd_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vsadd_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsadd_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vsadd_h(a, b)
+pub fn lsx_vsadd_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vsadd_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsadd_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vsadd_w(a, b)
+pub fn lsx_vsadd_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vsadd_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsadd_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsadd_d(a, b)
+pub fn lsx_vsadd_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsadd_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsadd_bu(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vsadd_bu(a, b)
+pub fn lsx_vsadd_bu(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vsadd_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsadd_hu(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vsadd_hu(a, b)
+pub fn lsx_vsadd_hu(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vsadd_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsadd_wu(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vsadd_wu(a, b)
+pub fn lsx_vsadd_wu(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vsadd_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsadd_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vsadd_du(a, b)
+pub fn lsx_vsadd_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vsadd_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavg_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vavg_b(a, b)
+pub fn lsx_vavg_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vavg_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavg_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vavg_h(a, b)
+pub fn lsx_vavg_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vavg_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavg_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vavg_w(a, b)
+pub fn lsx_vavg_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vavg_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavg_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vavg_d(a, b)
+pub fn lsx_vavg_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vavg_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavg_bu(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vavg_bu(a, b)
+pub fn lsx_vavg_bu(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vavg_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavg_hu(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vavg_hu(a, b)
+pub fn lsx_vavg_hu(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vavg_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavg_wu(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vavg_wu(a, b)
+pub fn lsx_vavg_wu(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vavg_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavg_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vavg_du(a, b)
+pub fn lsx_vavg_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vavg_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavgr_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vavgr_b(a, b)
+pub fn lsx_vavgr_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vavgr_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavgr_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vavgr_h(a, b)
+pub fn lsx_vavgr_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vavgr_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavgr_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vavgr_w(a, b)
+pub fn lsx_vavgr_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vavgr_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavgr_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vavgr_d(a, b)
+pub fn lsx_vavgr_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vavgr_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavgr_bu(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vavgr_bu(a, b)
+pub fn lsx_vavgr_bu(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vavgr_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavgr_hu(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vavgr_hu(a, b)
+pub fn lsx_vavgr_hu(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vavgr_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavgr_wu(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vavgr_wu(a, b)
+pub fn lsx_vavgr_wu(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vavgr_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vavgr_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vavgr_du(a, b)
+pub fn lsx_vavgr_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vavgr_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssub_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vssub_b(a, b)
+pub fn lsx_vssub_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vssub_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssub_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vssub_h(a, b)
+pub fn lsx_vssub_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vssub_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssub_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vssub_w(a, b)
+pub fn lsx_vssub_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vssub_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssub_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vssub_d(a, b)
+pub fn lsx_vssub_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vssub_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssub_bu(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vssub_bu(a, b)
+pub fn lsx_vssub_bu(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vssub_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssub_hu(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vssub_hu(a, b)
+pub fn lsx_vssub_hu(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vssub_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssub_wu(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vssub_wu(a, b)
+pub fn lsx_vssub_wu(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vssub_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssub_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vssub_du(a, b)
+pub fn lsx_vssub_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vssub_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vabsd_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vabsd_b(a, b)
+pub fn lsx_vabsd_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vabsd_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vabsd_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vabsd_h(a, b)
+pub fn lsx_vabsd_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vabsd_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vabsd_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vabsd_w(a, b)
+pub fn lsx_vabsd_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vabsd_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vabsd_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vabsd_d(a, b)
+pub fn lsx_vabsd_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vabsd_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vabsd_bu(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vabsd_bu(a, b)
+pub fn lsx_vabsd_bu(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vabsd_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vabsd_hu(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vabsd_hu(a, b)
+pub fn lsx_vabsd_hu(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vabsd_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vabsd_wu(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vabsd_wu(a, b)
+pub fn lsx_vabsd_wu(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vabsd_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vabsd_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vabsd_du(a, b)
+pub fn lsx_vabsd_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vabsd_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmul_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vmul_b(a, b)
+pub fn lsx_vmul_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vmul_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmul_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vmul_h(a, b)
+pub fn lsx_vmul_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vmul_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmul_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vmul_w(a, b)
+pub fn lsx_vmul_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vmul_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmul_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vmul_d(a, b)
+pub fn lsx_vmul_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vmul_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmadd_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
-    __lsx_vmadd_b(a, b, c)
+pub fn lsx_vmadd_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
+    unsafe { __lsx_vmadd_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmadd_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
-    __lsx_vmadd_h(a, b, c)
+pub fn lsx_vmadd_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
+    unsafe { __lsx_vmadd_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmadd_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {
-    __lsx_vmadd_w(a, b, c)
+pub fn lsx_vmadd_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {
+    unsafe { __lsx_vmadd_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmadd_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
-    __lsx_vmadd_d(a, b, c)
+pub fn lsx_vmadd_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
+    unsafe { __lsx_vmadd_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmsub_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
-    __lsx_vmsub_b(a, b, c)
+pub fn lsx_vmsub_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
+    unsafe { __lsx_vmsub_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmsub_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
-    __lsx_vmsub_h(a, b, c)
+pub fn lsx_vmsub_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
+    unsafe { __lsx_vmsub_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmsub_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {
-    __lsx_vmsub_w(a, b, c)
+pub fn lsx_vmsub_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {
+    unsafe { __lsx_vmsub_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmsub_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
-    __lsx_vmsub_d(a, b, c)
+pub fn lsx_vmsub_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
+    unsafe { __lsx_vmsub_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vdiv_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vdiv_b(a, b)
+pub fn lsx_vdiv_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vdiv_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vdiv_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vdiv_h(a, b)
+pub fn lsx_vdiv_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vdiv_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vdiv_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vdiv_w(a, b)
+pub fn lsx_vdiv_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vdiv_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vdiv_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vdiv_d(a, b)
+pub fn lsx_vdiv_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vdiv_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vdiv_bu(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vdiv_bu(a, b)
+pub fn lsx_vdiv_bu(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vdiv_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vdiv_hu(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vdiv_hu(a, b)
+pub fn lsx_vdiv_hu(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vdiv_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vdiv_wu(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vdiv_wu(a, b)
+pub fn lsx_vdiv_wu(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vdiv_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vdiv_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vdiv_du(a, b)
+pub fn lsx_vdiv_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vdiv_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhaddw_h_b(a: v16i8, b: v16i8) -> v8i16 {
-    __lsx_vhaddw_h_b(a, b)
+pub fn lsx_vhaddw_h_b(a: v16i8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vhaddw_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhaddw_w_h(a: v8i16, b: v8i16) -> v4i32 {
-    __lsx_vhaddw_w_h(a, b)
+pub fn lsx_vhaddw_w_h(a: v8i16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vhaddw_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhaddw_d_w(a: v4i32, b: v4i32) -> v2i64 {
-    __lsx_vhaddw_d_w(a, b)
+pub fn lsx_vhaddw_d_w(a: v4i32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vhaddw_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhaddw_hu_bu(a: v16u8, b: v16u8) -> v8u16 {
-    __lsx_vhaddw_hu_bu(a, b)
+pub fn lsx_vhaddw_hu_bu(a: v16u8, b: v16u8) -> v8u16 {
+    unsafe { __lsx_vhaddw_hu_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhaddw_wu_hu(a: v8u16, b: v8u16) -> v4u32 {
-    __lsx_vhaddw_wu_hu(a, b)
+pub fn lsx_vhaddw_wu_hu(a: v8u16, b: v8u16) -> v4u32 {
+    unsafe { __lsx_vhaddw_wu_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhaddw_du_wu(a: v4u32, b: v4u32) -> v2u64 {
-    __lsx_vhaddw_du_wu(a, b)
+pub fn lsx_vhaddw_du_wu(a: v4u32, b: v4u32) -> v2u64 {
+    unsafe { __lsx_vhaddw_du_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhsubw_h_b(a: v16i8, b: v16i8) -> v8i16 {
-    __lsx_vhsubw_h_b(a, b)
+pub fn lsx_vhsubw_h_b(a: v16i8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vhsubw_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhsubw_w_h(a: v8i16, b: v8i16) -> v4i32 {
-    __lsx_vhsubw_w_h(a, b)
+pub fn lsx_vhsubw_w_h(a: v8i16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vhsubw_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhsubw_d_w(a: v4i32, b: v4i32) -> v2i64 {
-    __lsx_vhsubw_d_w(a, b)
+pub fn lsx_vhsubw_d_w(a: v4i32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vhsubw_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhsubw_hu_bu(a: v16u8, b: v16u8) -> v8i16 {
-    __lsx_vhsubw_hu_bu(a, b)
+pub fn lsx_vhsubw_hu_bu(a: v16u8, b: v16u8) -> v8i16 {
+    unsafe { __lsx_vhsubw_hu_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhsubw_wu_hu(a: v8u16, b: v8u16) -> v4i32 {
-    __lsx_vhsubw_wu_hu(a, b)
+pub fn lsx_vhsubw_wu_hu(a: v8u16, b: v8u16) -> v4i32 {
+    unsafe { __lsx_vhsubw_wu_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhsubw_du_wu(a: v4u32, b: v4u32) -> v2i64 {
-    __lsx_vhsubw_du_wu(a, b)
+pub fn lsx_vhsubw_du_wu(a: v4u32, b: v4u32) -> v2i64 {
+    unsafe { __lsx_vhsubw_du_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmod_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vmod_b(a, b)
+pub fn lsx_vmod_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vmod_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmod_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vmod_h(a, b)
+pub fn lsx_vmod_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vmod_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmod_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vmod_w(a, b)
+pub fn lsx_vmod_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vmod_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmod_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vmod_d(a, b)
+pub fn lsx_vmod_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vmod_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmod_bu(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vmod_bu(a, b)
+pub fn lsx_vmod_bu(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vmod_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmod_hu(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vmod_hu(a, b)
+pub fn lsx_vmod_hu(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vmod_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmod_wu(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vmod_wu(a, b)
+pub fn lsx_vmod_wu(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vmod_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmod_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vmod_du(a, b)
+pub fn lsx_vmod_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vmod_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplve_b(a: v16i8, b: i32) -> v16i8 {
-    __lsx_vreplve_b(a, b)
+pub fn lsx_vreplve_b(a: v16i8, b: i32) -> v16i8 {
+    unsafe { __lsx_vreplve_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplve_h(a: v8i16, b: i32) -> v8i16 {
-    __lsx_vreplve_h(a, b)
+pub fn lsx_vreplve_h(a: v8i16, b: i32) -> v8i16 {
+    unsafe { __lsx_vreplve_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplve_w(a: v4i32, b: i32) -> v4i32 {
-    __lsx_vreplve_w(a, b)
+pub fn lsx_vreplve_w(a: v4i32, b: i32) -> v4i32 {
+    unsafe { __lsx_vreplve_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplve_d(a: v2i64, b: i32) -> v2i64 {
-    __lsx_vreplve_d(a, b)
+pub fn lsx_vreplve_d(a: v2i64, b: i32) -> v2i64 {
+    unsafe { __lsx_vreplve_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplvei_b<const IMM4: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vreplvei_b<const IMM4: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vreplvei_b(a, IMM4)
+    unsafe { __lsx_vreplvei_b(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplvei_h<const IMM3: u32>(a: v8i16) -> v8i16 {
+pub fn lsx_vreplvei_h<const IMM3: u32>(a: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vreplvei_h(a, IMM3)
+    unsafe { __lsx_vreplvei_h(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplvei_w<const IMM2: u32>(a: v4i32) -> v4i32 {
+pub fn lsx_vreplvei_w<const IMM2: u32>(a: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM2, 2);
-    __lsx_vreplvei_w(a, IMM2)
+    unsafe { __lsx_vreplvei_w(a, IMM2) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplvei_d<const IMM1: u32>(a: v2i64) -> v2i64 {
+pub fn lsx_vreplvei_d<const IMM1: u32>(a: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM1, 1);
-    __lsx_vreplvei_d(a, IMM1)
+    unsafe { __lsx_vreplvei_d(a, IMM1) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickev_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vpickev_b(a, b)
+pub fn lsx_vpickev_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vpickev_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickev_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vpickev_h(a, b)
+pub fn lsx_vpickev_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vpickev_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickev_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vpickev_w(a, b)
+pub fn lsx_vpickev_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vpickev_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickev_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vpickev_d(a, b)
+pub fn lsx_vpickev_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vpickev_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickod_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vpickod_b(a, b)
+pub fn lsx_vpickod_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vpickod_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickod_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vpickod_h(a, b)
+pub fn lsx_vpickod_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vpickod_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickod_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vpickod_w(a, b)
+pub fn lsx_vpickod_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vpickod_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickod_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vpickod_d(a, b)
+pub fn lsx_vpickod_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vpickod_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vilvh_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vilvh_b(a, b)
+pub fn lsx_vilvh_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vilvh_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vilvh_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vilvh_h(a, b)
+pub fn lsx_vilvh_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vilvh_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vilvh_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vilvh_w(a, b)
+pub fn lsx_vilvh_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vilvh_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vilvh_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vilvh_d(a, b)
+pub fn lsx_vilvh_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vilvh_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vilvl_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vilvl_b(a, b)
+pub fn lsx_vilvl_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vilvl_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vilvl_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vilvl_h(a, b)
+pub fn lsx_vilvl_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vilvl_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vilvl_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vilvl_w(a, b)
+pub fn lsx_vilvl_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vilvl_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vilvl_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vilvl_d(a, b)
+pub fn lsx_vilvl_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vilvl_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpackev_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vpackev_b(a, b)
+pub fn lsx_vpackev_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vpackev_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpackev_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vpackev_h(a, b)
+pub fn lsx_vpackev_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vpackev_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpackev_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vpackev_w(a, b)
+pub fn lsx_vpackev_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vpackev_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpackev_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vpackev_d(a, b)
+pub fn lsx_vpackev_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vpackev_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpackod_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vpackod_b(a, b)
+pub fn lsx_vpackod_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vpackod_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpackod_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vpackod_h(a, b)
+pub fn lsx_vpackod_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vpackod_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpackod_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vpackod_w(a, b)
+pub fn lsx_vpackod_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vpackod_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpackod_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vpackod_d(a, b)
+pub fn lsx_vpackod_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vpackod_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vshuf_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
-    __lsx_vshuf_h(a, b, c)
+pub fn lsx_vshuf_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
+    unsafe { __lsx_vshuf_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vshuf_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {
-    __lsx_vshuf_w(a, b, c)
+pub fn lsx_vshuf_w(a: v4i32, b: v4i32, c: v4i32) -> v4i32 {
+    unsafe { __lsx_vshuf_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vshuf_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
-    __lsx_vshuf_d(a, b, c)
+pub fn lsx_vshuf_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
+    unsafe { __lsx_vshuf_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vand_v(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vand_v(a, b)
+pub fn lsx_vand_v(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vand_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vandi_b<const IMM8: u32>(a: v16u8) -> v16u8 {
+pub fn lsx_vandi_b<const IMM8: u32>(a: v16u8) -> v16u8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vandi_b(a, IMM8)
+    unsafe { __lsx_vandi_b(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vor_v(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vor_v(a, b)
+pub fn lsx_vor_v(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vor_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vori_b<const IMM8: u32>(a: v16u8) -> v16u8 {
+pub fn lsx_vori_b<const IMM8: u32>(a: v16u8) -> v16u8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vori_b(a, IMM8)
+    unsafe { __lsx_vori_b(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vnor_v(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vnor_v(a, b)
+pub fn lsx_vnor_v(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vnor_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vnori_b<const IMM8: u32>(a: v16u8) -> v16u8 {
+pub fn lsx_vnori_b<const IMM8: u32>(a: v16u8) -> v16u8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vnori_b(a, IMM8)
+    unsafe { __lsx_vnori_b(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vxor_v(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vxor_v(a, b)
+pub fn lsx_vxor_v(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vxor_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vxori_b<const IMM8: u32>(a: v16u8) -> v16u8 {
+pub fn lsx_vxori_b<const IMM8: u32>(a: v16u8) -> v16u8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vxori_b(a, IMM8)
+    unsafe { __lsx_vxori_b(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitsel_v(a: v16u8, b: v16u8, c: v16u8) -> v16u8 {
-    __lsx_vbitsel_v(a, b, c)
+pub fn lsx_vbitsel_v(a: v16u8, b: v16u8, c: v16u8) -> v16u8 {
+    unsafe { __lsx_vbitsel_v(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbitseli_b<const IMM8: u32>(a: v16u8, b: v16u8) -> v16u8 {
+pub fn lsx_vbitseli_b<const IMM8: u32>(a: v16u8, b: v16u8) -> v16u8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vbitseli_b(a, b, IMM8)
+    unsafe { __lsx_vbitseli_b(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vshuf4i_b<const IMM8: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vshuf4i_b<const IMM8: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vshuf4i_b(a, IMM8)
+    unsafe { __lsx_vshuf4i_b(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vshuf4i_h<const IMM8: u32>(a: v8i16) -> v8i16 {
+pub fn lsx_vshuf4i_h<const IMM8: u32>(a: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vshuf4i_h(a, IMM8)
+    unsafe { __lsx_vshuf4i_h(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vshuf4i_w<const IMM8: u32>(a: v4i32) -> v4i32 {
+pub fn lsx_vshuf4i_w<const IMM8: u32>(a: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vshuf4i_w(a, IMM8)
+    unsafe { __lsx_vshuf4i_w(a, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplgr2vr_b(a: i32) -> v16i8 {
-    __lsx_vreplgr2vr_b(a)
+pub fn lsx_vreplgr2vr_b(a: i32) -> v16i8 {
+    unsafe { __lsx_vreplgr2vr_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplgr2vr_h(a: i32) -> v8i16 {
-    __lsx_vreplgr2vr_h(a)
+pub fn lsx_vreplgr2vr_h(a: i32) -> v8i16 {
+    unsafe { __lsx_vreplgr2vr_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplgr2vr_w(a: i32) -> v4i32 {
-    __lsx_vreplgr2vr_w(a)
+pub fn lsx_vreplgr2vr_w(a: i32) -> v4i32 {
+    unsafe { __lsx_vreplgr2vr_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vreplgr2vr_d(a: i64) -> v2i64 {
-    __lsx_vreplgr2vr_d(a)
+pub fn lsx_vreplgr2vr_d(a: i64) -> v2i64 {
+    unsafe { __lsx_vreplgr2vr_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpcnt_b(a: v16i8) -> v16i8 {
-    __lsx_vpcnt_b(a)
+pub fn lsx_vpcnt_b(a: v16i8) -> v16i8 {
+    unsafe { __lsx_vpcnt_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpcnt_h(a: v8i16) -> v8i16 {
-    __lsx_vpcnt_h(a)
+pub fn lsx_vpcnt_h(a: v8i16) -> v8i16 {
+    unsafe { __lsx_vpcnt_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpcnt_w(a: v4i32) -> v4i32 {
-    __lsx_vpcnt_w(a)
+pub fn lsx_vpcnt_w(a: v4i32) -> v4i32 {
+    unsafe { __lsx_vpcnt_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpcnt_d(a: v2i64) -> v2i64 {
-    __lsx_vpcnt_d(a)
+pub fn lsx_vpcnt_d(a: v2i64) -> v2i64 {
+    unsafe { __lsx_vpcnt_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vclo_b(a: v16i8) -> v16i8 {
-    __lsx_vclo_b(a)
+pub fn lsx_vclo_b(a: v16i8) -> v16i8 {
+    unsafe { __lsx_vclo_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vclo_h(a: v8i16) -> v8i16 {
-    __lsx_vclo_h(a)
+pub fn lsx_vclo_h(a: v8i16) -> v8i16 {
+    unsafe { __lsx_vclo_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vclo_w(a: v4i32) -> v4i32 {
-    __lsx_vclo_w(a)
+pub fn lsx_vclo_w(a: v4i32) -> v4i32 {
+    unsafe { __lsx_vclo_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vclo_d(a: v2i64) -> v2i64 {
-    __lsx_vclo_d(a)
+pub fn lsx_vclo_d(a: v2i64) -> v2i64 {
+    unsafe { __lsx_vclo_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vclz_b(a: v16i8) -> v16i8 {
-    __lsx_vclz_b(a)
+pub fn lsx_vclz_b(a: v16i8) -> v16i8 {
+    unsafe { __lsx_vclz_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vclz_h(a: v8i16) -> v8i16 {
-    __lsx_vclz_h(a)
+pub fn lsx_vclz_h(a: v8i16) -> v8i16 {
+    unsafe { __lsx_vclz_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vclz_w(a: v4i32) -> v4i32 {
-    __lsx_vclz_w(a)
+pub fn lsx_vclz_w(a: v4i32) -> v4i32 {
+    unsafe { __lsx_vclz_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vclz_d(a: v2i64) -> v2i64 {
-    __lsx_vclz_d(a)
+pub fn lsx_vclz_d(a: v2i64) -> v2i64 {
+    unsafe { __lsx_vclz_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickve2gr_b<const IMM4: u32>(a: v16i8) -> i32 {
+pub fn lsx_vpickve2gr_b<const IMM4: u32>(a: v16i8) -> i32 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vpickve2gr_b(a, IMM4)
+    unsafe { __lsx_vpickve2gr_b(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickve2gr_h<const IMM3: u32>(a: v8i16) -> i32 {
+pub fn lsx_vpickve2gr_h<const IMM3: u32>(a: v8i16) -> i32 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vpickve2gr_h(a, IMM3)
+    unsafe { __lsx_vpickve2gr_h(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickve2gr_w<const IMM2: u32>(a: v4i32) -> i32 {
+pub fn lsx_vpickve2gr_w<const IMM2: u32>(a: v4i32) -> i32 {
     static_assert_uimm_bits!(IMM2, 2);
-    __lsx_vpickve2gr_w(a, IMM2)
+    unsafe { __lsx_vpickve2gr_w(a, IMM2) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickve2gr_d<const IMM1: u32>(a: v2i64) -> i64 {
+pub fn lsx_vpickve2gr_d<const IMM1: u32>(a: v2i64) -> i64 {
     static_assert_uimm_bits!(IMM1, 1);
-    __lsx_vpickve2gr_d(a, IMM1)
+    unsafe { __lsx_vpickve2gr_d(a, IMM1) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickve2gr_bu<const IMM4: u32>(a: v16i8) -> u32 {
+pub fn lsx_vpickve2gr_bu<const IMM4: u32>(a: v16i8) -> u32 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vpickve2gr_bu(a, IMM4)
+    unsafe { __lsx_vpickve2gr_bu(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickve2gr_hu<const IMM3: u32>(a: v8i16) -> u32 {
+pub fn lsx_vpickve2gr_hu<const IMM3: u32>(a: v8i16) -> u32 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vpickve2gr_hu(a, IMM3)
+    unsafe { __lsx_vpickve2gr_hu(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickve2gr_wu<const IMM2: u32>(a: v4i32) -> u32 {
+pub fn lsx_vpickve2gr_wu<const IMM2: u32>(a: v4i32) -> u32 {
     static_assert_uimm_bits!(IMM2, 2);
-    __lsx_vpickve2gr_wu(a, IMM2)
+    unsafe { __lsx_vpickve2gr_wu(a, IMM2) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpickve2gr_du<const IMM1: u32>(a: v2i64) -> u64 {
+pub fn lsx_vpickve2gr_du<const IMM1: u32>(a: v2i64) -> u64 {
     static_assert_uimm_bits!(IMM1, 1);
-    __lsx_vpickve2gr_du(a, IMM1)
+    unsafe { __lsx_vpickve2gr_du(a, IMM1) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vinsgr2vr_b<const IMM4: u32>(a: v16i8, b: i32) -> v16i8 {
+pub fn lsx_vinsgr2vr_b<const IMM4: u32>(a: v16i8, b: i32) -> v16i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vinsgr2vr_b(a, b, IMM4)
+    unsafe { __lsx_vinsgr2vr_b(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vinsgr2vr_h<const IMM3: u32>(a: v8i16, b: i32) -> v8i16 {
+pub fn lsx_vinsgr2vr_h<const IMM3: u32>(a: v8i16, b: i32) -> v8i16 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vinsgr2vr_h(a, b, IMM3)
+    unsafe { __lsx_vinsgr2vr_h(a, b, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vinsgr2vr_w<const IMM2: u32>(a: v4i32, b: i32) -> v4i32 {
+pub fn lsx_vinsgr2vr_w<const IMM2: u32>(a: v4i32, b: i32) -> v4i32 {
     static_assert_uimm_bits!(IMM2, 2);
-    __lsx_vinsgr2vr_w(a, b, IMM2)
+    unsafe { __lsx_vinsgr2vr_w(a, b, IMM2) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vinsgr2vr_d<const IMM1: u32>(a: v2i64, b: i64) -> v2i64 {
+pub fn lsx_vinsgr2vr_d<const IMM1: u32>(a: v2i64, b: i64) -> v2i64 {
     static_assert_uimm_bits!(IMM1, 1);
-    __lsx_vinsgr2vr_d(a, b, IMM1)
+    unsafe { __lsx_vinsgr2vr_d(a, b, IMM1) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfadd_s(a: v4f32, b: v4f32) -> v4f32 {
-    __lsx_vfadd_s(a, b)
+pub fn lsx_vfadd_s(a: v4f32, b: v4f32) -> v4f32 {
+    unsafe { __lsx_vfadd_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfadd_d(a: v2f64, b: v2f64) -> v2f64 {
-    __lsx_vfadd_d(a, b)
+pub fn lsx_vfadd_d(a: v2f64, b: v2f64) -> v2f64 {
+    unsafe { __lsx_vfadd_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfsub_s(a: v4f32, b: v4f32) -> v4f32 {
-    __lsx_vfsub_s(a, b)
+pub fn lsx_vfsub_s(a: v4f32, b: v4f32) -> v4f32 {
+    unsafe { __lsx_vfsub_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfsub_d(a: v2f64, b: v2f64) -> v2f64 {
-    __lsx_vfsub_d(a, b)
+pub fn lsx_vfsub_d(a: v2f64, b: v2f64) -> v2f64 {
+    unsafe { __lsx_vfsub_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmul_s(a: v4f32, b: v4f32) -> v4f32 {
-    __lsx_vfmul_s(a, b)
+pub fn lsx_vfmul_s(a: v4f32, b: v4f32) -> v4f32 {
+    unsafe { __lsx_vfmul_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmul_d(a: v2f64, b: v2f64) -> v2f64 {
-    __lsx_vfmul_d(a, b)
+pub fn lsx_vfmul_d(a: v2f64, b: v2f64) -> v2f64 {
+    unsafe { __lsx_vfmul_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfdiv_s(a: v4f32, b: v4f32) -> v4f32 {
-    __lsx_vfdiv_s(a, b)
+pub fn lsx_vfdiv_s(a: v4f32, b: v4f32) -> v4f32 {
+    unsafe { __lsx_vfdiv_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfdiv_d(a: v2f64, b: v2f64) -> v2f64 {
-    __lsx_vfdiv_d(a, b)
+pub fn lsx_vfdiv_d(a: v2f64, b: v2f64) -> v2f64 {
+    unsafe { __lsx_vfdiv_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcvt_h_s(a: v4f32, b: v4f32) -> v8i16 {
-    __lsx_vfcvt_h_s(a, b)
+pub fn lsx_vfcvt_h_s(a: v4f32, b: v4f32) -> v8i16 {
+    unsafe { __lsx_vfcvt_h_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcvt_s_d(a: v2f64, b: v2f64) -> v4f32 {
-    __lsx_vfcvt_s_d(a, b)
+pub fn lsx_vfcvt_s_d(a: v2f64, b: v2f64) -> v4f32 {
+    unsafe { __lsx_vfcvt_s_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmin_s(a: v4f32, b: v4f32) -> v4f32 {
-    __lsx_vfmin_s(a, b)
+pub fn lsx_vfmin_s(a: v4f32, b: v4f32) -> v4f32 {
+    unsafe { __lsx_vfmin_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmin_d(a: v2f64, b: v2f64) -> v2f64 {
-    __lsx_vfmin_d(a, b)
+pub fn lsx_vfmin_d(a: v2f64, b: v2f64) -> v2f64 {
+    unsafe { __lsx_vfmin_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmina_s(a: v4f32, b: v4f32) -> v4f32 {
-    __lsx_vfmina_s(a, b)
+pub fn lsx_vfmina_s(a: v4f32, b: v4f32) -> v4f32 {
+    unsafe { __lsx_vfmina_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmina_d(a: v2f64, b: v2f64) -> v2f64 {
-    __lsx_vfmina_d(a, b)
+pub fn lsx_vfmina_d(a: v2f64, b: v2f64) -> v2f64 {
+    unsafe { __lsx_vfmina_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmax_s(a: v4f32, b: v4f32) -> v4f32 {
-    __lsx_vfmax_s(a, b)
+pub fn lsx_vfmax_s(a: v4f32, b: v4f32) -> v4f32 {
+    unsafe { __lsx_vfmax_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmax_d(a: v2f64, b: v2f64) -> v2f64 {
-    __lsx_vfmax_d(a, b)
+pub fn lsx_vfmax_d(a: v2f64, b: v2f64) -> v2f64 {
+    unsafe { __lsx_vfmax_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmaxa_s(a: v4f32, b: v4f32) -> v4f32 {
-    __lsx_vfmaxa_s(a, b)
+pub fn lsx_vfmaxa_s(a: v4f32, b: v4f32) -> v4f32 {
+    unsafe { __lsx_vfmaxa_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmaxa_d(a: v2f64, b: v2f64) -> v2f64 {
-    __lsx_vfmaxa_d(a, b)
+pub fn lsx_vfmaxa_d(a: v2f64, b: v2f64) -> v2f64 {
+    unsafe { __lsx_vfmaxa_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfclass_s(a: v4f32) -> v4i32 {
-    __lsx_vfclass_s(a)
+pub fn lsx_vfclass_s(a: v4f32) -> v4i32 {
+    unsafe { __lsx_vfclass_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfclass_d(a: v2f64) -> v2i64 {
-    __lsx_vfclass_d(a)
+pub fn lsx_vfclass_d(a: v2f64) -> v2i64 {
+    unsafe { __lsx_vfclass_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfsqrt_s(a: v4f32) -> v4f32 {
-    __lsx_vfsqrt_s(a)
+pub fn lsx_vfsqrt_s(a: v4f32) -> v4f32 {
+    unsafe { __lsx_vfsqrt_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfsqrt_d(a: v2f64) -> v2f64 {
-    __lsx_vfsqrt_d(a)
+pub fn lsx_vfsqrt_d(a: v2f64) -> v2f64 {
+    unsafe { __lsx_vfsqrt_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrecip_s(a: v4f32) -> v4f32 {
-    __lsx_vfrecip_s(a)
+pub fn lsx_vfrecip_s(a: v4f32) -> v4f32 {
+    unsafe { __lsx_vfrecip_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrecip_d(a: v2f64) -> v2f64 {
-    __lsx_vfrecip_d(a)
+pub fn lsx_vfrecip_d(a: v2f64) -> v2f64 {
+    unsafe { __lsx_vfrecip_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx,frecipe")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrecipe_s(a: v4f32) -> v4f32 {
-    __lsx_vfrecipe_s(a)
+pub fn lsx_vfrecipe_s(a: v4f32) -> v4f32 {
+    unsafe { __lsx_vfrecipe_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx,frecipe")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrecipe_d(a: v2f64) -> v2f64 {
-    __lsx_vfrecipe_d(a)
+pub fn lsx_vfrecipe_d(a: v2f64) -> v2f64 {
+    unsafe { __lsx_vfrecipe_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx,frecipe")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrsqrte_s(a: v4f32) -> v4f32 {
-    __lsx_vfrsqrte_s(a)
+pub fn lsx_vfrsqrte_s(a: v4f32) -> v4f32 {
+    unsafe { __lsx_vfrsqrte_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx,frecipe")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrsqrte_d(a: v2f64) -> v2f64 {
-    __lsx_vfrsqrte_d(a)
+pub fn lsx_vfrsqrte_d(a: v2f64) -> v2f64 {
+    unsafe { __lsx_vfrsqrte_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrint_s(a: v4f32) -> v4f32 {
-    __lsx_vfrint_s(a)
+pub fn lsx_vfrint_s(a: v4f32) -> v4f32 {
+    unsafe { __lsx_vfrint_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrint_d(a: v2f64) -> v2f64 {
-    __lsx_vfrint_d(a)
+pub fn lsx_vfrint_d(a: v2f64) -> v2f64 {
+    unsafe { __lsx_vfrint_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrsqrt_s(a: v4f32) -> v4f32 {
-    __lsx_vfrsqrt_s(a)
+pub fn lsx_vfrsqrt_s(a: v4f32) -> v4f32 {
+    unsafe { __lsx_vfrsqrt_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrsqrt_d(a: v2f64) -> v2f64 {
-    __lsx_vfrsqrt_d(a)
+pub fn lsx_vfrsqrt_d(a: v2f64) -> v2f64 {
+    unsafe { __lsx_vfrsqrt_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vflogb_s(a: v4f32) -> v4f32 {
-    __lsx_vflogb_s(a)
+pub fn lsx_vflogb_s(a: v4f32) -> v4f32 {
+    unsafe { __lsx_vflogb_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vflogb_d(a: v2f64) -> v2f64 {
-    __lsx_vflogb_d(a)
+pub fn lsx_vflogb_d(a: v2f64) -> v2f64 {
+    unsafe { __lsx_vflogb_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcvth_s_h(a: v8i16) -> v4f32 {
-    __lsx_vfcvth_s_h(a)
+pub fn lsx_vfcvth_s_h(a: v8i16) -> v4f32 {
+    unsafe { __lsx_vfcvth_s_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcvth_d_s(a: v4f32) -> v2f64 {
-    __lsx_vfcvth_d_s(a)
+pub fn lsx_vfcvth_d_s(a: v4f32) -> v2f64 {
+    unsafe { __lsx_vfcvth_d_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcvtl_s_h(a: v8i16) -> v4f32 {
-    __lsx_vfcvtl_s_h(a)
+pub fn lsx_vfcvtl_s_h(a: v8i16) -> v4f32 {
+    unsafe { __lsx_vfcvtl_s_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcvtl_d_s(a: v4f32) -> v2f64 {
-    __lsx_vfcvtl_d_s(a)
+pub fn lsx_vfcvtl_d_s(a: v4f32) -> v2f64 {
+    unsafe { __lsx_vfcvtl_d_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftint_w_s(a: v4f32) -> v4i32 {
-    __lsx_vftint_w_s(a)
+pub fn lsx_vftint_w_s(a: v4f32) -> v4i32 {
+    unsafe { __lsx_vftint_w_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftint_l_d(a: v2f64) -> v2i64 {
-    __lsx_vftint_l_d(a)
+pub fn lsx_vftint_l_d(a: v2f64) -> v2i64 {
+    unsafe { __lsx_vftint_l_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftint_wu_s(a: v4f32) -> v4u32 {
-    __lsx_vftint_wu_s(a)
+pub fn lsx_vftint_wu_s(a: v4f32) -> v4u32 {
+    unsafe { __lsx_vftint_wu_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftint_lu_d(a: v2f64) -> v2u64 {
-    __lsx_vftint_lu_d(a)
+pub fn lsx_vftint_lu_d(a: v2f64) -> v2u64 {
+    unsafe { __lsx_vftint_lu_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrz_w_s(a: v4f32) -> v4i32 {
-    __lsx_vftintrz_w_s(a)
+pub fn lsx_vftintrz_w_s(a: v4f32) -> v4i32 {
+    unsafe { __lsx_vftintrz_w_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrz_l_d(a: v2f64) -> v2i64 {
-    __lsx_vftintrz_l_d(a)
+pub fn lsx_vftintrz_l_d(a: v2f64) -> v2i64 {
+    unsafe { __lsx_vftintrz_l_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrz_wu_s(a: v4f32) -> v4u32 {
-    __lsx_vftintrz_wu_s(a)
+pub fn lsx_vftintrz_wu_s(a: v4f32) -> v4u32 {
+    unsafe { __lsx_vftintrz_wu_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrz_lu_d(a: v2f64) -> v2u64 {
-    __lsx_vftintrz_lu_d(a)
+pub fn lsx_vftintrz_lu_d(a: v2f64) -> v2u64 {
+    unsafe { __lsx_vftintrz_lu_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vffint_s_w(a: v4i32) -> v4f32 {
-    __lsx_vffint_s_w(a)
+pub fn lsx_vffint_s_w(a: v4i32) -> v4f32 {
+    unsafe { __lsx_vffint_s_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vffint_d_l(a: v2i64) -> v2f64 {
-    __lsx_vffint_d_l(a)
+pub fn lsx_vffint_d_l(a: v2i64) -> v2f64 {
+    unsafe { __lsx_vffint_d_l(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vffint_s_wu(a: v4u32) -> v4f32 {
-    __lsx_vffint_s_wu(a)
+pub fn lsx_vffint_s_wu(a: v4u32) -> v4f32 {
+    unsafe { __lsx_vffint_s_wu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vffint_d_lu(a: v2u64) -> v2f64 {
-    __lsx_vffint_d_lu(a)
+pub fn lsx_vffint_d_lu(a: v2u64) -> v2f64 {
+    unsafe { __lsx_vffint_d_lu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vandn_v(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vandn_v(a, b)
+pub fn lsx_vandn_v(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vandn_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vneg_b(a: v16i8) -> v16i8 {
-    __lsx_vneg_b(a)
+pub fn lsx_vneg_b(a: v16i8) -> v16i8 {
+    unsafe { __lsx_vneg_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vneg_h(a: v8i16) -> v8i16 {
-    __lsx_vneg_h(a)
+pub fn lsx_vneg_h(a: v8i16) -> v8i16 {
+    unsafe { __lsx_vneg_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vneg_w(a: v4i32) -> v4i32 {
-    __lsx_vneg_w(a)
+pub fn lsx_vneg_w(a: v4i32) -> v4i32 {
+    unsafe { __lsx_vneg_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vneg_d(a: v2i64) -> v2i64 {
-    __lsx_vneg_d(a)
+pub fn lsx_vneg_d(a: v2i64) -> v2i64 {
+    unsafe { __lsx_vneg_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmuh_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vmuh_b(a, b)
+pub fn lsx_vmuh_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vmuh_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmuh_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vmuh_h(a, b)
+pub fn lsx_vmuh_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vmuh_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmuh_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vmuh_w(a, b)
+pub fn lsx_vmuh_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vmuh_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmuh_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vmuh_d(a, b)
+pub fn lsx_vmuh_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vmuh_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmuh_bu(a: v16u8, b: v16u8) -> v16u8 {
-    __lsx_vmuh_bu(a, b)
+pub fn lsx_vmuh_bu(a: v16u8, b: v16u8) -> v16u8 {
+    unsafe { __lsx_vmuh_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmuh_hu(a: v8u16, b: v8u16) -> v8u16 {
-    __lsx_vmuh_hu(a, b)
+pub fn lsx_vmuh_hu(a: v8u16, b: v8u16) -> v8u16 {
+    unsafe { __lsx_vmuh_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmuh_wu(a: v4u32, b: v4u32) -> v4u32 {
-    __lsx_vmuh_wu(a, b)
+pub fn lsx_vmuh_wu(a: v4u32, b: v4u32) -> v4u32 {
+    unsafe { __lsx_vmuh_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmuh_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vmuh_du(a, b)
+pub fn lsx_vmuh_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vmuh_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsllwil_h_b<const IMM3: u32>(a: v16i8) -> v8i16 {
+pub fn lsx_vsllwil_h_b<const IMM3: u32>(a: v16i8) -> v8i16 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vsllwil_h_b(a, IMM3)
+    unsafe { __lsx_vsllwil_h_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsllwil_w_h<const IMM4: u32>(a: v8i16) -> v4i32 {
+pub fn lsx_vsllwil_w_h<const IMM4: u32>(a: v8i16) -> v4i32 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsllwil_w_h(a, IMM4)
+    unsafe { __lsx_vsllwil_w_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsllwil_d_w<const IMM5: u32>(a: v4i32) -> v2i64 {
+pub fn lsx_vsllwil_d_w<const IMM5: u32>(a: v4i32) -> v2i64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsllwil_d_w(a, IMM5)
+    unsafe { __lsx_vsllwil_d_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsllwil_hu_bu<const IMM3: u32>(a: v16u8) -> v8u16 {
+pub fn lsx_vsllwil_hu_bu<const IMM3: u32>(a: v16u8) -> v8u16 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vsllwil_hu_bu(a, IMM3)
+    unsafe { __lsx_vsllwil_hu_bu(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsllwil_wu_hu<const IMM4: u32>(a: v8u16) -> v4u32 {
+pub fn lsx_vsllwil_wu_hu<const IMM4: u32>(a: v8u16) -> v4u32 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsllwil_wu_hu(a, IMM4)
+    unsafe { __lsx_vsllwil_wu_hu(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsllwil_du_wu<const IMM5: u32>(a: v4u32) -> v2u64 {
+pub fn lsx_vsllwil_du_wu<const IMM5: u32>(a: v4u32) -> v2u64 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsllwil_du_wu(a, IMM5)
+    unsafe { __lsx_vsllwil_du_wu(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsran_b_h(a: v8i16, b: v8i16) -> v16i8 {
-    __lsx_vsran_b_h(a, b)
+pub fn lsx_vsran_b_h(a: v8i16, b: v8i16) -> v16i8 {
+    unsafe { __lsx_vsran_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsran_h_w(a: v4i32, b: v4i32) -> v8i16 {
-    __lsx_vsran_h_w(a, b)
+pub fn lsx_vsran_h_w(a: v4i32, b: v4i32) -> v8i16 {
+    unsafe { __lsx_vsran_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsran_w_d(a: v2i64, b: v2i64) -> v4i32 {
-    __lsx_vsran_w_d(a, b)
+pub fn lsx_vsran_w_d(a: v2i64, b: v2i64) -> v4i32 {
+    unsafe { __lsx_vsran_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssran_b_h(a: v8i16, b: v8i16) -> v16i8 {
-    __lsx_vssran_b_h(a, b)
+pub fn lsx_vssran_b_h(a: v8i16, b: v8i16) -> v16i8 {
+    unsafe { __lsx_vssran_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssran_h_w(a: v4i32, b: v4i32) -> v8i16 {
-    __lsx_vssran_h_w(a, b)
+pub fn lsx_vssran_h_w(a: v4i32, b: v4i32) -> v8i16 {
+    unsafe { __lsx_vssran_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssran_w_d(a: v2i64, b: v2i64) -> v4i32 {
-    __lsx_vssran_w_d(a, b)
+pub fn lsx_vssran_w_d(a: v2i64, b: v2i64) -> v4i32 {
+    unsafe { __lsx_vssran_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssran_bu_h(a: v8u16, b: v8u16) -> v16u8 {
-    __lsx_vssran_bu_h(a, b)
+pub fn lsx_vssran_bu_h(a: v8u16, b: v8u16) -> v16u8 {
+    unsafe { __lsx_vssran_bu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssran_hu_w(a: v4u32, b: v4u32) -> v8u16 {
-    __lsx_vssran_hu_w(a, b)
+pub fn lsx_vssran_hu_w(a: v4u32, b: v4u32) -> v8u16 {
+    unsafe { __lsx_vssran_hu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssran_wu_d(a: v2u64, b: v2u64) -> v4u32 {
-    __lsx_vssran_wu_d(a, b)
+pub fn lsx_vssran_wu_d(a: v2u64, b: v2u64) -> v4u32 {
+    unsafe { __lsx_vssran_wu_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrarn_b_h(a: v8i16, b: v8i16) -> v16i8 {
-    __lsx_vsrarn_b_h(a, b)
+pub fn lsx_vsrarn_b_h(a: v8i16, b: v8i16) -> v16i8 {
+    unsafe { __lsx_vsrarn_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrarn_h_w(a: v4i32, b: v4i32) -> v8i16 {
-    __lsx_vsrarn_h_w(a, b)
+pub fn lsx_vsrarn_h_w(a: v4i32, b: v4i32) -> v8i16 {
+    unsafe { __lsx_vsrarn_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrarn_w_d(a: v2i64, b: v2i64) -> v4i32 {
-    __lsx_vsrarn_w_d(a, b)
+pub fn lsx_vsrarn_w_d(a: v2i64, b: v2i64) -> v4i32 {
+    unsafe { __lsx_vsrarn_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarn_b_h(a: v8i16, b: v8i16) -> v16i8 {
-    __lsx_vssrarn_b_h(a, b)
+pub fn lsx_vssrarn_b_h(a: v8i16, b: v8i16) -> v16i8 {
+    unsafe { __lsx_vssrarn_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarn_h_w(a: v4i32, b: v4i32) -> v8i16 {
-    __lsx_vssrarn_h_w(a, b)
+pub fn lsx_vssrarn_h_w(a: v4i32, b: v4i32) -> v8i16 {
+    unsafe { __lsx_vssrarn_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarn_w_d(a: v2i64, b: v2i64) -> v4i32 {
-    __lsx_vssrarn_w_d(a, b)
+pub fn lsx_vssrarn_w_d(a: v2i64, b: v2i64) -> v4i32 {
+    unsafe { __lsx_vssrarn_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarn_bu_h(a: v8u16, b: v8u16) -> v16u8 {
-    __lsx_vssrarn_bu_h(a, b)
+pub fn lsx_vssrarn_bu_h(a: v8u16, b: v8u16) -> v16u8 {
+    unsafe { __lsx_vssrarn_bu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarn_hu_w(a: v4u32, b: v4u32) -> v8u16 {
-    __lsx_vssrarn_hu_w(a, b)
+pub fn lsx_vssrarn_hu_w(a: v4u32, b: v4u32) -> v8u16 {
+    unsafe { __lsx_vssrarn_hu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarn_wu_d(a: v2u64, b: v2u64) -> v4u32 {
-    __lsx_vssrarn_wu_d(a, b)
+pub fn lsx_vssrarn_wu_d(a: v2u64, b: v2u64) -> v4u32 {
+    unsafe { __lsx_vssrarn_wu_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrln_b_h(a: v8i16, b: v8i16) -> v16i8 {
-    __lsx_vsrln_b_h(a, b)
+pub fn lsx_vsrln_b_h(a: v8i16, b: v8i16) -> v16i8 {
+    unsafe { __lsx_vsrln_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrln_h_w(a: v4i32, b: v4i32) -> v8i16 {
-    __lsx_vsrln_h_w(a, b)
+pub fn lsx_vsrln_h_w(a: v4i32, b: v4i32) -> v8i16 {
+    unsafe { __lsx_vsrln_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrln_w_d(a: v2i64, b: v2i64) -> v4i32 {
-    __lsx_vsrln_w_d(a, b)
+pub fn lsx_vsrln_w_d(a: v2i64, b: v2i64) -> v4i32 {
+    unsafe { __lsx_vsrln_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrln_bu_h(a: v8u16, b: v8u16) -> v16u8 {
-    __lsx_vssrln_bu_h(a, b)
+pub fn lsx_vssrln_bu_h(a: v8u16, b: v8u16) -> v16u8 {
+    unsafe { __lsx_vssrln_bu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrln_hu_w(a: v4u32, b: v4u32) -> v8u16 {
-    __lsx_vssrln_hu_w(a, b)
+pub fn lsx_vssrln_hu_w(a: v4u32, b: v4u32) -> v8u16 {
+    unsafe { __lsx_vssrln_hu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrln_wu_d(a: v2u64, b: v2u64) -> v4u32 {
-    __lsx_vssrln_wu_d(a, b)
+pub fn lsx_vssrln_wu_d(a: v2u64, b: v2u64) -> v4u32 {
+    unsafe { __lsx_vssrln_wu_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlrn_b_h(a: v8i16, b: v8i16) -> v16i8 {
-    __lsx_vsrlrn_b_h(a, b)
+pub fn lsx_vsrlrn_b_h(a: v8i16, b: v8i16) -> v16i8 {
+    unsafe { __lsx_vsrlrn_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlrn_h_w(a: v4i32, b: v4i32) -> v8i16 {
-    __lsx_vsrlrn_h_w(a, b)
+pub fn lsx_vsrlrn_h_w(a: v4i32, b: v4i32) -> v8i16 {
+    unsafe { __lsx_vsrlrn_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlrn_w_d(a: v2i64, b: v2i64) -> v4i32 {
-    __lsx_vsrlrn_w_d(a, b)
+pub fn lsx_vsrlrn_w_d(a: v2i64, b: v2i64) -> v4i32 {
+    unsafe { __lsx_vsrlrn_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrn_bu_h(a: v8u16, b: v8u16) -> v16u8 {
-    __lsx_vssrlrn_bu_h(a, b)
+pub fn lsx_vssrlrn_bu_h(a: v8u16, b: v8u16) -> v16u8 {
+    unsafe { __lsx_vssrlrn_bu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrn_hu_w(a: v4u32, b: v4u32) -> v8u16 {
-    __lsx_vssrlrn_hu_w(a, b)
+pub fn lsx_vssrlrn_hu_w(a: v4u32, b: v4u32) -> v8u16 {
+    unsafe { __lsx_vssrlrn_hu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrn_wu_d(a: v2u64, b: v2u64) -> v4u32 {
-    __lsx_vssrlrn_wu_d(a, b)
+pub fn lsx_vssrlrn_wu_d(a: v2u64, b: v2u64) -> v4u32 {
+    unsafe { __lsx_vssrlrn_wu_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrstpi_b<const IMM5: u32>(a: v16i8, b: v16i8) -> v16i8 {
+pub fn lsx_vfrstpi_b<const IMM5: u32>(a: v16i8, b: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vfrstpi_b(a, b, IMM5)
+    unsafe { __lsx_vfrstpi_b(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrstpi_h<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
+pub fn lsx_vfrstpi_h<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vfrstpi_h(a, b, IMM5)
+    unsafe { __lsx_vfrstpi_h(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrstp_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
-    __lsx_vfrstp_b(a, b, c)
+pub fn lsx_vfrstp_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
+    unsafe { __lsx_vfrstp_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrstp_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
-    __lsx_vfrstp_h(a, b, c)
+pub fn lsx_vfrstp_h(a: v8i16, b: v8i16, c: v8i16) -> v8i16 {
+    unsafe { __lsx_vfrstp_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vshuf4i_d<const IMM8: u32>(a: v2i64, b: v2i64) -> v2i64 {
+pub fn lsx_vshuf4i_d<const IMM8: u32>(a: v2i64, b: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vshuf4i_d(a, b, IMM8)
+    unsafe { __lsx_vshuf4i_d(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbsrl_v<const IMM5: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vbsrl_v<const IMM5: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vbsrl_v(a, IMM5)
+    unsafe { __lsx_vbsrl_v(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vbsll_v<const IMM5: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vbsll_v<const IMM5: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vbsll_v(a, IMM5)
+    unsafe { __lsx_vbsll_v(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vextrins_b<const IMM8: u32>(a: v16i8, b: v16i8) -> v16i8 {
+pub fn lsx_vextrins_b<const IMM8: u32>(a: v16i8, b: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vextrins_b(a, b, IMM8)
+    unsafe { __lsx_vextrins_b(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vextrins_h<const IMM8: u32>(a: v8i16, b: v8i16) -> v8i16 {
+pub fn lsx_vextrins_h<const IMM8: u32>(a: v8i16, b: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vextrins_h(a, b, IMM8)
+    unsafe { __lsx_vextrins_h(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vextrins_w<const IMM8: u32>(a: v4i32, b: v4i32) -> v4i32 {
+pub fn lsx_vextrins_w<const IMM8: u32>(a: v4i32, b: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vextrins_w(a, b, IMM8)
+    unsafe { __lsx_vextrins_w(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vextrins_d<const IMM8: u32>(a: v2i64, b: v2i64) -> v2i64 {
+pub fn lsx_vextrins_d<const IMM8: u32>(a: v2i64, b: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vextrins_d(a, b, IMM8)
+    unsafe { __lsx_vextrins_d(a, b, IMM8) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmskltz_b(a: v16i8) -> v16i8 {
-    __lsx_vmskltz_b(a)
+pub fn lsx_vmskltz_b(a: v16i8) -> v16i8 {
+    unsafe { __lsx_vmskltz_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmskltz_h(a: v8i16) -> v8i16 {
-    __lsx_vmskltz_h(a)
+pub fn lsx_vmskltz_h(a: v8i16) -> v8i16 {
+    unsafe { __lsx_vmskltz_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmskltz_w(a: v4i32) -> v4i32 {
-    __lsx_vmskltz_w(a)
+pub fn lsx_vmskltz_w(a: v4i32) -> v4i32 {
+    unsafe { __lsx_vmskltz_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmskltz_d(a: v2i64) -> v2i64 {
-    __lsx_vmskltz_d(a)
+pub fn lsx_vmskltz_d(a: v2i64) -> v2i64 {
+    unsafe { __lsx_vmskltz_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsigncov_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vsigncov_b(a, b)
+pub fn lsx_vsigncov_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vsigncov_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsigncov_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vsigncov_h(a, b)
+pub fn lsx_vsigncov_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vsigncov_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsigncov_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vsigncov_w(a, b)
+pub fn lsx_vsigncov_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vsigncov_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsigncov_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsigncov_d(a, b)
+pub fn lsx_vsigncov_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsigncov_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmadd_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
-    __lsx_vfmadd_s(a, b, c)
+pub fn lsx_vfmadd_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
+    unsafe { __lsx_vfmadd_s(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmadd_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
-    __lsx_vfmadd_d(a, b, c)
+pub fn lsx_vfmadd_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
+    unsafe { __lsx_vfmadd_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmsub_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
-    __lsx_vfmsub_s(a, b, c)
+pub fn lsx_vfmsub_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
+    unsafe { __lsx_vfmsub_s(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfmsub_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
-    __lsx_vfmsub_d(a, b, c)
+pub fn lsx_vfmsub_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
+    unsafe { __lsx_vfmsub_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfnmadd_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
-    __lsx_vfnmadd_s(a, b, c)
+pub fn lsx_vfnmadd_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
+    unsafe { __lsx_vfnmadd_s(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfnmadd_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
-    __lsx_vfnmadd_d(a, b, c)
+pub fn lsx_vfnmadd_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
+    unsafe { __lsx_vfnmadd_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfnmsub_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
-    __lsx_vfnmsub_s(a, b, c)
+pub fn lsx_vfnmsub_s(a: v4f32, b: v4f32, c: v4f32) -> v4f32 {
+    unsafe { __lsx_vfnmsub_s(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfnmsub_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
-    __lsx_vfnmsub_d(a, b, c)
+pub fn lsx_vfnmsub_d(a: v2f64, b: v2f64, c: v2f64) -> v2f64 {
+    unsafe { __lsx_vfnmsub_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrne_w_s(a: v4f32) -> v4i32 {
-    __lsx_vftintrne_w_s(a)
+pub fn lsx_vftintrne_w_s(a: v4f32) -> v4i32 {
+    unsafe { __lsx_vftintrne_w_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrne_l_d(a: v2f64) -> v2i64 {
-    __lsx_vftintrne_l_d(a)
+pub fn lsx_vftintrne_l_d(a: v2f64) -> v2i64 {
+    unsafe { __lsx_vftintrne_l_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrp_w_s(a: v4f32) -> v4i32 {
-    __lsx_vftintrp_w_s(a)
+pub fn lsx_vftintrp_w_s(a: v4f32) -> v4i32 {
+    unsafe { __lsx_vftintrp_w_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrp_l_d(a: v2f64) -> v2i64 {
-    __lsx_vftintrp_l_d(a)
+pub fn lsx_vftintrp_l_d(a: v2f64) -> v2i64 {
+    unsafe { __lsx_vftintrp_l_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrm_w_s(a: v4f32) -> v4i32 {
-    __lsx_vftintrm_w_s(a)
+pub fn lsx_vftintrm_w_s(a: v4f32) -> v4i32 {
+    unsafe { __lsx_vftintrm_w_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrm_l_d(a: v2f64) -> v2i64 {
-    __lsx_vftintrm_l_d(a)
+pub fn lsx_vftintrm_l_d(a: v2f64) -> v2i64 {
+    unsafe { __lsx_vftintrm_l_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftint_w_d(a: v2f64, b: v2f64) -> v4i32 {
-    __lsx_vftint_w_d(a, b)
+pub fn lsx_vftint_w_d(a: v2f64, b: v2f64) -> v4i32 {
+    unsafe { __lsx_vftint_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vffint_s_l(a: v2i64, b: v2i64) -> v4f32 {
-    __lsx_vffint_s_l(a, b)
+pub fn lsx_vffint_s_l(a: v2i64, b: v2i64) -> v4f32 {
+    unsafe { __lsx_vffint_s_l(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrz_w_d(a: v2f64, b: v2f64) -> v4i32 {
-    __lsx_vftintrz_w_d(a, b)
+pub fn lsx_vftintrz_w_d(a: v2f64, b: v2f64) -> v4i32 {
+    unsafe { __lsx_vftintrz_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrp_w_d(a: v2f64, b: v2f64) -> v4i32 {
-    __lsx_vftintrp_w_d(a, b)
+pub fn lsx_vftintrp_w_d(a: v2f64, b: v2f64) -> v4i32 {
+    unsafe { __lsx_vftintrp_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrm_w_d(a: v2f64, b: v2f64) -> v4i32 {
-    __lsx_vftintrm_w_d(a, b)
+pub fn lsx_vftintrm_w_d(a: v2f64, b: v2f64) -> v4i32 {
+    unsafe { __lsx_vftintrm_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrne_w_d(a: v2f64, b: v2f64) -> v4i32 {
-    __lsx_vftintrne_w_d(a, b)
+pub fn lsx_vftintrne_w_d(a: v2f64, b: v2f64) -> v4i32 {
+    unsafe { __lsx_vftintrne_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintl_l_s(a: v4f32) -> v2i64 {
-    __lsx_vftintl_l_s(a)
+pub fn lsx_vftintl_l_s(a: v4f32) -> v2i64 {
+    unsafe { __lsx_vftintl_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftinth_l_s(a: v4f32) -> v2i64 {
-    __lsx_vftinth_l_s(a)
+pub fn lsx_vftinth_l_s(a: v4f32) -> v2i64 {
+    unsafe { __lsx_vftinth_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vffinth_d_w(a: v4i32) -> v2f64 {
-    __lsx_vffinth_d_w(a)
+pub fn lsx_vffinth_d_w(a: v4i32) -> v2f64 {
+    unsafe { __lsx_vffinth_d_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vffintl_d_w(a: v4i32) -> v2f64 {
-    __lsx_vffintl_d_w(a)
+pub fn lsx_vffintl_d_w(a: v4i32) -> v2f64 {
+    unsafe { __lsx_vffintl_d_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrzl_l_s(a: v4f32) -> v2i64 {
-    __lsx_vftintrzl_l_s(a)
+pub fn lsx_vftintrzl_l_s(a: v4f32) -> v2i64 {
+    unsafe { __lsx_vftintrzl_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrzh_l_s(a: v4f32) -> v2i64 {
-    __lsx_vftintrzh_l_s(a)
+pub fn lsx_vftintrzh_l_s(a: v4f32) -> v2i64 {
+    unsafe { __lsx_vftintrzh_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrpl_l_s(a: v4f32) -> v2i64 {
-    __lsx_vftintrpl_l_s(a)
+pub fn lsx_vftintrpl_l_s(a: v4f32) -> v2i64 {
+    unsafe { __lsx_vftintrpl_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrph_l_s(a: v4f32) -> v2i64 {
-    __lsx_vftintrph_l_s(a)
+pub fn lsx_vftintrph_l_s(a: v4f32) -> v2i64 {
+    unsafe { __lsx_vftintrph_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrml_l_s(a: v4f32) -> v2i64 {
-    __lsx_vftintrml_l_s(a)
+pub fn lsx_vftintrml_l_s(a: v4f32) -> v2i64 {
+    unsafe { __lsx_vftintrml_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrmh_l_s(a: v4f32) -> v2i64 {
-    __lsx_vftintrmh_l_s(a)
+pub fn lsx_vftintrmh_l_s(a: v4f32) -> v2i64 {
+    unsafe { __lsx_vftintrmh_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrnel_l_s(a: v4f32) -> v2i64 {
-    __lsx_vftintrnel_l_s(a)
+pub fn lsx_vftintrnel_l_s(a: v4f32) -> v2i64 {
+    unsafe { __lsx_vftintrnel_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vftintrneh_l_s(a: v4f32) -> v2i64 {
-    __lsx_vftintrneh_l_s(a)
+pub fn lsx_vftintrneh_l_s(a: v4f32) -> v2i64 {
+    unsafe { __lsx_vftintrneh_l_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrintrne_s(a: v4f32) -> v4f32 {
-    __lsx_vfrintrne_s(a)
+pub fn lsx_vfrintrne_s(a: v4f32) -> v4f32 {
+    unsafe { __lsx_vfrintrne_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrintrne_d(a: v2f64) -> v2f64 {
-    __lsx_vfrintrne_d(a)
+pub fn lsx_vfrintrne_d(a: v2f64) -> v2f64 {
+    unsafe { __lsx_vfrintrne_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrintrz_s(a: v4f32) -> v4f32 {
-    __lsx_vfrintrz_s(a)
+pub fn lsx_vfrintrz_s(a: v4f32) -> v4f32 {
+    unsafe { __lsx_vfrintrz_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrintrz_d(a: v2f64) -> v2f64 {
-    __lsx_vfrintrz_d(a)
+pub fn lsx_vfrintrz_d(a: v2f64) -> v2f64 {
+    unsafe { __lsx_vfrintrz_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrintrp_s(a: v4f32) -> v4f32 {
-    __lsx_vfrintrp_s(a)
+pub fn lsx_vfrintrp_s(a: v4f32) -> v4f32 {
+    unsafe { __lsx_vfrintrp_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrintrp_d(a: v2f64) -> v2f64 {
-    __lsx_vfrintrp_d(a)
+pub fn lsx_vfrintrp_d(a: v2f64) -> v2f64 {
+    unsafe { __lsx_vfrintrp_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrintrm_s(a: v4f32) -> v4f32 {
-    __lsx_vfrintrm_s(a)
+pub fn lsx_vfrintrm_s(a: v4f32) -> v4f32 {
+    unsafe { __lsx_vfrintrm_s(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfrintrm_d(a: v2f64) -> v2f64 {
-    __lsx_vfrintrm_d(a)
+pub fn lsx_vfrintrm_d(a: v2f64) -> v2f64 {
+    unsafe { __lsx_vfrintrm_d(a) }
 }
 
 #[inline]
@@ -5087,687 +5087,687 @@ pub unsafe fn lsx_vstelm_d<const IMM_S8: i32, const IMM1: u32>(a: v2i64, mem_add
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_d_w(a: v4i32, b: v4i32) -> v2i64 {
-    __lsx_vaddwev_d_w(a, b)
+pub fn lsx_vaddwev_d_w(a: v4i32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vaddwev_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_w_h(a: v8i16, b: v8i16) -> v4i32 {
-    __lsx_vaddwev_w_h(a, b)
+pub fn lsx_vaddwev_w_h(a: v8i16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vaddwev_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_h_b(a: v16i8, b: v16i8) -> v8i16 {
-    __lsx_vaddwev_h_b(a, b)
+pub fn lsx_vaddwev_h_b(a: v16i8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vaddwev_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_d_w(a: v4i32, b: v4i32) -> v2i64 {
-    __lsx_vaddwod_d_w(a, b)
+pub fn lsx_vaddwod_d_w(a: v4i32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vaddwod_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_w_h(a: v8i16, b: v8i16) -> v4i32 {
-    __lsx_vaddwod_w_h(a, b)
+pub fn lsx_vaddwod_w_h(a: v8i16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vaddwod_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_h_b(a: v16i8, b: v16i8) -> v8i16 {
-    __lsx_vaddwod_h_b(a, b)
+pub fn lsx_vaddwod_h_b(a: v16i8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vaddwod_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {
-    __lsx_vaddwev_d_wu(a, b)
+pub fn lsx_vaddwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {
+    unsafe { __lsx_vaddwev_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {
-    __lsx_vaddwev_w_hu(a, b)
+pub fn lsx_vaddwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {
+    unsafe { __lsx_vaddwev_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {
-    __lsx_vaddwev_h_bu(a, b)
+pub fn lsx_vaddwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {
+    unsafe { __lsx_vaddwev_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {
-    __lsx_vaddwod_d_wu(a, b)
+pub fn lsx_vaddwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {
+    unsafe { __lsx_vaddwod_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {
-    __lsx_vaddwod_w_hu(a, b)
+pub fn lsx_vaddwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {
+    unsafe { __lsx_vaddwod_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {
-    __lsx_vaddwod_h_bu(a, b)
+pub fn lsx_vaddwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {
+    unsafe { __lsx_vaddwod_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
-    __lsx_vaddwev_d_wu_w(a, b)
+pub fn lsx_vaddwev_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vaddwev_d_wu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
-    __lsx_vaddwev_w_hu_h(a, b)
+pub fn lsx_vaddwev_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vaddwev_w_hu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
-    __lsx_vaddwev_h_bu_b(a, b)
+pub fn lsx_vaddwev_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vaddwev_h_bu_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
-    __lsx_vaddwod_d_wu_w(a, b)
+pub fn lsx_vaddwod_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vaddwod_d_wu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
-    __lsx_vaddwod_w_hu_h(a, b)
+pub fn lsx_vaddwod_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vaddwod_w_hu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
-    __lsx_vaddwod_h_bu_b(a, b)
+pub fn lsx_vaddwod_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vaddwod_h_bu_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwev_d_w(a: v4i32, b: v4i32) -> v2i64 {
-    __lsx_vsubwev_d_w(a, b)
+pub fn lsx_vsubwev_d_w(a: v4i32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vsubwev_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwev_w_h(a: v8i16, b: v8i16) -> v4i32 {
-    __lsx_vsubwev_w_h(a, b)
+pub fn lsx_vsubwev_w_h(a: v8i16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vsubwev_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwev_h_b(a: v16i8, b: v16i8) -> v8i16 {
-    __lsx_vsubwev_h_b(a, b)
+pub fn lsx_vsubwev_h_b(a: v16i8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vsubwev_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwod_d_w(a: v4i32, b: v4i32) -> v2i64 {
-    __lsx_vsubwod_d_w(a, b)
+pub fn lsx_vsubwod_d_w(a: v4i32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vsubwod_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwod_w_h(a: v8i16, b: v8i16) -> v4i32 {
-    __lsx_vsubwod_w_h(a, b)
+pub fn lsx_vsubwod_w_h(a: v8i16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vsubwod_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwod_h_b(a: v16i8, b: v16i8) -> v8i16 {
-    __lsx_vsubwod_h_b(a, b)
+pub fn lsx_vsubwod_h_b(a: v16i8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vsubwod_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {
-    __lsx_vsubwev_d_wu(a, b)
+pub fn lsx_vsubwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {
+    unsafe { __lsx_vsubwev_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {
-    __lsx_vsubwev_w_hu(a, b)
+pub fn lsx_vsubwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {
+    unsafe { __lsx_vsubwev_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {
-    __lsx_vsubwev_h_bu(a, b)
+pub fn lsx_vsubwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {
+    unsafe { __lsx_vsubwev_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {
-    __lsx_vsubwod_d_wu(a, b)
+pub fn lsx_vsubwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {
+    unsafe { __lsx_vsubwod_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {
-    __lsx_vsubwod_w_hu(a, b)
+pub fn lsx_vsubwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {
+    unsafe { __lsx_vsubwod_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {
-    __lsx_vsubwod_h_bu(a, b)
+pub fn lsx_vsubwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {
+    unsafe { __lsx_vsubwod_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_q_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vaddwev_q_d(a, b)
+pub fn lsx_vaddwev_q_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vaddwev_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_q_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vaddwod_q_d(a, b)
+pub fn lsx_vaddwod_q_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vaddwod_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_q_du(a: v2u64, b: v2u64) -> v2i64 {
-    __lsx_vaddwev_q_du(a, b)
+pub fn lsx_vaddwev_q_du(a: v2u64, b: v2u64) -> v2i64 {
+    unsafe { __lsx_vaddwev_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_q_du(a: v2u64, b: v2u64) -> v2i64 {
-    __lsx_vaddwod_q_du(a, b)
+pub fn lsx_vaddwod_q_du(a: v2u64, b: v2u64) -> v2i64 {
+    unsafe { __lsx_vaddwod_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwev_q_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsubwev_q_d(a, b)
+pub fn lsx_vsubwev_q_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsubwev_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwod_q_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsubwod_q_d(a, b)
+pub fn lsx_vsubwod_q_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsubwod_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwev_q_du(a: v2u64, b: v2u64) -> v2i64 {
-    __lsx_vsubwev_q_du(a, b)
+pub fn lsx_vsubwev_q_du(a: v2u64, b: v2u64) -> v2i64 {
+    unsafe { __lsx_vsubwev_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsubwod_q_du(a: v2u64, b: v2u64) -> v2i64 {
-    __lsx_vsubwod_q_du(a, b)
+pub fn lsx_vsubwod_q_du(a: v2u64, b: v2u64) -> v2i64 {
+    unsafe { __lsx_vsubwod_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwev_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
-    __lsx_vaddwev_q_du_d(a, b)
+pub fn lsx_vaddwev_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vaddwev_q_du_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vaddwod_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
-    __lsx_vaddwod_q_du_d(a, b)
+pub fn lsx_vaddwod_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vaddwod_q_du_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_d_w(a: v4i32, b: v4i32) -> v2i64 {
-    __lsx_vmulwev_d_w(a, b)
+pub fn lsx_vmulwev_d_w(a: v4i32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vmulwev_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_w_h(a: v8i16, b: v8i16) -> v4i32 {
-    __lsx_vmulwev_w_h(a, b)
+pub fn lsx_vmulwev_w_h(a: v8i16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vmulwev_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_h_b(a: v16i8, b: v16i8) -> v8i16 {
-    __lsx_vmulwev_h_b(a, b)
+pub fn lsx_vmulwev_h_b(a: v16i8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vmulwev_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_d_w(a: v4i32, b: v4i32) -> v2i64 {
-    __lsx_vmulwod_d_w(a, b)
+pub fn lsx_vmulwod_d_w(a: v4i32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vmulwod_d_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_w_h(a: v8i16, b: v8i16) -> v4i32 {
-    __lsx_vmulwod_w_h(a, b)
+pub fn lsx_vmulwod_w_h(a: v8i16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vmulwod_w_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_h_b(a: v16i8, b: v16i8) -> v8i16 {
-    __lsx_vmulwod_h_b(a, b)
+pub fn lsx_vmulwod_h_b(a: v16i8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vmulwod_h_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {
-    __lsx_vmulwev_d_wu(a, b)
+pub fn lsx_vmulwev_d_wu(a: v4u32, b: v4u32) -> v2i64 {
+    unsafe { __lsx_vmulwev_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {
-    __lsx_vmulwev_w_hu(a, b)
+pub fn lsx_vmulwev_w_hu(a: v8u16, b: v8u16) -> v4i32 {
+    unsafe { __lsx_vmulwev_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {
-    __lsx_vmulwev_h_bu(a, b)
+pub fn lsx_vmulwev_h_bu(a: v16u8, b: v16u8) -> v8i16 {
+    unsafe { __lsx_vmulwev_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {
-    __lsx_vmulwod_d_wu(a, b)
+pub fn lsx_vmulwod_d_wu(a: v4u32, b: v4u32) -> v2i64 {
+    unsafe { __lsx_vmulwod_d_wu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {
-    __lsx_vmulwod_w_hu(a, b)
+pub fn lsx_vmulwod_w_hu(a: v8u16, b: v8u16) -> v4i32 {
+    unsafe { __lsx_vmulwod_w_hu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {
-    __lsx_vmulwod_h_bu(a, b)
+pub fn lsx_vmulwod_h_bu(a: v16u8, b: v16u8) -> v8i16 {
+    unsafe { __lsx_vmulwod_h_bu(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
-    __lsx_vmulwev_d_wu_w(a, b)
+pub fn lsx_vmulwev_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vmulwev_d_wu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
-    __lsx_vmulwev_w_hu_h(a, b)
+pub fn lsx_vmulwev_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vmulwev_w_hu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
-    __lsx_vmulwev_h_bu_b(a, b)
+pub fn lsx_vmulwev_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vmulwev_h_bu_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
-    __lsx_vmulwod_d_wu_w(a, b)
+pub fn lsx_vmulwod_d_wu_w(a: v4u32, b: v4i32) -> v2i64 {
+    unsafe { __lsx_vmulwod_d_wu_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
-    __lsx_vmulwod_w_hu_h(a, b)
+pub fn lsx_vmulwod_w_hu_h(a: v8u16, b: v8i16) -> v4i32 {
+    unsafe { __lsx_vmulwod_w_hu_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
-    __lsx_vmulwod_h_bu_b(a, b)
+pub fn lsx_vmulwod_h_bu_b(a: v16u8, b: v16i8) -> v8i16 {
+    unsafe { __lsx_vmulwod_h_bu_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_q_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vmulwev_q_d(a, b)
+pub fn lsx_vmulwev_q_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vmulwev_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_q_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vmulwod_q_d(a, b)
+pub fn lsx_vmulwod_q_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vmulwod_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_q_du(a: v2u64, b: v2u64) -> v2i64 {
-    __lsx_vmulwev_q_du(a, b)
+pub fn lsx_vmulwev_q_du(a: v2u64, b: v2u64) -> v2i64 {
+    unsafe { __lsx_vmulwev_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_q_du(a: v2u64, b: v2u64) -> v2i64 {
-    __lsx_vmulwod_q_du(a, b)
+pub fn lsx_vmulwod_q_du(a: v2u64, b: v2u64) -> v2i64 {
+    unsafe { __lsx_vmulwod_q_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwev_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
-    __lsx_vmulwev_q_du_d(a, b)
+pub fn lsx_vmulwev_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vmulwev_q_du_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmulwod_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
-    __lsx_vmulwod_q_du_d(a, b)
+pub fn lsx_vmulwod_q_du_d(a: v2u64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vmulwod_q_du_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhaddw_q_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vhaddw_q_d(a, b)
+pub fn lsx_vhaddw_q_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vhaddw_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhaddw_qu_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vhaddw_qu_du(a, b)
+pub fn lsx_vhaddw_qu_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vhaddw_qu_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhsubw_q_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vhsubw_q_d(a, b)
+pub fn lsx_vhsubw_q_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vhsubw_q_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vhsubw_qu_du(a: v2u64, b: v2u64) -> v2u64 {
-    __lsx_vhsubw_qu_du(a, b)
+pub fn lsx_vhsubw_qu_du(a: v2u64, b: v2u64) -> v2u64 {
+    unsafe { __lsx_vhsubw_qu_du(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_d_w(a: v2i64, b: v4i32, c: v4i32) -> v2i64 {
-    __lsx_vmaddwev_d_w(a, b, c)
+pub fn lsx_vmaddwev_d_w(a: v2i64, b: v4i32, c: v4i32) -> v2i64 {
+    unsafe { __lsx_vmaddwev_d_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_w_h(a: v4i32, b: v8i16, c: v8i16) -> v4i32 {
-    __lsx_vmaddwev_w_h(a, b, c)
+pub fn lsx_vmaddwev_w_h(a: v4i32, b: v8i16, c: v8i16) -> v4i32 {
+    unsafe { __lsx_vmaddwev_w_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_h_b(a: v8i16, b: v16i8, c: v16i8) -> v8i16 {
-    __lsx_vmaddwev_h_b(a, b, c)
+pub fn lsx_vmaddwev_h_b(a: v8i16, b: v16i8, c: v16i8) -> v8i16 {
+    unsafe { __lsx_vmaddwev_h_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_d_wu(a: v2u64, b: v4u32, c: v4u32) -> v2u64 {
-    __lsx_vmaddwev_d_wu(a, b, c)
+pub fn lsx_vmaddwev_d_wu(a: v2u64, b: v4u32, c: v4u32) -> v2u64 {
+    unsafe { __lsx_vmaddwev_d_wu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_w_hu(a: v4u32, b: v8u16, c: v8u16) -> v4u32 {
-    __lsx_vmaddwev_w_hu(a, b, c)
+pub fn lsx_vmaddwev_w_hu(a: v4u32, b: v8u16, c: v8u16) -> v4u32 {
+    unsafe { __lsx_vmaddwev_w_hu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_h_bu(a: v8u16, b: v16u8, c: v16u8) -> v8u16 {
-    __lsx_vmaddwev_h_bu(a, b, c)
+pub fn lsx_vmaddwev_h_bu(a: v8u16, b: v16u8, c: v16u8) -> v8u16 {
+    unsafe { __lsx_vmaddwev_h_bu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_d_w(a: v2i64, b: v4i32, c: v4i32) -> v2i64 {
-    __lsx_vmaddwod_d_w(a, b, c)
+pub fn lsx_vmaddwod_d_w(a: v2i64, b: v4i32, c: v4i32) -> v2i64 {
+    unsafe { __lsx_vmaddwod_d_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_w_h(a: v4i32, b: v8i16, c: v8i16) -> v4i32 {
-    __lsx_vmaddwod_w_h(a, b, c)
+pub fn lsx_vmaddwod_w_h(a: v4i32, b: v8i16, c: v8i16) -> v4i32 {
+    unsafe { __lsx_vmaddwod_w_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_h_b(a: v8i16, b: v16i8, c: v16i8) -> v8i16 {
-    __lsx_vmaddwod_h_b(a, b, c)
+pub fn lsx_vmaddwod_h_b(a: v8i16, b: v16i8, c: v16i8) -> v8i16 {
+    unsafe { __lsx_vmaddwod_h_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_d_wu(a: v2u64, b: v4u32, c: v4u32) -> v2u64 {
-    __lsx_vmaddwod_d_wu(a, b, c)
+pub fn lsx_vmaddwod_d_wu(a: v2u64, b: v4u32, c: v4u32) -> v2u64 {
+    unsafe { __lsx_vmaddwod_d_wu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_w_hu(a: v4u32, b: v8u16, c: v8u16) -> v4u32 {
-    __lsx_vmaddwod_w_hu(a, b, c)
+pub fn lsx_vmaddwod_w_hu(a: v4u32, b: v8u16, c: v8u16) -> v4u32 {
+    unsafe { __lsx_vmaddwod_w_hu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_h_bu(a: v8u16, b: v16u8, c: v16u8) -> v8u16 {
-    __lsx_vmaddwod_h_bu(a, b, c)
+pub fn lsx_vmaddwod_h_bu(a: v8u16, b: v16u8, c: v16u8) -> v8u16 {
+    unsafe { __lsx_vmaddwod_h_bu(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_d_wu_w(a: v2i64, b: v4u32, c: v4i32) -> v2i64 {
-    __lsx_vmaddwev_d_wu_w(a, b, c)
+pub fn lsx_vmaddwev_d_wu_w(a: v2i64, b: v4u32, c: v4i32) -> v2i64 {
+    unsafe { __lsx_vmaddwev_d_wu_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_w_hu_h(a: v4i32, b: v8u16, c: v8i16) -> v4i32 {
-    __lsx_vmaddwev_w_hu_h(a, b, c)
+pub fn lsx_vmaddwev_w_hu_h(a: v4i32, b: v8u16, c: v8i16) -> v4i32 {
+    unsafe { __lsx_vmaddwev_w_hu_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_h_bu_b(a: v8i16, b: v16u8, c: v16i8) -> v8i16 {
-    __lsx_vmaddwev_h_bu_b(a, b, c)
+pub fn lsx_vmaddwev_h_bu_b(a: v8i16, b: v16u8, c: v16i8) -> v8i16 {
+    unsafe { __lsx_vmaddwev_h_bu_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_d_wu_w(a: v2i64, b: v4u32, c: v4i32) -> v2i64 {
-    __lsx_vmaddwod_d_wu_w(a, b, c)
+pub fn lsx_vmaddwod_d_wu_w(a: v2i64, b: v4u32, c: v4i32) -> v2i64 {
+    unsafe { __lsx_vmaddwod_d_wu_w(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_w_hu_h(a: v4i32, b: v8u16, c: v8i16) -> v4i32 {
-    __lsx_vmaddwod_w_hu_h(a, b, c)
+pub fn lsx_vmaddwod_w_hu_h(a: v4i32, b: v8u16, c: v8i16) -> v4i32 {
+    unsafe { __lsx_vmaddwod_w_hu_h(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_h_bu_b(a: v8i16, b: v16u8, c: v16i8) -> v8i16 {
-    __lsx_vmaddwod_h_bu_b(a, b, c)
+pub fn lsx_vmaddwod_h_bu_b(a: v8i16, b: v16u8, c: v16i8) -> v8i16 {
+    unsafe { __lsx_vmaddwod_h_bu_b(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_q_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
-    __lsx_vmaddwev_q_d(a, b, c)
+pub fn lsx_vmaddwev_q_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
+    unsafe { __lsx_vmaddwev_q_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_q_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
-    __lsx_vmaddwod_q_d(a, b, c)
+pub fn lsx_vmaddwod_q_d(a: v2i64, b: v2i64, c: v2i64) -> v2i64 {
+    unsafe { __lsx_vmaddwod_q_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_q_du(a: v2u64, b: v2u64, c: v2u64) -> v2u64 {
-    __lsx_vmaddwev_q_du(a, b, c)
+pub fn lsx_vmaddwev_q_du(a: v2u64, b: v2u64, c: v2u64) -> v2u64 {
+    unsafe { __lsx_vmaddwev_q_du(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_q_du(a: v2u64, b: v2u64, c: v2u64) -> v2u64 {
-    __lsx_vmaddwod_q_du(a, b, c)
+pub fn lsx_vmaddwod_q_du(a: v2u64, b: v2u64, c: v2u64) -> v2u64 {
+    unsafe { __lsx_vmaddwod_q_du(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwev_q_du_d(a: v2i64, b: v2u64, c: v2i64) -> v2i64 {
-    __lsx_vmaddwev_q_du_d(a, b, c)
+pub fn lsx_vmaddwev_q_du_d(a: v2i64, b: v2u64, c: v2i64) -> v2i64 {
+    unsafe { __lsx_vmaddwev_q_du_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmaddwod_q_du_d(a: v2i64, b: v2u64, c: v2i64) -> v2i64 {
-    __lsx_vmaddwod_q_du_d(a, b, c)
+pub fn lsx_vmaddwod_q_du_d(a: v2i64, b: v2u64, c: v2i64) -> v2i64 {
+    unsafe { __lsx_vmaddwod_q_du_d(a, b, c) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrotr_b(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vrotr_b(a, b)
+pub fn lsx_vrotr_b(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vrotr_b(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrotr_h(a: v8i16, b: v8i16) -> v8i16 {
-    __lsx_vrotr_h(a, b)
+pub fn lsx_vrotr_h(a: v8i16, b: v8i16) -> v8i16 {
+    unsafe { __lsx_vrotr_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrotr_w(a: v4i32, b: v4i32) -> v4i32 {
-    __lsx_vrotr_w(a, b)
+pub fn lsx_vrotr_w(a: v4i32, b: v4i32) -> v4i32 {
+    unsafe { __lsx_vrotr_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrotr_d(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vrotr_d(a, b)
+pub fn lsx_vrotr_d(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vrotr_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vadd_q(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vadd_q(a, b)
+pub fn lsx_vadd_q(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vadd_q(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsub_q(a: v2i64, b: v2i64) -> v2i64 {
-    __lsx_vsub_q(a, b)
+pub fn lsx_vsub_q(a: v2i64, b: v2i64) -> v2i64 {
+    unsafe { __lsx_vsub_q(a, b) }
 }
 
 #[inline]
@@ -5809,555 +5809,555 @@ pub unsafe fn lsx_vldrepl_d<const IMM_S9: i32>(mem_addr: *const i8) -> v2i64 {
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmskgez_b(a: v16i8) -> v16i8 {
-    __lsx_vmskgez_b(a)
+pub fn lsx_vmskgez_b(a: v16i8) -> v16i8 {
+    unsafe { __lsx_vmskgez_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vmsknz_b(a: v16i8) -> v16i8 {
-    __lsx_vmsknz_b(a)
+pub fn lsx_vmsknz_b(a: v16i8) -> v16i8 {
+    unsafe { __lsx_vmsknz_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vexth_h_b(a: v16i8) -> v8i16 {
-    __lsx_vexth_h_b(a)
+pub fn lsx_vexth_h_b(a: v16i8) -> v8i16 {
+    unsafe { __lsx_vexth_h_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vexth_w_h(a: v8i16) -> v4i32 {
-    __lsx_vexth_w_h(a)
+pub fn lsx_vexth_w_h(a: v8i16) -> v4i32 {
+    unsafe { __lsx_vexth_w_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vexth_d_w(a: v4i32) -> v2i64 {
-    __lsx_vexth_d_w(a)
+pub fn lsx_vexth_d_w(a: v4i32) -> v2i64 {
+    unsafe { __lsx_vexth_d_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vexth_q_d(a: v2i64) -> v2i64 {
-    __lsx_vexth_q_d(a)
+pub fn lsx_vexth_q_d(a: v2i64) -> v2i64 {
+    unsafe { __lsx_vexth_q_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vexth_hu_bu(a: v16u8) -> v8u16 {
-    __lsx_vexth_hu_bu(a)
+pub fn lsx_vexth_hu_bu(a: v16u8) -> v8u16 {
+    unsafe { __lsx_vexth_hu_bu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vexth_wu_hu(a: v8u16) -> v4u32 {
-    __lsx_vexth_wu_hu(a)
+pub fn lsx_vexth_wu_hu(a: v8u16) -> v4u32 {
+    unsafe { __lsx_vexth_wu_hu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vexth_du_wu(a: v4u32) -> v2u64 {
-    __lsx_vexth_du_wu(a)
+pub fn lsx_vexth_du_wu(a: v4u32) -> v2u64 {
+    unsafe { __lsx_vexth_du_wu(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vexth_qu_du(a: v2u64) -> v2u64 {
-    __lsx_vexth_qu_du(a)
+pub fn lsx_vexth_qu_du(a: v2u64) -> v2u64 {
+    unsafe { __lsx_vexth_qu_du(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrotri_b<const IMM3: u32>(a: v16i8) -> v16i8 {
+pub fn lsx_vrotri_b<const IMM3: u32>(a: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM3, 3);
-    __lsx_vrotri_b(a, IMM3)
+    unsafe { __lsx_vrotri_b(a, IMM3) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrotri_h<const IMM4: u32>(a: v8i16) -> v8i16 {
+pub fn lsx_vrotri_h<const IMM4: u32>(a: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vrotri_h(a, IMM4)
+    unsafe { __lsx_vrotri_h(a, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrotri_w<const IMM5: u32>(a: v4i32) -> v4i32 {
+pub fn lsx_vrotri_w<const IMM5: u32>(a: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vrotri_w(a, IMM5)
+    unsafe { __lsx_vrotri_w(a, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(1)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrotri_d<const IMM6: u32>(a: v2i64) -> v2i64 {
+pub fn lsx_vrotri_d<const IMM6: u32>(a: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vrotri_d(a, IMM6)
+    unsafe { __lsx_vrotri_d(a, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vextl_q_d(a: v2i64) -> v2i64 {
-    __lsx_vextl_q_d(a)
+pub fn lsx_vextl_q_d(a: v2i64) -> v2i64 {
+    unsafe { __lsx_vextl_q_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
+pub fn lsx_vsrlni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsrlni_b_h(a, b, IMM4)
+    unsafe { __lsx_vsrlni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
+pub fn lsx_vsrlni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsrlni_h_w(a, b, IMM5)
+    unsafe { __lsx_vsrlni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
+pub fn lsx_vsrlni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vsrlni_w_d(a, b, IMM6)
+    unsafe { __lsx_vsrlni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
+pub fn lsx_vsrlni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vsrlni_d_q(a, b, IMM7)
+    unsafe { __lsx_vsrlni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlrni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
+pub fn lsx_vsrlrni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsrlrni_b_h(a, b, IMM4)
+    unsafe { __lsx_vsrlrni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlrni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
+pub fn lsx_vsrlrni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsrlrni_h_w(a, b, IMM5)
+    unsafe { __lsx_vsrlrni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlrni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
+pub fn lsx_vsrlrni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vsrlrni_w_d(a, b, IMM6)
+    unsafe { __lsx_vsrlrni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrlrni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
+pub fn lsx_vsrlrni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vsrlrni_d_q(a, b, IMM7)
+    unsafe { __lsx_vsrlrni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
+pub fn lsx_vssrlni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vssrlni_b_h(a, b, IMM4)
+    unsafe { __lsx_vssrlni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
+pub fn lsx_vssrlni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vssrlni_h_w(a, b, IMM5)
+    unsafe { __lsx_vssrlni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
+pub fn lsx_vssrlni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vssrlni_w_d(a, b, IMM6)
+    unsafe { __lsx_vssrlni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
+pub fn lsx_vssrlni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vssrlni_d_q(a, b, IMM7)
+    unsafe { __lsx_vssrlni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
+pub fn lsx_vssrlni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vssrlni_bu_h(a, b, IMM4)
+    unsafe { __lsx_vssrlni_bu_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
+pub fn lsx_vssrlni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vssrlni_hu_w(a, b, IMM5)
+    unsafe { __lsx_vssrlni_hu_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
+pub fn lsx_vssrlni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vssrlni_wu_d(a, b, IMM6)
+    unsafe { __lsx_vssrlni_wu_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
+pub fn lsx_vssrlni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vssrlni_du_q(a, b, IMM7)
+    unsafe { __lsx_vssrlni_du_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
+pub fn lsx_vssrlrni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vssrlrni_b_h(a, b, IMM4)
+    unsafe { __lsx_vssrlrni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
+pub fn lsx_vssrlrni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vssrlrni_h_w(a, b, IMM5)
+    unsafe { __lsx_vssrlrni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
+pub fn lsx_vssrlrni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vssrlrni_w_d(a, b, IMM6)
+    unsafe { __lsx_vssrlrni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
+pub fn lsx_vssrlrni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vssrlrni_d_q(a, b, IMM7)
+    unsafe { __lsx_vssrlrni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
+pub fn lsx_vssrlrni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vssrlrni_bu_h(a, b, IMM4)
+    unsafe { __lsx_vssrlrni_bu_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
+pub fn lsx_vssrlrni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vssrlrni_hu_w(a, b, IMM5)
+    unsafe { __lsx_vssrlrni_hu_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
+pub fn lsx_vssrlrni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vssrlrni_wu_d(a, b, IMM6)
+    unsafe { __lsx_vssrlrni_wu_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
+pub fn lsx_vssrlrni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vssrlrni_du_q(a, b, IMM7)
+    unsafe { __lsx_vssrlrni_du_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrani_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
+pub fn lsx_vsrani_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsrani_b_h(a, b, IMM4)
+    unsafe { __lsx_vsrani_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrani_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
+pub fn lsx_vsrani_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsrani_h_w(a, b, IMM5)
+    unsafe { __lsx_vsrani_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrani_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
+pub fn lsx_vsrani_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vsrani_w_d(a, b, IMM6)
+    unsafe { __lsx_vsrani_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrani_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
+pub fn lsx_vsrani_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vsrani_d_q(a, b, IMM7)
+    unsafe { __lsx_vsrani_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrarni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
+pub fn lsx_vsrarni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vsrarni_b_h(a, b, IMM4)
+    unsafe { __lsx_vsrarni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrarni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
+pub fn lsx_vsrarni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vsrarni_h_w(a, b, IMM5)
+    unsafe { __lsx_vsrarni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrarni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
+pub fn lsx_vsrarni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vsrarni_w_d(a, b, IMM6)
+    unsafe { __lsx_vsrarni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vsrarni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
+pub fn lsx_vsrarni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vsrarni_d_q(a, b, IMM7)
+    unsafe { __lsx_vsrarni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrani_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
+pub fn lsx_vssrani_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vssrani_b_h(a, b, IMM4)
+    unsafe { __lsx_vssrani_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrani_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
+pub fn lsx_vssrani_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vssrani_h_w(a, b, IMM5)
+    unsafe { __lsx_vssrani_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrani_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
+pub fn lsx_vssrani_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vssrani_w_d(a, b, IMM6)
+    unsafe { __lsx_vssrani_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrani_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
+pub fn lsx_vssrani_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vssrani_d_q(a, b, IMM7)
+    unsafe { __lsx_vssrani_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrani_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
+pub fn lsx_vssrani_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vssrani_bu_h(a, b, IMM4)
+    unsafe { __lsx_vssrani_bu_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrani_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
+pub fn lsx_vssrani_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vssrani_hu_w(a, b, IMM5)
+    unsafe { __lsx_vssrani_hu_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrani_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
+pub fn lsx_vssrani_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vssrani_wu_d(a, b, IMM6)
+    unsafe { __lsx_vssrani_wu_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrani_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
+pub fn lsx_vssrani_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vssrani_du_q(a, b, IMM7)
+    unsafe { __lsx_vssrani_du_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
+pub fn lsx_vssrarni_b_h<const IMM4: u32>(a: v16i8, b: v16i8) -> v16i8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vssrarni_b_h(a, b, IMM4)
+    unsafe { __lsx_vssrarni_b_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
+pub fn lsx_vssrarni_h_w<const IMM5: u32>(a: v8i16, b: v8i16) -> v8i16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vssrarni_h_w(a, b, IMM5)
+    unsafe { __lsx_vssrarni_h_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
+pub fn lsx_vssrarni_w_d<const IMM6: u32>(a: v4i32, b: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vssrarni_w_d(a, b, IMM6)
+    unsafe { __lsx_vssrarni_w_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
+pub fn lsx_vssrarni_d_q<const IMM7: u32>(a: v2i64, b: v2i64) -> v2i64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vssrarni_d_q(a, b, IMM7)
+    unsafe { __lsx_vssrarni_d_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
+pub fn lsx_vssrarni_bu_h<const IMM4: u32>(a: v16u8, b: v16i8) -> v16u8 {
     static_assert_uimm_bits!(IMM4, 4);
-    __lsx_vssrarni_bu_h(a, b, IMM4)
+    unsafe { __lsx_vssrarni_bu_h(a, b, IMM4) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
+pub fn lsx_vssrarni_hu_w<const IMM5: u32>(a: v8u16, b: v8i16) -> v8u16 {
     static_assert_uimm_bits!(IMM5, 5);
-    __lsx_vssrarni_hu_w(a, b, IMM5)
+    unsafe { __lsx_vssrarni_hu_w(a, b, IMM5) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
+pub fn lsx_vssrarni_wu_d<const IMM6: u32>(a: v4u32, b: v4i32) -> v4u32 {
     static_assert_uimm_bits!(IMM6, 6);
-    __lsx_vssrarni_wu_d(a, b, IMM6)
+    unsafe { __lsx_vssrarni_wu_d(a, b, IMM6) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrarni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
+pub fn lsx_vssrarni_du_q<const IMM7: u32>(a: v2u64, b: v2i64) -> v2u64 {
     static_assert_uimm_bits!(IMM7, 7);
-    __lsx_vssrarni_du_q(a, b, IMM7)
+    unsafe { __lsx_vssrarni_du_q(a, b, IMM7) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(2)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vpermi_w<const IMM8: u32>(a: v4i32, b: v4i32) -> v4i32 {
+pub fn lsx_vpermi_w<const IMM8: u32>(a: v4i32, b: v4i32) -> v4i32 {
     static_assert_uimm_bits!(IMM8, 8);
-    __lsx_vpermi_w(a, b, IMM8)
+    unsafe { __lsx_vpermi_w(a, b, IMM8) }
 }
 
 #[inline]
@@ -6381,66 +6381,66 @@ pub unsafe fn lsx_vst<const IMM_S12: i32>(a: v16i8, mem_addr: *mut i8) {
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrn_b_h(a: v8i16, b: v8i16) -> v16i8 {
-    __lsx_vssrlrn_b_h(a, b)
+pub fn lsx_vssrlrn_b_h(a: v8i16, b: v8i16) -> v16i8 {
+    unsafe { __lsx_vssrlrn_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrn_h_w(a: v4i32, b: v4i32) -> v8i16 {
-    __lsx_vssrlrn_h_w(a, b)
+pub fn lsx_vssrlrn_h_w(a: v4i32, b: v4i32) -> v8i16 {
+    unsafe { __lsx_vssrlrn_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrlrn_w_d(a: v2i64, b: v2i64) -> v4i32 {
-    __lsx_vssrlrn_w_d(a, b)
+pub fn lsx_vssrlrn_w_d(a: v2i64, b: v2i64) -> v4i32 {
+    unsafe { __lsx_vssrlrn_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrln_b_h(a: v8i16, b: v8i16) -> v16i8 {
-    __lsx_vssrln_b_h(a, b)
+pub fn lsx_vssrln_b_h(a: v8i16, b: v8i16) -> v16i8 {
+    unsafe { __lsx_vssrln_b_h(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrln_h_w(a: v4i32, b: v4i32) -> v8i16 {
-    __lsx_vssrln_h_w(a, b)
+pub fn lsx_vssrln_h_w(a: v4i32, b: v4i32) -> v8i16 {
+    unsafe { __lsx_vssrln_h_w(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vssrln_w_d(a: v2i64, b: v2i64) -> v4i32 {
-    __lsx_vssrln_w_d(a, b)
+pub fn lsx_vssrln_w_d(a: v2i64, b: v2i64) -> v4i32 {
+    unsafe { __lsx_vssrln_w_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vorn_v(a: v16i8, b: v16i8) -> v16i8 {
-    __lsx_vorn_v(a, b)
+pub fn lsx_vorn_v(a: v16i8, b: v16i8) -> v16i8 {
+    unsafe { __lsx_vorn_v(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(0)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vldi<const IMM_S13: i32>() -> v2i64 {
+pub fn lsx_vldi<const IMM_S13: i32>() -> v2i64 {
     static_assert_simm_bits!(IMM_S13, 13);
-    __lsx_vldi(IMM_S13)
+    unsafe { __lsx_vldi(IMM_S13) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vshuf_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
-    __lsx_vshuf_b(a, b, c)
+pub fn lsx_vshuf_b(a: v16i8, b: v16i8, c: v16i8) -> v16i8 {
+    unsafe { __lsx_vshuf_b(a, b, c) }
 }
 
 #[inline]
@@ -6460,420 +6460,420 @@ pub unsafe fn lsx_vstx(a: v16i8, mem_addr: *mut i8, b: i64) {
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vextl_qu_du(a: v2u64) -> v2u64 {
-    __lsx_vextl_qu_du(a)
+pub fn lsx_vextl_qu_du(a: v2u64) -> v2u64 {
+    unsafe { __lsx_vextl_qu_du(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_bnz_b(a: v16u8) -> i32 {
-    __lsx_bnz_b(a)
+pub fn lsx_bnz_b(a: v16u8) -> i32 {
+    unsafe { __lsx_bnz_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_bnz_d(a: v2u64) -> i32 {
-    __lsx_bnz_d(a)
+pub fn lsx_bnz_d(a: v2u64) -> i32 {
+    unsafe { __lsx_bnz_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_bnz_h(a: v8u16) -> i32 {
-    __lsx_bnz_h(a)
+pub fn lsx_bnz_h(a: v8u16) -> i32 {
+    unsafe { __lsx_bnz_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_bnz_v(a: v16u8) -> i32 {
-    __lsx_bnz_v(a)
+pub fn lsx_bnz_v(a: v16u8) -> i32 {
+    unsafe { __lsx_bnz_v(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_bnz_w(a: v4u32) -> i32 {
-    __lsx_bnz_w(a)
+pub fn lsx_bnz_w(a: v4u32) -> i32 {
+    unsafe { __lsx_bnz_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_bz_b(a: v16u8) -> i32 {
-    __lsx_bz_b(a)
+pub fn lsx_bz_b(a: v16u8) -> i32 {
+    unsafe { __lsx_bz_b(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_bz_d(a: v2u64) -> i32 {
-    __lsx_bz_d(a)
+pub fn lsx_bz_d(a: v2u64) -> i32 {
+    unsafe { __lsx_bz_d(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_bz_h(a: v8u16) -> i32 {
-    __lsx_bz_h(a)
+pub fn lsx_bz_h(a: v8u16) -> i32 {
+    unsafe { __lsx_bz_h(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_bz_v(a: v16u8) -> i32 {
-    __lsx_bz_v(a)
+pub fn lsx_bz_v(a: v16u8) -> i32 {
+    unsafe { __lsx_bz_v(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_bz_w(a: v4u32) -> i32 {
-    __lsx_bz_w(a)
+pub fn lsx_bz_w(a: v4u32) -> i32 {
+    unsafe { __lsx_bz_w(a) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_caf_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_caf_d(a, b)
+pub fn lsx_vfcmp_caf_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_caf_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_caf_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_caf_s(a, b)
+pub fn lsx_vfcmp_caf_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_caf_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_ceq_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_ceq_d(a, b)
+pub fn lsx_vfcmp_ceq_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_ceq_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_ceq_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_ceq_s(a, b)
+pub fn lsx_vfcmp_ceq_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_ceq_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cle_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_cle_d(a, b)
+pub fn lsx_vfcmp_cle_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_cle_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cle_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_cle_s(a, b)
+pub fn lsx_vfcmp_cle_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_cle_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_clt_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_clt_d(a, b)
+pub fn lsx_vfcmp_clt_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_clt_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_clt_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_clt_s(a, b)
+pub fn lsx_vfcmp_clt_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_clt_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cne_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_cne_d(a, b)
+pub fn lsx_vfcmp_cne_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_cne_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cne_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_cne_s(a, b)
+pub fn lsx_vfcmp_cne_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_cne_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cor_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_cor_d(a, b)
+pub fn lsx_vfcmp_cor_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_cor_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cor_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_cor_s(a, b)
+pub fn lsx_vfcmp_cor_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_cor_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cueq_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_cueq_d(a, b)
+pub fn lsx_vfcmp_cueq_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_cueq_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cueq_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_cueq_s(a, b)
+pub fn lsx_vfcmp_cueq_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_cueq_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cule_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_cule_d(a, b)
+pub fn lsx_vfcmp_cule_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_cule_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cule_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_cule_s(a, b)
+pub fn lsx_vfcmp_cule_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_cule_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cult_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_cult_d(a, b)
+pub fn lsx_vfcmp_cult_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_cult_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cult_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_cult_s(a, b)
+pub fn lsx_vfcmp_cult_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_cult_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cun_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_cun_d(a, b)
+pub fn lsx_vfcmp_cun_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_cun_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cune_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_cune_d(a, b)
+pub fn lsx_vfcmp_cune_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_cune_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cune_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_cune_s(a, b)
+pub fn lsx_vfcmp_cune_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_cune_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_cun_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_cun_s(a, b)
+pub fn lsx_vfcmp_cun_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_cun_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_saf_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_saf_d(a, b)
+pub fn lsx_vfcmp_saf_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_saf_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_saf_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_saf_s(a, b)
+pub fn lsx_vfcmp_saf_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_saf_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_seq_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_seq_d(a, b)
+pub fn lsx_vfcmp_seq_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_seq_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_seq_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_seq_s(a, b)
+pub fn lsx_vfcmp_seq_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_seq_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sle_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_sle_d(a, b)
+pub fn lsx_vfcmp_sle_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_sle_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sle_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_sle_s(a, b)
+pub fn lsx_vfcmp_sle_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_sle_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_slt_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_slt_d(a, b)
+pub fn lsx_vfcmp_slt_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_slt_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_slt_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_slt_s(a, b)
+pub fn lsx_vfcmp_slt_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_slt_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sne_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_sne_d(a, b)
+pub fn lsx_vfcmp_sne_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_sne_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sne_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_sne_s(a, b)
+pub fn lsx_vfcmp_sne_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_sne_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sor_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_sor_d(a, b)
+pub fn lsx_vfcmp_sor_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_sor_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sor_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_sor_s(a, b)
+pub fn lsx_vfcmp_sor_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_sor_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sueq_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_sueq_d(a, b)
+pub fn lsx_vfcmp_sueq_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_sueq_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sueq_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_sueq_s(a, b)
+pub fn lsx_vfcmp_sueq_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_sueq_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sule_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_sule_d(a, b)
+pub fn lsx_vfcmp_sule_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_sule_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sule_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_sule_s(a, b)
+pub fn lsx_vfcmp_sule_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_sule_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sult_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_sult_d(a, b)
+pub fn lsx_vfcmp_sult_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_sult_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sult_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_sult_s(a, b)
+pub fn lsx_vfcmp_sult_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_sult_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sun_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_sun_d(a, b)
+pub fn lsx_vfcmp_sun_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_sun_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sune_d(a: v2f64, b: v2f64) -> v2i64 {
-    __lsx_vfcmp_sune_d(a, b)
+pub fn lsx_vfcmp_sune_d(a: v2f64, b: v2f64) -> v2i64 {
+    unsafe { __lsx_vfcmp_sune_d(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sune_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_sune_s(a, b)
+pub fn lsx_vfcmp_sune_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_sune_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vfcmp_sun_s(a: v4f32, b: v4f32) -> v4i32 {
-    __lsx_vfcmp_sun_s(a, b)
+pub fn lsx_vfcmp_sun_s(a: v4f32, b: v4f32) -> v4i32 {
+    unsafe { __lsx_vfcmp_sun_s(a, b) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(0)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrepli_b<const IMM_S10: i32>() -> v16i8 {
+pub fn lsx_vrepli_b<const IMM_S10: i32>() -> v16i8 {
     static_assert_simm_bits!(IMM_S10, 10);
-    __lsx_vrepli_b(IMM_S10)
+    unsafe { __lsx_vrepli_b(IMM_S10) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(0)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrepli_d<const IMM_S10: i32>() -> v2i64 {
+pub fn lsx_vrepli_d<const IMM_S10: i32>() -> v2i64 {
     static_assert_simm_bits!(IMM_S10, 10);
-    __lsx_vrepli_d(IMM_S10)
+    unsafe { __lsx_vrepli_d(IMM_S10) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(0)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrepli_h<const IMM_S10: i32>() -> v8i16 {
+pub fn lsx_vrepli_h<const IMM_S10: i32>() -> v8i16 {
     static_assert_simm_bits!(IMM_S10, 10);
-    __lsx_vrepli_h(IMM_S10)
+    unsafe { __lsx_vrepli_h(IMM_S10) }
 }
 
 #[inline]
 #[target_feature(enable = "lsx")]
 #[rustc_legacy_const_generics(0)]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn lsx_vrepli_w<const IMM_S10: i32>() -> v4i32 {
+pub fn lsx_vrepli_w<const IMM_S10: i32>() -> v4i32 {
     static_assert_simm_bits!(IMM_S10, 10);
-    __lsx_vrepli_w(IMM_S10)
+    unsafe { __lsx_vrepli_w(IMM_S10) }
 }
diff --git a/library/stdarch/crates/core_arch/src/loongarch64/mod.rs b/library/stdarch/crates/core_arch/src/loongarch64/mod.rs
index b1704bbb48d..e8249805eae 100644
--- a/library/stdarch/crates/core_arch/src/loongarch64/mod.rs
+++ b/library/stdarch/crates/core_arch/src/loongarch64/mod.rs
@@ -1,4 +1,4 @@
-//! `LoongArch` intrinsics
+//! `LoongArch64` intrinsics
 
 mod lasx;
 mod lsx;
@@ -13,89 +13,30 @@ use crate::arch::asm;
 /// Reads the 64-bit stable counter value and the counter ID
 #[inline]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn rdtime_d() -> (i64, isize) {
-    let val: i64;
-    let tid: isize;
-    asm!("rdtime.d {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack));
-    (val, tid)
-}
-
-/// Reads the lower 32-bit stable counter value and the counter ID
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn rdtimel_w() -> (i32, isize) {
-    let val: i32;
-    let tid: isize;
-    asm!("rdtimel.w {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack));
-    (val, tid)
-}
-
-/// Reads the upper 32-bit stable counter value and the counter ID
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn rdtimeh_w() -> (i32, isize) {
-    let val: i32;
-    let tid: isize;
-    asm!("rdtimeh.w {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack));
+pub fn rdtime_d() -> (i64, isize) {
+    let (val, tid): (i64, isize);
+    unsafe { asm!("rdtime.d {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack)) };
     (val, tid)
 }
 
 #[allow(improper_ctypes)]
 unsafe extern "unadjusted" {
-    #[link_name = "llvm.loongarch.crc.w.b.w"]
-    fn __crc_w_b_w(a: i32, b: i32) -> i32;
-    #[link_name = "llvm.loongarch.crc.w.h.w"]
-    fn __crc_w_h_w(a: i32, b: i32) -> i32;
-    #[link_name = "llvm.loongarch.crc.w.w.w"]
-    fn __crc_w_w_w(a: i32, b: i32) -> i32;
     #[link_name = "llvm.loongarch.crc.w.d.w"]
     fn __crc_w_d_w(a: i64, b: i32) -> i32;
-    #[link_name = "llvm.loongarch.crcc.w.b.w"]
-    fn __crcc_w_b_w(a: i32, b: i32) -> i32;
-    #[link_name = "llvm.loongarch.crcc.w.h.w"]
-    fn __crcc_w_h_w(a: i32, b: i32) -> i32;
-    #[link_name = "llvm.loongarch.crcc.w.w.w"]
-    fn __crcc_w_w_w(a: i32, b: i32) -> i32;
     #[link_name = "llvm.loongarch.crcc.w.d.w"]
     fn __crcc_w_d_w(a: i64, b: i32) -> i32;
     #[link_name = "llvm.loongarch.cacop.d"]
     fn __cacop(a: i64, b: i64, c: i64);
-    #[link_name = "llvm.loongarch.dbar"]
-    fn __dbar(a: i32);
-    #[link_name = "llvm.loongarch.ibar"]
-    fn __ibar(a: i32);
-    #[link_name = "llvm.loongarch.movgr2fcsr"]
-    fn __movgr2fcsr(a: i32, b: i32);
-    #[link_name = "llvm.loongarch.movfcsr2gr"]
-    fn __movfcsr2gr(a: i32) -> i32;
     #[link_name = "llvm.loongarch.csrrd.d"]
     fn __csrrd(a: i32) -> i64;
     #[link_name = "llvm.loongarch.csrwr.d"]
     fn __csrwr(a: i64, b: i32) -> i64;
     #[link_name = "llvm.loongarch.csrxchg.d"]
     fn __csrxchg(a: i64, b: i64, c: i32) -> i64;
-    #[link_name = "llvm.loongarch.iocsrrd.b"]
-    fn __iocsrrd_b(a: i32) -> i32;
-    #[link_name = "llvm.loongarch.iocsrrd.h"]
-    fn __iocsrrd_h(a: i32) -> i32;
-    #[link_name = "llvm.loongarch.iocsrrd.w"]
-    fn __iocsrrd_w(a: i32) -> i32;
     #[link_name = "llvm.loongarch.iocsrrd.d"]
     fn __iocsrrd_d(a: i32) -> i64;
-    #[link_name = "llvm.loongarch.iocsrwr.b"]
-    fn __iocsrwr_b(a: i32, b: i32);
-    #[link_name = "llvm.loongarch.iocsrwr.h"]
-    fn __iocsrwr_h(a: i32, b: i32);
-    #[link_name = "llvm.loongarch.iocsrwr.w"]
-    fn __iocsrwr_w(a: i32, b: i32);
     #[link_name = "llvm.loongarch.iocsrwr.d"]
     fn __iocsrwr_d(a: i64, b: i32);
-    #[link_name = "llvm.loongarch.break"]
-    fn __break(a: i32);
-    #[link_name = "llvm.loongarch.cpucfg"]
-    fn __cpucfg(a: i32) -> i32;
-    #[link_name = "llvm.loongarch.syscall"]
-    fn __syscall(a: i32);
     #[link_name = "llvm.loongarch.asrtle.d"]
     fn __asrtle(a: i64, b: i64);
     #[link_name = "llvm.loongarch.asrtgt.d"]
@@ -104,70 +45,20 @@ unsafe extern "unadjusted" {
     fn __lddir(a: i64, b: i64) -> i64;
     #[link_name = "llvm.loongarch.ldpte.d"]
     fn __ldpte(a: i64, b: i64);
-    #[link_name = "llvm.loongarch.frecipe.s"]
-    fn __frecipe_s(a: f32) -> f32;
-    #[link_name = "llvm.loongarch.frecipe.d"]
-    fn __frecipe_d(a: f64) -> f64;
-    #[link_name = "llvm.loongarch.frsqrte.s"]
-    fn __frsqrte_s(a: f32) -> f32;
-    #[link_name = "llvm.loongarch.frsqrte.d"]
-    fn __frsqrte_d(a: f64) -> f64;
 }
 
 /// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
 #[inline]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn crc_w_b_w(a: i32, b: i32) -> i32 {
-    __crc_w_b_w(a, b)
-}
-
-/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn crc_w_h_w(a: i32, b: i32) -> i32 {
-    __crc_w_h_w(a, b)
-}
-
-/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn crc_w_w_w(a: i32, b: i32) -> i32 {
-    __crc_w_w_w(a, b)
-}
-
-/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn crc_w_d_w(a: i64, b: i32) -> i32 {
-    __crc_w_d_w(a, b)
-}
-
-/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn crcc_w_b_w(a: i32, b: i32) -> i32 {
-    __crcc_w_b_w(a, b)
-}
-
-/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn crcc_w_h_w(a: i32, b: i32) -> i32 {
-    __crcc_w_h_w(a, b)
+pub fn crc_w_d_w(a: i64, b: i32) -> i32 {
+    unsafe { __crc_w_d_w(a, b) }
 }
 
 /// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
 #[inline]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn crcc_w_w_w(a: i32, b: i32) -> i32 {
-    __crcc_w_w_w(a, b)
-}
-
-/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn crcc_w_d_w(a: i64, b: i32) -> i32 {
-    __crcc_w_d_w(a, b)
+pub fn crcc_w_d_w(a: i64, b: i32) -> i32 {
+    unsafe { __crcc_w_d_w(a, b) }
 }
 
 /// Generates the cache operation instruction
@@ -178,38 +69,6 @@ pub unsafe fn cacop<const IMM12: i64>(a: i64, b: i64) {
     __cacop(a, b, IMM12);
 }
 
-/// Generates the memory barrier instruction
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn dbar<const IMM15: i32>() {
-    static_assert_uimm_bits!(IMM15, 15);
-    __dbar(IMM15);
-}
-
-/// Generates the instruction-fetch barrier instruction
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn ibar<const IMM15: i32>() {
-    static_assert_uimm_bits!(IMM15, 15);
-    __ibar(IMM15);
-}
-
-/// Moves data from a GPR to the FCSR
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn movgr2fcsr<const IMM5: i32>(a: i32) {
-    static_assert_uimm_bits!(IMM5, 5);
-    __movgr2fcsr(IMM5, a);
-}
-
-/// Moves data from a FCSR to the GPR
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn movfcsr2gr<const IMM5: i32>() -> i32 {
-    static_assert_uimm_bits!(IMM5, 5);
-    __movfcsr2gr(IMM5)
-}
-
 /// Reads the CSR
 #[inline]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
@@ -234,27 +93,6 @@ pub unsafe fn csrxchg<const IMM14: i32>(a: i64, b: i64) -> i64 {
     __csrxchg(a, b, IMM14)
 }
 
-/// Reads the 8-bit IO-CSR
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn iocsrrd_b(a: i32) -> i32 {
-    __iocsrrd_b(a)
-}
-
-/// Reads the 16-bit IO-CSR
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn iocsrrd_h(a: i32) -> i32 {
-    __iocsrrd_h(a)
-}
-
-/// Reads the 32-bit IO-CSR
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn iocsrrd_w(a: i32) -> i32 {
-    __iocsrrd_w(a)
-}
-
 /// Reads the 64-bit IO-CSR
 #[inline]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
@@ -262,27 +100,6 @@ pub unsafe fn iocsrrd_d(a: i32) -> i64 {
     __iocsrrd_d(a)
 }
 
-/// Writes the 8-bit IO-CSR
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn iocsrwr_b(a: i32, b: i32) {
-    __iocsrwr_b(a, b)
-}
-
-/// Writes the 16-bit IO-CSR
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn iocsrwr_h(a: i32, b: i32) {
-    __iocsrwr_h(a, b)
-}
-
-/// Writes the 32-bit IO-CSR
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn iocsrwr_w(a: i32, b: i32) {
-    __iocsrwr_w(a, b)
-}
-
 /// Writes the 64-bit IO-CSR
 #[inline]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
@@ -290,29 +107,6 @@ pub unsafe fn iocsrwr_d(a: i64, b: i32) {
     __iocsrwr_d(a, b)
 }
 
-/// Generates the breakpoint instruction
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn brk<const IMM15: i32>() {
-    static_assert_uimm_bits!(IMM15, 15);
-    __break(IMM15);
-}
-
-/// Reads the CPU configuration register
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn cpucfg(a: i32) -> i32 {
-    __cpucfg(a)
-}
-
-/// Generates the syscall instruction
-#[inline]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn syscall<const IMM15: i32>() {
-    static_assert_uimm_bits!(IMM15, 15);
-    __syscall(IMM15);
-}
-
 /// Generates the less-than-or-equal asseration instruction
 #[inline]
 #[unstable(feature = "stdarch_loongarch", issue = "117427")]
@@ -342,35 +136,3 @@ pub unsafe fn lddir<const B: i64>(a: i64) -> i64 {
 pub unsafe fn ldpte<const B: i64>(a: i64) {
     __ldpte(a, B)
 }
-
-/// Calculate the approximate single-precision result of 1.0 divided
-#[inline]
-#[target_feature(enable = "frecipe")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn frecipe_s(a: f32) -> f32 {
-    __frecipe_s(a)
-}
-
-/// Calculate the approximate double-precision result of 1.0 divided
-#[inline]
-#[target_feature(enable = "frecipe")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn frecipe_d(a: f64) -> f64 {
-    __frecipe_d(a)
-}
-
-/// Calculate the approximate single-precision result of dividing 1.0 by the square root
-#[inline]
-#[target_feature(enable = "frecipe")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn frsqrte_s(a: f32) -> f32 {
-    __frsqrte_s(a)
-}
-
-/// Calculate the approximate double-precision result of dividing 1.0 by the square root
-#[inline]
-#[target_feature(enable = "frecipe")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub unsafe fn frsqrte_d(a: f64) -> f64 {
-    __frsqrte_d(a)
-}
diff --git a/library/stdarch/crates/core_arch/src/loongarch_shared/mod.rs b/library/stdarch/crates/core_arch/src/loongarch_shared/mod.rs
new file mode 100644
index 00000000000..710b926f8df
--- /dev/null
+++ b/library/stdarch/crates/core_arch/src/loongarch_shared/mod.rs
@@ -0,0 +1,242 @@
+//! `Shared LoongArch` intrinsics
+
+use crate::arch::asm;
+
+/// Reads the lower 32-bit stable counter value and the counter ID
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn rdtimel_w() -> (i32, isize) {
+    let (val, tid): (i32, isize);
+    unsafe { asm!("rdtimel.w {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack)) };
+    (val, tid)
+}
+
+/// Reads the upper 32-bit stable counter value and the counter ID
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn rdtimeh_w() -> (i32, isize) {
+    let (val, tid): (i32, isize);
+    unsafe { asm!("rdtimeh.w {}, {}", out(reg) val, out(reg) tid, options(readonly, nostack)) };
+    (val, tid)
+}
+
+#[allow(improper_ctypes)]
+unsafe extern "unadjusted" {
+    #[link_name = "llvm.loongarch.crc.w.b.w"]
+    fn __crc_w_b_w(a: i32, b: i32) -> i32;
+    #[link_name = "llvm.loongarch.crc.w.h.w"]
+    fn __crc_w_h_w(a: i32, b: i32) -> i32;
+    #[link_name = "llvm.loongarch.crc.w.w.w"]
+    fn __crc_w_w_w(a: i32, b: i32) -> i32;
+    #[link_name = "llvm.loongarch.crcc.w.b.w"]
+    fn __crcc_w_b_w(a: i32, b: i32) -> i32;
+    #[link_name = "llvm.loongarch.crcc.w.h.w"]
+    fn __crcc_w_h_w(a: i32, b: i32) -> i32;
+    #[link_name = "llvm.loongarch.crcc.w.w.w"]
+    fn __crcc_w_w_w(a: i32, b: i32) -> i32;
+    #[link_name = "llvm.loongarch.dbar"]
+    fn __dbar(a: i32);
+    #[link_name = "llvm.loongarch.ibar"]
+    fn __ibar(a: i32);
+    #[link_name = "llvm.loongarch.movgr2fcsr"]
+    fn __movgr2fcsr(a: i32, b: i32);
+    #[link_name = "llvm.loongarch.movfcsr2gr"]
+    fn __movfcsr2gr(a: i32) -> i32;
+    #[link_name = "llvm.loongarch.iocsrrd.b"]
+    fn __iocsrrd_b(a: i32) -> i32;
+    #[link_name = "llvm.loongarch.iocsrrd.h"]
+    fn __iocsrrd_h(a: i32) -> i32;
+    #[link_name = "llvm.loongarch.iocsrrd.w"]
+    fn __iocsrrd_w(a: i32) -> i32;
+    #[link_name = "llvm.loongarch.iocsrwr.b"]
+    fn __iocsrwr_b(a: i32, b: i32);
+    #[link_name = "llvm.loongarch.iocsrwr.h"]
+    fn __iocsrwr_h(a: i32, b: i32);
+    #[link_name = "llvm.loongarch.iocsrwr.w"]
+    fn __iocsrwr_w(a: i32, b: i32);
+    #[link_name = "llvm.loongarch.break"]
+    fn __break(a: i32);
+    #[link_name = "llvm.loongarch.cpucfg"]
+    fn __cpucfg(a: i32) -> i32;
+    #[link_name = "llvm.loongarch.syscall"]
+    fn __syscall(a: i32);
+    #[link_name = "llvm.loongarch.frecipe.s"]
+    fn __frecipe_s(a: f32) -> f32;
+    #[link_name = "llvm.loongarch.frecipe.d"]
+    fn __frecipe_d(a: f64) -> f64;
+    #[link_name = "llvm.loongarch.frsqrte.s"]
+    fn __frsqrte_s(a: f32) -> f32;
+    #[link_name = "llvm.loongarch.frsqrte.d"]
+    fn __frsqrte_d(a: f64) -> f64;
+}
+
+/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn crc_w_b_w(a: i32, b: i32) -> i32 {
+    unsafe { __crc_w_b_w(a, b) }
+}
+
+/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn crc_w_h_w(a: i32, b: i32) -> i32 {
+    unsafe { __crc_w_h_w(a, b) }
+}
+
+/// Calculate the CRC value using the IEEE 802.3 polynomial (0xEDB88320)
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn crc_w_w_w(a: i32, b: i32) -> i32 {
+    unsafe { __crc_w_w_w(a, b) }
+}
+
+/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn crcc_w_b_w(a: i32, b: i32) -> i32 {
+    unsafe { __crcc_w_b_w(a, b) }
+}
+
+/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn crcc_w_h_w(a: i32, b: i32) -> i32 {
+    unsafe { __crcc_w_h_w(a, b) }
+}
+
+/// Calculate the CRC value using the Castagnoli polynomial (0x82F63B78)
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn crcc_w_w_w(a: i32, b: i32) -> i32 {
+    unsafe { __crcc_w_w_w(a, b) }
+}
+
+/// Generates the memory barrier instruction
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn dbar<const IMM15: i32>() {
+    static_assert_uimm_bits!(IMM15, 15);
+    unsafe { __dbar(IMM15) };
+}
+
+/// Generates the instruction-fetch barrier instruction
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn ibar<const IMM15: i32>() {
+    static_assert_uimm_bits!(IMM15, 15);
+    unsafe { __ibar(IMM15) };
+}
+
+/// Moves data from a GPR to the FCSR
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn movgr2fcsr<const IMM5: i32>(a: i32) {
+    static_assert_uimm_bits!(IMM5, 5);
+    __movgr2fcsr(IMM5, a);
+}
+
+/// Moves data from a FCSR to the GPR
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn movfcsr2gr<const IMM5: i32>() -> i32 {
+    static_assert_uimm_bits!(IMM5, 5);
+    unsafe { __movfcsr2gr(IMM5) }
+}
+
+/// Reads the 8-bit IO-CSR
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn iocsrrd_b(a: i32) -> i32 {
+    __iocsrrd_b(a)
+}
+
+/// Reads the 16-bit IO-CSR
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn iocsrrd_h(a: i32) -> i32 {
+    __iocsrrd_h(a)
+}
+
+/// Reads the 32-bit IO-CSR
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn iocsrrd_w(a: i32) -> i32 {
+    __iocsrrd_w(a)
+}
+
+/// Writes the 8-bit IO-CSR
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn iocsrwr_b(a: i32, b: i32) {
+    __iocsrwr_b(a, b)
+}
+
+/// Writes the 16-bit IO-CSR
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn iocsrwr_h(a: i32, b: i32) {
+    __iocsrwr_h(a, b)
+}
+
+/// Writes the 32-bit IO-CSR
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn iocsrwr_w(a: i32, b: i32) {
+    __iocsrwr_w(a, b)
+}
+
+/// Generates the breakpoint instruction
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn brk<const IMM15: i32>() {
+    static_assert_uimm_bits!(IMM15, 15);
+    __break(IMM15);
+}
+
+/// Reads the CPU configuration register
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn cpucfg(a: i32) -> i32 {
+    unsafe { __cpucfg(a) }
+}
+
+/// Generates the syscall instruction
+#[inline]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub unsafe fn syscall<const IMM15: i32>() {
+    static_assert_uimm_bits!(IMM15, 15);
+    __syscall(IMM15);
+}
+
+/// Calculate the approximate single-precision result of 1.0 divided
+#[inline]
+#[target_feature(enable = "frecipe")]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn frecipe_s(a: f32) -> f32 {
+    unsafe { __frecipe_s(a) }
+}
+
+/// Calculate the approximate double-precision result of 1.0 divided
+#[inline]
+#[target_feature(enable = "frecipe")]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn frecipe_d(a: f64) -> f64 {
+    unsafe { __frecipe_d(a) }
+}
+
+/// Calculate the approximate single-precision result of dividing 1.0 by the square root
+#[inline]
+#[target_feature(enable = "frecipe")]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn frsqrte_s(a: f32) -> f32 {
+    unsafe { __frsqrte_s(a) }
+}
+
+/// Calculate the approximate double-precision result of dividing 1.0 by the square root
+#[inline]
+#[target_feature(enable = "frecipe")]
+#[unstable(feature = "stdarch_loongarch", issue = "117427")]
+pub fn frsqrte_d(a: f64) -> f64 {
+    unsafe { __frsqrte_d(a) }
+}
diff --git a/library/stdarch/crates/core_arch/src/mod.rs b/library/stdarch/crates/core_arch/src/mod.rs
index f6e959efd47..2105cca1b43 100644
--- a/library/stdarch/crates/core_arch/src/mod.rs
+++ b/library/stdarch/crates/core_arch/src/mod.rs
@@ -16,6 +16,9 @@ mod riscv_shared;
 ))]
 mod arm_shared;
 
+#[cfg(any(target_arch = "loongarch32", target_arch = "loongarch64", doc))]
+mod loongarch_shared;
+
 mod simd;
 
 #[doc = include_str!("core_arch_docs.md")]
@@ -271,13 +274,25 @@ pub mod arch {
         pub use crate::core_arch::nvptx::*;
     }
 
-    /// Platform-specific intrinsics for the `loongarch` platform.
+    /// Platform-specific intrinsics for the `loongarch32` platform.
+    ///
+    /// See the [module documentation](../index.html) for more details.
+    #[cfg(any(target_arch = "loongarch32", doc))]
+    #[doc(cfg(target_arch = "loongarch32"))]
+    #[unstable(feature = "stdarch_loongarch", issue = "117427")]
+    pub mod loongarch32 {
+        pub use crate::core_arch::loongarch_shared::*;
+        pub use crate::core_arch::loongarch32::*;
+    }
+
+    /// Platform-specific intrinsics for the `loongarch64` platform.
     ///
     /// See the [module documentation](../index.html) for more details.
     #[cfg(any(target_arch = "loongarch64", doc))]
     #[doc(cfg(target_arch = "loongarch64"))]
     #[unstable(feature = "stdarch_loongarch", issue = "117427")]
     pub mod loongarch64 {
+        pub use crate::core_arch::loongarch_shared::*;
         pub use crate::core_arch::loongarch64::*;
     }
 
@@ -334,6 +349,10 @@ mod powerpc64;
 #[doc(cfg(target_arch = "nvptx64"))]
 mod nvptx;
 
+#[cfg(any(target_arch = "loongarch32", doc))]
+#[doc(cfg(target_arch = "loongarch32"))]
+mod loongarch32;
+
 #[cfg(any(target_arch = "loongarch64", doc))]
 #[doc(cfg(target_arch = "loongarch64"))]
 mod loongarch64;
diff --git a/library/stdarch/crates/core_arch/src/s390x/vector.rs b/library/stdarch/crates/core_arch/src/s390x/vector.rs
index 1cd33c3554b..a09a27a029c 100644
--- a/library/stdarch/crates/core_arch/src/s390x/vector.rs
+++ b/library/stdarch/crates/core_arch/src/s390x/vector.rs
@@ -1181,6 +1181,20 @@ mod sealed {
 
     impl_vec_trait! { [VectorOrc vec_orc]+ 2c (orc) }
 
+    // Z vector intrinsic      C23 math.h  LLVM IR         ISO/IEC 60559 operation        inexact  vfidb parameters
+    //
+    // vec_rint                rint        llvm.rint       roundToIntegralExact           yes      0, 0
+    // vec_roundc              nearbyint   llvm.nearbyint  n/a                            no       4, 0
+    // vec_floor / vec_roundm  floor       llvm.floor      roundToIntegralTowardNegative  no       4, 7
+    // vec_ceil / vec_roundp   ceil        llvm.ceil       roundToIntegralTowardPositive  no       4, 6
+    // vec_trunc / vec_roundz  trunc       llvm.trunc      roundToIntegralTowardZero      no       4, 5
+    // vec_round               roundeven   llvm.roundeven  roundToIntegralTiesToEven      no       4, 4
+    // n/a                     round       llvm.round      roundToIntegralTiesAway        no       4, 1
+
+    // `simd_round_ties_even` is implemented as `llvm.rint`.
+    test_impl! { vec_rint_f32 (a: vector_float) -> vector_float [simd_round_ties_even, "vector-enhancements-1" vfisb] }
+    test_impl! { vec_rint_f64 (a: vector_double) -> vector_double [simd_round_ties_even, vfidb] }
+
     test_impl! { vec_roundc_f32 (a: vector_float) -> vector_float [nearbyint_v4f32,  "vector-enhancements-1" vfisb] }
     test_impl! { vec_roundc_f64 (a: vector_double) -> vector_double [nearbyint_v2f64, vfidb] }
 
@@ -1189,9 +1203,6 @@ mod sealed {
     test_impl! { vec_round_f32 (a: vector_float) -> vector_float [roundeven_v4f32, _] }
     test_impl! { vec_round_f64 (a: vector_double) -> vector_double [roundeven_v2f64, _] }
 
-    test_impl! { vec_rint_f32 (a: vector_float) -> vector_float [simd_round_ties_even, "vector-enhancements-1" vfisb] }
-    test_impl! { vec_rint_f64 (a: vector_double) -> vector_double [simd_round_ties_even, vfidb] }
-
     #[unstable(feature = "stdarch_s390x", issue = "135681")]
     pub trait VectorRoundc {
         unsafe fn vec_roundc(self) -> Self;
@@ -2254,14 +2265,14 @@ mod sealed {
 
     #[inline]
     #[target_feature(enable = "vector")]
-    #[cfg_attr(test, assert_instr("vlbb"))]
+    #[cfg_attr(test, assert_instr(vlbb))]
     unsafe fn test_vec_load_bndry(ptr: *const i32) -> MaybeUninit<vector_signed_int> {
         vector_signed_int::vec_load_bndry::<512>(ptr)
     }
 
     #[inline]
     #[target_feature(enable = "vector")]
-    #[cfg_attr(test, assert_instr(vst))]
+    #[cfg_attr(test, assert_instr(vstl))]
     unsafe fn test_vec_store_len(vector: vector_signed_int, ptr: *mut i32, byte_count: u32) {
         vector.vec_store_len(ptr, byte_count)
     }
@@ -2787,11 +2798,11 @@ mod sealed {
     }
 
     test_impl! { vec_vmal_ib(a: vector_signed_char, b: vector_signed_char, c: vector_signed_char) -> vector_signed_char [simd_mladd, vmalb ] }
-    test_impl! { vec_vmal_ih(a: vector_signed_short, b: vector_signed_short, c: vector_signed_short) -> vector_signed_short[simd_mladd, vmalh ] }
+    test_impl! { vec_vmal_ih(a: vector_signed_short, b: vector_signed_short, c: vector_signed_short) -> vector_signed_short[simd_mladd, vmalhw ] }
     test_impl! { vec_vmal_if(a: vector_signed_int, b: vector_signed_int, c: vector_signed_int) -> vector_signed_int [simd_mladd, vmalf ] }
 
     test_impl! { vec_vmal_ub(a: vector_unsigned_char, b: vector_unsigned_char, c: vector_unsigned_char) -> vector_unsigned_char [simd_mladd, vmalb ] }
-    test_impl! { vec_vmal_uh(a: vector_unsigned_short, b: vector_unsigned_short, c: vector_unsigned_short) -> vector_unsigned_short[simd_mladd, vmalh ] }
+    test_impl! { vec_vmal_uh(a: vector_unsigned_short, b: vector_unsigned_short, c: vector_unsigned_short) -> vector_unsigned_short[simd_mladd, vmalhw ] }
     test_impl! { vec_vmal_uf(a: vector_unsigned_int, b: vector_unsigned_int, c: vector_unsigned_int) -> vector_unsigned_int [simd_mladd, vmalf ] }
 
     impl_mul!([VectorMladd vec_mladd] vec_vmal_ib (vector_signed_char, vector_signed_char, vector_signed_char) -> vector_signed_char );
diff --git a/library/stdarch/crates/intrinsic-test/src/arm/compile.rs b/library/stdarch/crates/intrinsic-test/src/arm/compile.rs
index 8276cd87c1c..48a8ed950e3 100644
--- a/library/stdarch/crates/intrinsic-test/src/arm/compile.rs
+++ b/library/stdarch/crates/intrinsic-test/src/arm/compile.rs
@@ -1,64 +1,51 @@
-use crate::common::compile_c::CompilationCommandBuilder;
-use crate::common::gen_c::compile_c_programs;
+use crate::common::cli::ProcessedCli;
+use crate::common::compile_c::{CompilationCommandBuilder, CppCompilation};
+
+pub fn build_cpp_compilation(config: &ProcessedCli) -> Option<CppCompilation> {
+    let cpp_compiler = config.cpp_compiler.as_ref()?;
 
-pub fn compile_c_arm(
-    intrinsics_name_list: &[String],
-    compiler: &str,
-    target: &str,
-    cxx_toolchain_dir: Option<&str>,
-) -> bool {
     // -ffp-contract=off emulates Rust's approach of not fusing separate mul-add operations
     let mut command = CompilationCommandBuilder::new()
         .add_arch_flags(vec!["armv8.6-a", "crypto", "crc", "dotprod", "fp16"])
-        .set_compiler(compiler)
-        .set_target(target)
+        .set_compiler(cpp_compiler)
+        .set_target(&config.target)
         .set_opt_level("2")
-        .set_cxx_toolchain_dir(cxx_toolchain_dir)
+        .set_cxx_toolchain_dir(config.cxx_toolchain_dir.as_deref())
         .set_project_root("c_programs")
         .add_extra_flags(vec!["-ffp-contract=off", "-Wno-narrowing"]);
 
-    if !target.contains("v7") {
+    if !config.target.contains("v7") {
         command = command.add_arch_flags(vec!["faminmax", "lut", "sha3"]);
     }
 
-    /*
-     * clang++ cannot link an aarch64_be object file, so we invoke
-     * aarch64_be-unknown-linux-gnu's C++ linker. This ensures that we
-     * are testing the intrinsics against LLVM.
-     *
-     * Note: setting `--sysroot=<...>` which is the obvious thing to do
-     * does not work as it gets caught up with `#include_next <stdlib.h>`
-     * not existing...
-     */
-    if target.contains("aarch64_be") {
-        command = command
-            .set_linker(
-                cxx_toolchain_dir.unwrap_or("").to_string() + "/bin/aarch64_be-none-linux-gnu-g++",
-            )
-            .set_include_paths(vec![
-                "/include",
-                "/aarch64_be-none-linux-gnu/include",
-                "/aarch64_be-none-linux-gnu/include/c++/14.2.1",
-                "/aarch64_be-none-linux-gnu/include/c++/14.2.1/aarch64_be-none-linux-gnu",
-                "/aarch64_be-none-linux-gnu/include/c++/14.2.1/backward",
-                "/aarch64_be-none-linux-gnu/libc/usr/include",
-            ]);
-    }
-
-    if !compiler.contains("clang") {
+    if !cpp_compiler.contains("clang") {
         command = command.add_extra_flag("-flax-vector-conversions");
     }
 
-    let compiler_commands = intrinsics_name_list
-        .iter()
-        .map(|intrinsic_name| {
-            command
-                .clone()
-                .set_input_name(intrinsic_name)
-                .set_output_name(intrinsic_name)
-                .make_string()
-        })
-        .collect::<Vec<_>>();
+    let mut cpp_compiler = command.into_cpp_compilation();
+
+    if config.target.contains("aarch64_be") {
+        let Some(ref cxx_toolchain_dir) = config.cxx_toolchain_dir else {
+            panic!(
+                "target `{}` must specify `cxx_toolchain_dir`",
+                config.target
+            )
+        };
+
+        cpp_compiler.command_mut().args([
+            &format!("--sysroot={cxx_toolchain_dir}/aarch64_be-none-linux-gnu/libc"),
+            "--include-directory",
+            &format!("{cxx_toolchain_dir}/aarch64_be-none-linux-gnu/include/c++/14.3.1"),
+            "--include-directory",
+            &format!("{cxx_toolchain_dir}/aarch64_be-none-linux-gnu/include/c++/14.3.1/aarch64_be-none-linux-gnu"),
+            "-L",
+            &format!("{cxx_toolchain_dir}/lib/gcc/aarch64_be-none-linux-gnu/14.3.1"),
+            "-L",
+            &format!("{cxx_toolchain_dir}/aarch64_be-none-linux-gnu/libc/usr/lib"),
+            "-B",
+            &format!("{cxx_toolchain_dir}/lib/gcc/aarch64_be-none-linux-gnu/14.3.1"),
+        ]);
+    }
 
-    compile_c_programs(&compiler_commands)
+    Some(cpp_compiler)
 }
diff --git a/library/stdarch/crates/intrinsic-test/src/arm/config.rs b/library/stdarch/crates/intrinsic-test/src/arm/config.rs
index cee80374ae9..9a7b37253d1 100644
--- a/library/stdarch/crates/intrinsic-test/src/arm/config.rs
+++ b/library/stdarch/crates/intrinsic-test/src/arm/config.rs
@@ -114,7 +114,6 @@ pub const AARCH_CONFIGURATIONS: &str = r#"
 #![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_fcma))]
 #![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_dotprod))]
 #![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_i8mm))]
-#![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_sha3))]
 #![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_sm4))]
 #![cfg_attr(any(target_arch = "aarch64", target_arch = "arm64ec"), feature(stdarch_neon_ftts))]
 #![feature(fmt_helpers_for_derive)]
diff --git a/library/stdarch/crates/intrinsic-test/src/arm/intrinsic.rs b/library/stdarch/crates/intrinsic-test/src/arm/intrinsic.rs
index 773dabf4d75..16572b2c03f 100644
--- a/library/stdarch/crates/intrinsic-test/src/arm/intrinsic.rs
+++ b/library/stdarch/crates/intrinsic-test/src/arm/intrinsic.rs
@@ -1,8 +1,8 @@
 use crate::common::argument::ArgumentList;
 use crate::common::indentation::Indentation;
 use crate::common::intrinsic::{Intrinsic, IntrinsicDefinition};
-use crate::common::intrinsic_helpers::{IntrinsicType, IntrinsicTypeDefinition, TypeKind};
-use std::ops::Deref;
+use crate::common::intrinsic_helpers::{IntrinsicType, IntrinsicTypeDefinition, Sign, TypeKind};
+use std::ops::{Deref, DerefMut};
 
 #[derive(Debug, Clone, PartialEq)]
 pub struct ArmIntrinsicType(pub IntrinsicType);
@@ -15,6 +15,12 @@ impl Deref for ArmIntrinsicType {
     }
 }
 
+impl DerefMut for ArmIntrinsicType {
+    fn deref_mut(&mut self) -> &mut Self::Target {
+        &mut self.0
+    }
+}
+
 impl IntrinsicDefinition<ArmIntrinsicType> for Intrinsic<ArmIntrinsicType> {
     fn arguments(&self) -> ArgumentList<ArmIntrinsicType> {
         self.arguments.clone()
@@ -73,8 +79,9 @@ impl IntrinsicDefinition<ArmIntrinsicType> for Intrinsic<ArmIntrinsicType> {
                     TypeKind::Float if self.results().inner_size() == 16 => "float16_t".to_string(),
                     TypeKind::Float if self.results().inner_size() == 32 => "float".to_string(),
                     TypeKind::Float if self.results().inner_size() == 64 => "double".to_string(),
-                    TypeKind::Int => format!("int{}_t", self.results().inner_size()),
-                    TypeKind::UInt => format!("uint{}_t", self.results().inner_size()),
+                    TypeKind::Int(Sign::Signed) => format!("int{}_t", self.results().inner_size()),
+                    TypeKind::Int(Sign::Unsigned) =>
+                        format!("uint{}_t", self.results().inner_size()),
                     TypeKind::Poly => format!("poly{}_t", self.results().inner_size()),
                     ty => todo!("print_result_c - Unknown type: {:#?}", ty),
                 },
diff --git a/library/stdarch/crates/intrinsic-test/src/arm/json_parser.rs b/library/stdarch/crates/intrinsic-test/src/arm/json_parser.rs
index 0ac47484b01..58d366c86a9 100644
--- a/library/stdarch/crates/intrinsic-test/src/arm/json_parser.rs
+++ b/library/stdarch/crates/intrinsic-test/src/arm/json_parser.rs
@@ -110,7 +110,7 @@ fn json_to_intrinsic(
     Ok(Intrinsic {
         name,
         arguments,
-        results: *results,
+        results: results,
         arch_tags: intr.architectures,
     })
 }
diff --git a/library/stdarch/crates/intrinsic-test/src/arm/mod.rs b/library/stdarch/crates/intrinsic-test/src/arm/mod.rs
index 6aaa49ff97f..0a64a24e731 100644
--- a/library/stdarch/crates/intrinsic-test/src/arm/mod.rs
+++ b/library/stdarch/crates/intrinsic-test/src/arm/mod.rs
@@ -4,15 +4,20 @@ mod intrinsic;
 mod json_parser;
 mod types;
 
+use std::fs::File;
+
+use rayon::prelude::*;
+
+use crate::arm::config::POLY128_OSTREAM_DEF;
 use crate::common::SupportedArchitectureTest;
 use crate::common::cli::ProcessedCli;
 use crate::common::compare::compare_outputs;
+use crate::common::gen_c::{write_main_cpp, write_mod_cpp};
 use crate::common::gen_rust::compile_rust_programs;
 use crate::common::intrinsic::{Intrinsic, IntrinsicDefinition};
 use crate::common::intrinsic_helpers::TypeKind;
-use crate::common::write_file::{write_c_testfiles, write_rust_testfiles};
-use compile::compile_c_arm;
-use config::{AARCH_CONFIGURATIONS, F16_FORMATTING_DEF, POLY128_OSTREAM_DEF, build_notices};
+use crate::common::write_file::write_rust_testfiles;
+use config::{AARCH_CONFIGURATIONS, F16_FORMATTING_DEF, build_notices};
 use intrinsic::ArmIntrinsicType;
 use json_parser::get_neon_intrinsics;
 
@@ -21,6 +26,13 @@ pub struct ArmArchitectureTest {
     cli_options: ProcessedCli,
 }
 
+fn chunk_info(intrinsic_count: usize) -> (usize, usize) {
+    let available_parallelism = std::thread::available_parallelism().unwrap().get();
+    let chunk_size = intrinsic_count.div_ceil(Ord::min(available_parallelism, intrinsic_count));
+
+    (chunk_size, intrinsic_count.div_ceil(chunk_size))
+}
+
 impl SupportedArchitectureTest for ArmArchitectureTest {
     fn create(cli_options: ProcessedCli) -> Box<Self> {
         let a32 = cli_options.target.contains("v7");
@@ -51,33 +63,58 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
     }
 
     fn build_c_file(&self) -> bool {
-        let compiler = self.cli_options.cpp_compiler.as_deref();
-        let target = &self.cli_options.target;
-        let cxx_toolchain_dir = self.cli_options.cxx_toolchain_dir.as_deref();
         let c_target = "aarch64";
+        let platform_headers = &["arm_neon.h", "arm_acle.h", "arm_fp16.h"];
 
-        let intrinsics_name_list = write_c_testfiles(
-            &self
-                .intrinsics
-                .iter()
-                .map(|i| i as &dyn IntrinsicDefinition<_>)
-                .collect::<Vec<_>>(),
-            target,
+        let (chunk_size, chunk_count) = chunk_info(self.intrinsics.len());
+
+        let cpp_compiler = compile::build_cpp_compilation(&self.cli_options).unwrap();
+
+        let notice = &build_notices("// ");
+        self.intrinsics
+            .par_chunks(chunk_size)
+            .enumerate()
+            .map(|(i, chunk)| {
+                let c_filename = format!("c_programs/mod_{i}.cpp");
+                let mut file = File::create(&c_filename).unwrap();
+                write_mod_cpp(&mut file, notice, c_target, platform_headers, chunk).unwrap();
+
+                // compile this cpp file into a .o file
+                let output = cpp_compiler
+                    .compile_object_file(&format!("mod_{i}.cpp"), &format!("mod_{i}.o"))?;
+                assert!(output.status.success(), "{output:?}");
+
+                Ok(())
+            })
+            .collect::<Result<(), std::io::Error>>()
+            .unwrap();
+
+        let mut file = File::create("c_programs/main.cpp").unwrap();
+        write_main_cpp(
+            &mut file,
             c_target,
-            &["arm_neon.h", "arm_acle.h", "arm_fp16.h"],
-            &build_notices("// "),
-            &[POLY128_OSTREAM_DEF],
-        );
+            POLY128_OSTREAM_DEF,
+            self.intrinsics.iter().map(|i| i.name.as_str()),
+        )
+        .unwrap();
 
-        match compiler {
-            None => true,
-            Some(compiler) => compile_c_arm(
-                intrinsics_name_list.as_slice(),
-                compiler,
-                target,
-                cxx_toolchain_dir,
-            ),
-        }
+        // compile this cpp file into a .o file
+        info!("compiling main.cpp");
+        let output = cpp_compiler
+            .compile_object_file("main.cpp", "intrinsic-test-programs.o")
+            .unwrap();
+        assert!(output.status.success(), "{output:?}");
+
+        let object_files = (0..chunk_count)
+            .map(|i| format!("mod_{i}.o"))
+            .chain(["intrinsic-test-programs.o".to_owned()]);
+
+        let output = cpp_compiler
+            .link_executable(object_files, "intrinsic-test-programs")
+            .unwrap();
+        assert!(output.status.success(), "{output:?}");
+
+        true
     }
 
     fn build_rust_file(&self) -> bool {
@@ -104,7 +141,7 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
     }
 
     fn compare_outputs(&self) -> bool {
-        if let Some(ref toolchain) = self.cli_options.toolchain {
+        if self.cli_options.toolchain.is_some() {
             let intrinsics_name_list = self
                 .intrinsics
                 .iter()
@@ -113,8 +150,7 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
 
             compare_outputs(
                 &intrinsics_name_list,
-                toolchain,
-                &self.cli_options.c_runner,
+                &self.cli_options.runner,
                 &self.cli_options.target,
             )
         } else {
diff --git a/library/stdarch/crates/intrinsic-test/src/arm/types.rs b/library/stdarch/crates/intrinsic-test/src/arm/types.rs
index 9f3d6302f46..77f5e8d0e56 100644
--- a/library/stdarch/crates/intrinsic-test/src/arm/types.rs
+++ b/library/stdarch/crates/intrinsic-test/src/arm/types.rs
@@ -1,6 +1,6 @@
 use super::intrinsic::ArmIntrinsicType;
 use crate::common::cli::Language;
-use crate::common::intrinsic_helpers::{IntrinsicType, IntrinsicTypeDefinition, TypeKind};
+use crate::common::intrinsic_helpers::{IntrinsicType, IntrinsicTypeDefinition, Sign, TypeKind};
 
 impl IntrinsicTypeDefinition for ArmIntrinsicType {
     /// Gets a string containing the typename for this type in C format.
@@ -73,8 +73,8 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
             format!(
                 "vld{len}{quad}_{type}{size}",
                 type = match k {
-                    TypeKind::UInt => "u",
-                    TypeKind::Int => "s",
+                    TypeKind::Int(Sign::Unsigned) => "u",
+                    TypeKind::Int(Sign::Signed) => "s",
                     TypeKind::Float => "f",
                     // The ACLE doesn't support 64-bit polynomial loads on Armv7
                     // if armv7 and bl == 64, use "s", else "p"
@@ -107,8 +107,8 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
             format!(
                 "vget{quad}_lane_{type}{size}",
                 type = match k {
-                    TypeKind::UInt => "u",
-                    TypeKind::Int => "s",
+                    TypeKind::Int(Sign::Unsigned) => "u",
+                    TypeKind::Int(Sign::Signed) => "s",
                     TypeKind::Float => "f",
                     TypeKind::Poly => "p",
                     x => todo!("get_load_function TypeKind: {:#?}", x),
@@ -121,7 +121,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
         }
     }
 
-    fn from_c(s: &str, target: &str) -> Result<Box<Self>, String> {
+    fn from_c(s: &str, target: &str) -> Result<Self, String> {
         const CONST_STR: &str = "const";
         if let Some(s) = s.strip_suffix('*') {
             let (s, constant) = match s.trim().strip_suffix(CONST_STR) {
@@ -131,9 +131,8 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
             let s = s.trim_end();
             let temp_return = ArmIntrinsicType::from_c(s, target);
             temp_return.map(|mut op| {
-                let edited = op.as_mut();
-                edited.0.ptr = true;
-                edited.0.ptr_constant = constant;
+                op.ptr = true;
+                op.ptr_constant = constant;
                 op
             })
         } else {
@@ -163,7 +162,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
                     ),
                     None => None,
                 };
-                Ok(Box::new(ArmIntrinsicType(IntrinsicType {
+                Ok(ArmIntrinsicType(IntrinsicType {
                     ptr: false,
                     ptr_constant: false,
                     constant,
@@ -172,14 +171,14 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
                     simd_len,
                     vec_len,
                     target: target.to_string(),
-                })))
+                }))
             } else {
                 let kind = start.parse::<TypeKind>()?;
                 let bit_len = match kind {
-                    TypeKind::Int => Some(32),
+                    TypeKind::Int(_) => Some(32),
                     _ => None,
                 };
-                Ok(Box::new(ArmIntrinsicType(IntrinsicType {
+                Ok(ArmIntrinsicType(IntrinsicType {
                     ptr: false,
                     ptr_constant: false,
                     constant,
@@ -188,7 +187,7 @@ impl IntrinsicTypeDefinition for ArmIntrinsicType {
                     simd_len: None,
                     vec_len: None,
                     target: target.to_string(),
-                })))
+                }))
             }
         }
     }
diff --git a/library/stdarch/crates/intrinsic-test/src/common/argument.rs b/library/stdarch/crates/intrinsic-test/src/common/argument.rs
index 443ccb919f4..1df4f55995e 100644
--- a/library/stdarch/crates/intrinsic-test/src/common/argument.rs
+++ b/library/stdarch/crates/intrinsic-test/src/common/argument.rs
@@ -76,7 +76,7 @@ where
         Argument {
             pos,
             name: String::from(var_name),
-            ty: *ty,
+            ty: ty,
             constraint,
         }
     }
@@ -125,19 +125,23 @@ where
     /// Creates a line for each argument that initializes an array for C from which `loads` argument
     /// values can be loaded  as a sliding window.
     /// e.g `const int32x2_t a_vals = {0x3effffff, 0x3effffff, 0x3f7fffff}`, if loads=2.
-    pub fn gen_arglists_c(&self, indentation: Indentation, loads: u32) -> String {
-        self.iter()
-            .filter(|&arg| !arg.has_constraint())
-            .map(|arg| {
-                format!(
-                    "{indentation}const {ty} {name}_vals[] = {values};",
-                    ty = arg.ty.c_scalar_type(),
-                    name = arg.name,
-                    values = arg.ty.populate_random(indentation, loads, &Language::C)
-                )
-            })
-            .collect::<Vec<_>>()
-            .join("\n")
+    pub fn gen_arglists_c(
+        &self,
+        w: &mut impl std::io::Write,
+        indentation: Indentation,
+        loads: u32,
+    ) -> std::io::Result<()> {
+        for arg in self.iter().filter(|&arg| !arg.has_constraint()) {
+            writeln!(
+                w,
+                "{indentation}const {ty} {name}_vals[] = {values};",
+                ty = arg.ty.c_scalar_type(),
+                name = arg.name,
+                values = arg.ty.populate_random(indentation, loads, &Language::C)
+            )?
+        }
+
+        Ok(())
     }
 
     /// Creates a line for each argument that initializes an array for Rust from which `loads` argument
diff --git a/library/stdarch/crates/intrinsic-test/src/common/cli.rs b/library/stdarch/crates/intrinsic-test/src/common/cli.rs
index 1d572723008..beae6a4b044 100644
--- a/library/stdarch/crates/intrinsic-test/src/common/cli.rs
+++ b/library/stdarch/crates/intrinsic-test/src/common/cli.rs
@@ -60,7 +60,7 @@ pub struct ProcessedCli {
     pub filename: PathBuf,
     pub toolchain: Option<String>,
     pub cpp_compiler: Option<String>,
-    pub c_runner: String,
+    pub runner: String,
     pub target: String,
     pub linker: Option<String>,
     pub cxx_toolchain_dir: Option<String>,
@@ -70,7 +70,7 @@ pub struct ProcessedCli {
 impl ProcessedCli {
     pub fn new(cli_options: Cli) -> Self {
         let filename = cli_options.input;
-        let c_runner = cli_options.runner.unwrap_or_default();
+        let runner = cli_options.runner.unwrap_or_default();
         let target = cli_options.target;
         let linker = cli_options.linker;
         let cxx_toolchain_dir = cli_options.cxx_toolchain_dir;
@@ -102,7 +102,7 @@ impl ProcessedCli {
         Self {
             toolchain,
             cpp_compiler,
-            c_runner,
+            runner,
             target,
             linker,
             cxx_toolchain_dir,
diff --git a/library/stdarch/crates/intrinsic-test/src/common/compare.rs b/library/stdarch/crates/intrinsic-test/src/common/compare.rs
index 9e0cbe8cd6a..cb55922eb19 100644
--- a/library/stdarch/crates/intrinsic-test/src/common/compare.rs
+++ b/library/stdarch/crates/intrinsic-test/src/common/compare.rs
@@ -2,27 +2,25 @@ use super::cli::FailureReason;
 use rayon::prelude::*;
 use std::process::Command;
 
-pub fn compare_outputs(
-    intrinsic_name_list: &Vec<String>,
-    toolchain: &str,
-    runner: &str,
-    target: &str,
-) -> bool {
+pub fn compare_outputs(intrinsic_name_list: &Vec<String>, runner: &str, target: &str) -> bool {
+    fn runner_command(runner: &str) -> Command {
+        let mut it = runner.split_whitespace();
+        let mut cmd = Command::new(it.next().unwrap());
+        cmd.args(it);
+
+        cmd
+    }
+
     let intrinsics = intrinsic_name_list
         .par_iter()
         .filter_map(|intrinsic_name| {
-            let c = Command::new("sh")
-                .arg("-c")
-                .arg(format!("{runner} ./c_programs/{intrinsic_name}"))
+            let c = runner_command(runner)
+                .arg("./c_programs/intrinsic-test-programs")
+                .arg(intrinsic_name)
                 .output();
 
-            let rust = Command::new("sh")
-                .current_dir("rust_programs")
-                .arg("-c")
-                .arg(format!(
-                    "cargo {toolchain} run --target {target} --bin {intrinsic_name} --release",
-                ))
-                .env("RUSTFLAGS", "-Cdebuginfo=0")
+            let rust = runner_command(runner)
+                .arg(format!("target/{target}/release/{intrinsic_name}"))
                 .output();
 
             let (c, rust) = match (c, rust) {
@@ -42,8 +40,8 @@ pub fn compare_outputs(
             if !rust.status.success() {
                 error!(
                     "Failed to run Rust program for intrinsic {intrinsic_name}\nstdout: {stdout}\nstderr: {stderr}",
-                    stdout = std::str::from_utf8(&rust.stdout).unwrap_or(""),
-                    stderr = std::str::from_utf8(&rust.stderr).unwrap_or(""),
+                    stdout = String::from_utf8_lossy(&rust.stdout),
+                    stderr = String::from_utf8_lossy(&rust.stderr),
                 );
                 return Some(FailureReason::RunRust(intrinsic_name.clone()));
             }
diff --git a/library/stdarch/crates/intrinsic-test/src/common/compile_c.rs b/library/stdarch/crates/intrinsic-test/src/common/compile_c.rs
index aebb7b111e2..0c905a149e4 100644
--- a/library/stdarch/crates/intrinsic-test/src/common/compile_c.rs
+++ b/library/stdarch/crates/intrinsic-test/src/common/compile_c.rs
@@ -5,11 +5,7 @@ pub struct CompilationCommandBuilder {
     cxx_toolchain_dir: Option<String>,
     arch_flags: Vec<String>,
     optimization: String,
-    include_paths: Vec<String>,
     project_root: Option<String>,
-    output: String,
-    input: String,
-    linker: Option<String>,
     extra_flags: Vec<String>,
 }
 
@@ -21,11 +17,7 @@ impl CompilationCommandBuilder {
             cxx_toolchain_dir: None,
             arch_flags: Vec::new(),
             optimization: "2".to_string(),
-            include_paths: Vec::new(),
             project_root: None,
-            output: String::new(),
-            input: String::new(),
-            linker: None,
             extra_flags: Vec::new(),
         }
     }
@@ -57,37 +49,12 @@ impl CompilationCommandBuilder {
         self
     }
 
-    /// Sets a list of include paths for compilation.
-    /// The paths that are passed must be relative to the
-    /// "cxx_toolchain_dir" directory path.
-    pub fn set_include_paths(mut self, paths: Vec<&str>) -> Self {
-        self.include_paths = paths.into_iter().map(|path| path.to_string()).collect();
-        self
-    }
-
     /// Sets the root path of all the generated test files.
     pub fn set_project_root(mut self, path: &str) -> Self {
         self.project_root = Some(path.to_string());
         self
     }
 
-    /// The name of the output executable, without any suffixes
-    pub fn set_output_name(mut self, path: &str) -> Self {
-        self.output = path.to_string();
-        self
-    }
-
-    /// The name of the input C file, without any suffixes
-    pub fn set_input_name(mut self, path: &str) -> Self {
-        self.input = path.to_string();
-        self
-    }
-
-    pub fn set_linker(mut self, linker: String) -> Self {
-        self.linker = Some(linker);
-        self
-    }
-
     pub fn add_extra_flags(mut self, flags: Vec<&str>) -> Self {
         let mut flags: Vec<String> = flags.into_iter().map(|f| f.to_string()).collect();
         self.extra_flags.append(&mut flags);
@@ -100,55 +67,69 @@ impl CompilationCommandBuilder {
 }
 
 impl CompilationCommandBuilder {
-    pub fn make_string(self) -> String {
-        let arch_flags = self.arch_flags.join("+");
+    pub fn into_cpp_compilation(self) -> CppCompilation {
+        let mut cpp_compiler = std::process::Command::new(self.compiler);
+
+        if let Some(project_root) = self.project_root {
+            cpp_compiler.current_dir(project_root);
+        }
+
         let flags = std::env::var("CPPFLAGS").unwrap_or("".into());
-        let project_root = self.project_root.unwrap_or_default();
-        let project_root_str = project_root.as_str();
-        let mut output = self.output.clone();
-        if self.linker.is_some() {
-            output += ".o"
-        };
-        let mut command = format!(
-            "{} {flags} -march={arch_flags} \
-            -O{} \
-            -o {project_root}/{} \
-            {project_root}/{}.cpp",
-            self.compiler, self.optimization, output, self.input,
-        );
-
-        command = command + " " + self.extra_flags.join(" ").as_str();
+        cpp_compiler.args(flags.split_whitespace());
+
+        cpp_compiler.arg(format!("-march={}", self.arch_flags.join("+")));
+
+        cpp_compiler.arg(format!("-O{}", self.optimization));
+
+        cpp_compiler.args(self.extra_flags);
 
         if let Some(target) = &self.target {
-            command = command + " --target=" + target;
+            cpp_compiler.arg(format!("--target={target}"));
         }
 
-        if let (Some(linker), Some(cxx_toolchain_dir)) = (&self.linker, &self.cxx_toolchain_dir) {
-            let include_args = self
-                .include_paths
-                .iter()
-                .map(|path| "--include-directory=".to_string() + cxx_toolchain_dir + path)
-                .collect::<Vec<_>>()
-                .join(" ");
-
-            command = command
-                + " -c "
-                + include_args.as_str()
-                + " && "
-                + linker
-                + " "
-                + project_root_str
-                + "/"
-                + &output
-                + " -o "
-                + project_root_str
-                + "/"
-                + &self.output
-                + " && rm "
-                + project_root_str
-                + "/"
-                + &output;
-        }
-        command
+        CppCompilation(cpp_compiler)
+    }
+}
+
+pub struct CppCompilation(std::process::Command);
+
+fn clone_command(command: &std::process::Command) -> std::process::Command {
+    let mut cmd = std::process::Command::new(command.get_program());
+    if let Some(current_dir) = command.get_current_dir() {
+        cmd.current_dir(current_dir);
+    }
+    cmd.args(command.get_args());
+
+    for (key, val) in command.get_envs() {
+        cmd.env(key, val.unwrap_or_default());
+    }
+
+    cmd
+}
+
+impl CppCompilation {
+    pub fn command_mut(&mut self) -> &mut std::process::Command {
+        &mut self.0
+    }
+
+    pub fn compile_object_file(
+        &self,
+        input: &str,
+        output: &str,
+    ) -> std::io::Result<std::process::Output> {
+        let mut cmd = clone_command(&self.0);
+        cmd.args([input, "-c", "-o", output]);
+        cmd.output()
+    }
+
+    pub fn link_executable(
+        &self,
+        inputs: impl Iterator<Item = String>,
+        output: &str,
+    ) -> std::io::Result<std::process::Output> {
+        let mut cmd = clone_command(&self.0);
+        cmd.args(inputs);
+        cmd.args(["-o", output]);
+        cmd.output()
     }
 }
diff --git a/library/stdarch/crates/intrinsic-test/src/common/gen_c.rs b/library/stdarch/crates/intrinsic-test/src/common/gen_c.rs
index 1cfb66c39b9..905efb6d890 100644
--- a/library/stdarch/crates/intrinsic-test/src/common/gen_c.rs
+++ b/library/stdarch/crates/intrinsic-test/src/common/gen_c.rs
@@ -1,8 +1,3 @@
-use itertools::Itertools;
-use rayon::prelude::*;
-use std::collections::BTreeMap;
-use std::process::Command;
-
 use super::argument::Argument;
 use super::indentation::Indentation;
 use super::intrinsic::IntrinsicDefinition;
@@ -11,104 +6,16 @@ use super::intrinsic_helpers::IntrinsicTypeDefinition;
 // The number of times each intrinsic will be called.
 const PASSES: u32 = 20;
 
-// Formats the main C program template with placeholders
-pub fn format_c_main_template(
-    notices: &str,
-    header_files: &[&str],
-    arch_identifier: &str,
-    arch_specific_definitions: &[&str],
-    arglists: &str,
-    passes: &str,
-) -> String {
-    format!(
-        r#"{notices}{header_files}
-#include <iostream>
-#include <cstring>
-#include <iomanip>
-#include <sstream>
-
-template<typename T1, typename T2> T1 cast(T2 x) {{
-  static_assert(sizeof(T1) == sizeof(T2), "sizeof T1 and T2 must be the same");
-  T1 ret{{}};
-  memcpy(&ret, &x, sizeof(T1));
-  return ret;
-}}
-
-std::ostream& operator<<(std::ostream& os, float16_t value) {{
-    uint16_t temp = 0;
-    memcpy(&temp, &value, sizeof(float16_t));
-    std::stringstream ss;
-    ss << "0x" << std::setfill('0') << std::setw(4) << std::hex << temp;
-    os << ss.str();
-    return os;
-}}
-
-#ifdef __{arch_identifier}__
-{arch_specific_definitions}
-#endif
-
-{arglists}
-
-int main(int argc, char **argv) {{
-{passes}
-    return 0;
-}}"#,
-        header_files = header_files
-            .iter()
-            .map(|header| format!("#include <{header}>"))
-            .collect::<Vec<_>>()
-            .join("\n"),
-        arch_specific_definitions = arch_specific_definitions.join("\n"),
-    )
-}
-
-pub fn compile_c_programs(compiler_commands: &[String]) -> bool {
-    compiler_commands
-        .par_iter()
-        .map(|compiler_command| {
-            let output = Command::new("sh").arg("-c").arg(compiler_command).output();
-            if let Ok(output) = output {
-                if output.status.success() {
-                    true
-                } else {
-                    error!(
-                        "Failed to compile code for intrinsics: \n\nstdout:\n{}\n\nstderr:\n{}",
-                        std::str::from_utf8(&output.stdout).unwrap_or(""),
-                        std::str::from_utf8(&output.stderr).unwrap_or("")
-                    );
-                    false
-                }
-            } else {
-                error!("Command failed: {output:#?}");
-                false
-            }
-        })
-        .find_any(|x| !x)
-        .is_none()
-}
-
-// Creates directory structure and file path mappings
-pub fn setup_c_file_paths(identifiers: &Vec<String>) -> BTreeMap<&String, String> {
-    let _ = std::fs::create_dir("c_programs");
-    identifiers
-        .par_iter()
-        .map(|identifier| {
-            let c_filename = format!(r#"c_programs/{identifier}.cpp"#);
-
-            (identifier, c_filename)
-        })
-        .collect::<BTreeMap<&String, String>>()
-}
-
 pub fn generate_c_test_loop<T: IntrinsicTypeDefinition + Sized>(
+    w: &mut impl std::io::Write,
     intrinsic: &dyn IntrinsicDefinition<T>,
     indentation: Indentation,
     additional: &str,
     passes: u32,
-    _target: &str,
-) -> String {
+) -> std::io::Result<()> {
     let body_indentation = indentation.nested();
-    format!(
+    writeln!(
+        w,
         "{indentation}for (int i=0; i<{passes}; i++) {{\n\
             {loaded_args}\
             {body_indentation}auto __return_value = {intrinsic_call}({args});\n\
@@ -121,78 +28,172 @@ pub fn generate_c_test_loop<T: IntrinsicTypeDefinition + Sized>(
     )
 }
 
-pub fn generate_c_constraint_blocks<T: IntrinsicTypeDefinition>(
+pub fn generate_c_constraint_blocks<'a, T: IntrinsicTypeDefinition + 'a>(
+    w: &mut impl std::io::Write,
     intrinsic: &dyn IntrinsicDefinition<T>,
     indentation: Indentation,
-    constraints: &[&Argument<T>],
+    constraints: &mut (impl Iterator<Item = &'a Argument<T>> + Clone),
     name: String,
-    target: &str,
-) -> String {
-    if let Some((current, constraints)) = constraints.split_last() {
-        let range = current
-            .constraint
-            .iter()
-            .map(|c| c.to_range())
-            .flat_map(|r| r.into_iter());
-
-        let body_indentation = indentation.nested();
-        range
-            .map(|i| {
-                format!(
-                    "{indentation}{{\n\
-                        {body_indentation}{ty} {name} = {val};\n\
-                        {pass}\n\
-                    {indentation}}}",
-                    name = current.name,
-                    ty = current.ty.c_type(),
-                    val = i,
-                    pass = generate_c_constraint_blocks(
-                        intrinsic,
-                        body_indentation,
-                        constraints,
-                        format!("{name}-{i}"),
-                        target,
-                    )
-                )
-            })
-            .join("\n")
-    } else {
-        generate_c_test_loop(intrinsic, indentation, &name, PASSES, target)
+) -> std::io::Result<()> {
+    let Some(current) = constraints.next() else {
+        return generate_c_test_loop(w, intrinsic, indentation, &name, PASSES);
+    };
+
+    let body_indentation = indentation.nested();
+    for i in current.constraint.iter().flat_map(|c| c.to_range()) {
+        let ty = current.ty.c_type();
+
+        writeln!(w, "{indentation}{{")?;
+        writeln!(w, "{body_indentation}{ty} {} = {i};", current.name)?;
+
+        generate_c_constraint_blocks(
+            w,
+            intrinsic,
+            body_indentation,
+            &mut constraints.clone(),
+            format!("{name}-{i}"),
+        )?;
+
+        writeln!(w, "{indentation}}}")?;
     }
+
+    Ok(())
 }
 
 // Compiles C test programs using specified compiler
-pub fn create_c_test_program<T: IntrinsicTypeDefinition>(
+pub fn create_c_test_function<T: IntrinsicTypeDefinition>(
+    w: &mut impl std::io::Write,
     intrinsic: &dyn IntrinsicDefinition<T>,
-    header_files: &[&str],
-    target: &str,
-    c_target: &str,
-    notices: &str,
-    arch_specific_definitions: &[&str],
-) -> String {
+) -> std::io::Result<()> {
+    let indentation = Indentation::default();
+
+    writeln!(w, "int run_{}() {{", intrinsic.name())?;
+
+    // Define the arrays of arguments.
     let arguments = intrinsic.arguments();
-    let constraints = arguments
-        .iter()
-        .filter(|&i| i.has_constraint())
-        .collect_vec();
+    arguments.gen_arglists_c(w, indentation.nested(), PASSES)?;
 
-    let indentation = Indentation::default();
-    format_c_main_template(
-        notices,
-        header_files,
-        c_target,
-        arch_specific_definitions,
-        intrinsic
-            .arguments()
-            .gen_arglists_c(indentation, PASSES)
-            .as_str(),
-        generate_c_constraint_blocks(
-            intrinsic,
-            indentation.nested(),
-            constraints.as_slice(),
-            Default::default(),
-            target,
-        )
-        .as_str(),
-    )
+    generate_c_constraint_blocks(
+        w,
+        intrinsic,
+        indentation.nested(),
+        &mut arguments.iter().rev().filter(|&i| i.has_constraint()),
+        Default::default(),
+    )?;
+
+    writeln!(w, "    return 0;")?;
+    writeln!(w, "}}")?;
+
+    Ok(())
+}
+
+pub fn write_mod_cpp<T: IntrinsicTypeDefinition>(
+    w: &mut impl std::io::Write,
+    notice: &str,
+    architecture: &str,
+    platform_headers: &[&str],
+    intrinsics: &[impl IntrinsicDefinition<T>],
+) -> std::io::Result<()> {
+    write!(w, "{notice}")?;
+
+    for header in platform_headers {
+        writeln!(w, "#include <{header}>")?;
+    }
+
+    writeln!(
+        w,
+        r#"
+#include <iostream>
+#include <cstring>
+#include <iomanip>
+#include <sstream>
+
+template<typename T1, typename T2> T1 cast(T2 x) {{
+  static_assert(sizeof(T1) == sizeof(T2), "sizeof T1 and T2 must be the same");
+  T1 ret{{}};
+  memcpy(&ret, &x, sizeof(T1));
+  return ret;
+}}
+
+std::ostream& operator<<(std::ostream& os, float16_t value);
+
+
+
+"#
+    )?;
+
+    writeln!(w, "#ifdef __{architecture}__")?;
+    writeln!(
+        w,
+        "std::ostream& operator<<(std::ostream& os, poly128_t value);"
+    )?;
+    writeln!(w, "#endif")?;
+
+    for intrinsic in intrinsics {
+        create_c_test_function(w, intrinsic)?;
+    }
+
+    Ok(())
+}
+
+pub fn write_main_cpp<'a>(
+    w: &mut impl std::io::Write,
+    architecture: &str,
+    arch_specific_definitions: &str,
+    intrinsics: impl Iterator<Item = &'a str> + Clone,
+) -> std::io::Result<()> {
+    writeln!(w, "#include <iostream>")?;
+    writeln!(w, "#include <string>")?;
+
+    for header in ["arm_neon.h", "arm_acle.h", "arm_fp16.h"] {
+        writeln!(w, "#include <{header}>")?;
+    }
+
+    writeln!(
+        w,
+        r#"
+#include <cstring>
+#include <iomanip>
+#include <sstream>
+
+std::ostream& operator<<(std::ostream& os, float16_t value) {{
+    uint16_t temp = 0;
+    memcpy(&temp, &value, sizeof(float16_t));
+    std::stringstream ss;
+    ss << "0x" << std::setfill('0') << std::setw(4) << std::hex << temp;
+    os << ss.str();
+    return os;
+}}
+"#
+    )?;
+
+    writeln!(w, "#ifdef __{architecture}__")?;
+    writeln!(w, "{arch_specific_definitions }")?;
+    writeln!(w, "#endif")?;
+
+    for intrinsic in intrinsics.clone() {
+        writeln!(w, "extern int run_{intrinsic}(void);")?;
+    }
+
+    writeln!(w, "int main(int argc, char **argv) {{")?;
+    writeln!(w, "    std::string intrinsic_name = argv[1];")?;
+
+    writeln!(w, "    if (false) {{")?;
+
+    for intrinsic in intrinsics {
+        writeln!(w, "    }} else if (intrinsic_name == \"{intrinsic}\") {{")?;
+        writeln!(w, "        return run_{intrinsic}();")?;
+    }
+
+    writeln!(w, "    }} else {{")?;
+    writeln!(
+        w,
+        "        std::cerr << \"Unknown command: \" << intrinsic_name << \"\\n\";"
+    )?;
+    writeln!(w, "        return -1;")?;
+    writeln!(w, "    }}")?;
+
+    writeln!(w, "}}")?;
+
+    Ok(())
 }
diff --git a/library/stdarch/crates/intrinsic-test/src/common/gen_rust.rs b/library/stdarch/crates/intrinsic-test/src/common/gen_rust.rs
index 52bccaf905c..0e4a95ab528 100644
--- a/library/stdarch/crates/intrinsic-test/src/common/gen_rust.rs
+++ b/library/stdarch/crates/intrinsic-test/src/common/gen_rust.rs
@@ -2,7 +2,6 @@ use itertools::Itertools;
 use rayon::prelude::*;
 use std::collections::BTreeMap;
 use std::fs::File;
-use std::io::Write;
 use std::process::Command;
 
 use super::argument::Argument;
@@ -23,8 +22,8 @@ pub fn format_rust_main_template(
 ) -> String {
     format!(
         r#"{notices}#![feature(simd_ffi)]
-#![feature(link_llvm_intrinsics)]
 #![feature(f16)]
+#![allow(unused)]
 {configurations}
 {definitions}
 
@@ -38,6 +37,42 @@ fn main() {{
     )
 }
 
+fn write_cargo_toml(w: &mut impl std::io::Write, binaries: &[String]) -> std::io::Result<()> {
+    writeln!(
+        w,
+        concat!(
+            "[package]\n",
+            "name = \"intrinsic-test-programs\"\n",
+            "version = \"{version}\"\n",
+            "authors = [{authors}]\n",
+            "license = \"{license}\"\n",
+            "edition = \"2018\"\n",
+            "[workspace]\n",
+            "[dependencies]\n",
+            "core_arch = {{ path = \"../crates/core_arch\" }}",
+        ),
+        version = env!("CARGO_PKG_VERSION"),
+        authors = env!("CARGO_PKG_AUTHORS")
+            .split(":")
+            .format_with(", ", |author, fmt| fmt(&format_args!("\"{author}\""))),
+        license = env!("CARGO_PKG_LICENSE"),
+    )?;
+
+    for binary in binaries {
+        writeln!(
+            w,
+            concat!(
+                "[[bin]]\n",
+                "name = \"{binary}\"\n",
+                "path = \"{binary}/main.rs\"\n",
+            ),
+            binary = binary,
+        )?;
+    }
+
+    Ok(())
+}
+
 pub fn compile_rust_programs(
     binaries: Vec<String>,
     toolchain: Option<&str>,
@@ -45,56 +80,20 @@ pub fn compile_rust_programs(
     linker: Option<&str>,
 ) -> bool {
     let mut cargo = File::create("rust_programs/Cargo.toml").unwrap();
-    cargo
-        .write_all(
-            format!(
-                r#"[package]
-name = "intrinsic-test-programs"
-version = "{version}"
-authors = [{authors}]
-license = "{license}"
-edition = "2018"
-[workspace]
-[dependencies]
-core_arch = {{ path = "../crates/core_arch" }}
-{binaries}"#,
-                version = env!("CARGO_PKG_VERSION"),
-                authors = env!("CARGO_PKG_AUTHORS")
-                    .split(":")
-                    .format_with(", ", |author, fmt| fmt(&format_args!("\"{author}\""))),
-                license = env!("CARGO_PKG_LICENSE"),
-                binaries = binaries
-                    .iter()
-                    .map(|binary| {
-                        format!(
-                            r#"[[bin]]
-name = "{binary}"
-path = "{binary}/main.rs""#,
-                        )
-                    })
-                    .collect::<Vec<_>>()
-                    .join("\n")
-            )
-            .into_bytes()
-            .as_slice(),
-        )
-        .unwrap();
-
-    let toolchain = match toolchain {
-        None => return true,
-        Some(t) => t,
-    };
+    write_cargo_toml(&mut cargo, &binaries).unwrap();
 
     /* If there has been a linker explicitly set from the command line then
      * we want to set it via setting it in the RUSTFLAGS*/
 
-    let cargo_command = format!("cargo {toolchain} build --target {target} --release");
+    let mut cargo_command = Command::new("cargo");
+    cargo_command.current_dir("rust_programs");
 
-    let mut command = Command::new("sh");
-    command
-        .current_dir("rust_programs")
-        .arg("-c")
-        .arg(cargo_command);
+    if let Some(toolchain) = toolchain {
+        if !toolchain.is_empty() {
+            cargo_command.arg(toolchain);
+        }
+    }
+    cargo_command.args(["build", "--target", target, "--release"]);
 
     let mut rust_flags = "-Cdebuginfo=0".to_string();
     if let Some(linker) = linker {
@@ -102,11 +101,11 @@ path = "{binary}/main.rs""#,
         rust_flags.push_str(linker);
         rust_flags.push_str(" -C link-args=-static");
 
-        command.env("CPPFLAGS", "-fuse-ld=lld");
+        cargo_command.env("CPPFLAGS", "-fuse-ld=lld");
     }
 
-    command.env("RUSTFLAGS", rust_flags);
-    let output = command.output();
+    cargo_command.env("RUSTFLAGS", rust_flags);
+    let output = cargo_command.output();
 
     if let Ok(output) = output {
         if output.status.success() {
diff --git a/library/stdarch/crates/intrinsic-test/src/common/intrinsic_helpers.rs b/library/stdarch/crates/intrinsic-test/src/common/intrinsic_helpers.rs
index 3d200b19461..697f9c8754d 100644
--- a/library/stdarch/crates/intrinsic-test/src/common/intrinsic_helpers.rs
+++ b/library/stdarch/crates/intrinsic-test/src/common/intrinsic_helpers.rs
@@ -9,13 +9,21 @@ use super::indentation::Indentation;
 use super::values::value_for_array;
 
 #[derive(Debug, PartialEq, Copy, Clone)]
+pub enum Sign {
+    Signed,
+    Unsigned,
+}
+
+#[derive(Debug, PartialEq, Copy, Clone)]
 pub enum TypeKind {
     BFloat,
     Float,
-    Int,
-    UInt,
+    Int(Sign),
+    Char(Sign),
     Poly,
     Void,
+    Mask,
+    Vector,
 }
 
 impl FromStr for TypeKind {
@@ -23,12 +31,17 @@ impl FromStr for TypeKind {
 
     fn from_str(s: &str) -> Result<Self, Self::Err> {
         match s {
-            "bfloat" => Ok(Self::BFloat),
-            "float" => Ok(Self::Float),
-            "int" => Ok(Self::Int),
+            "bfloat" | "BF16" => Ok(Self::BFloat),
+            "float" | "double" | "FP16" | "FP32" | "FP64" => Ok(Self::Float),
+            "int" | "long" | "short" | "SI8" | "SI16" | "SI32" | "SI64" => {
+                Ok(Self::Int(Sign::Signed))
+            }
             "poly" => Ok(Self::Poly),
-            "uint" | "unsigned" => Ok(Self::UInt),
+            "char" => Ok(Self::Char(Sign::Signed)),
+            "uint" | "unsigned" | "UI8" | "UI16" | "UI32" | "UI64" => Ok(Self::Int(Sign::Unsigned)),
             "void" => Ok(Self::Void),
+            "MASK" => Ok(Self::Mask),
+            "M64" | "M128" | "M256" | "M512" => Ok(Self::Vector),
             _ => Err(format!("Impossible to parse argument kind {s}")),
         }
     }
@@ -42,10 +55,14 @@ impl fmt::Display for TypeKind {
             match self {
                 Self::BFloat => "bfloat",
                 Self::Float => "float",
-                Self::Int => "int",
-                Self::UInt => "uint",
+                Self::Int(Sign::Signed) => "int",
+                Self::Int(Sign::Unsigned) => "uint",
                 Self::Poly => "poly",
                 Self::Void => "void",
+                Self::Char(Sign::Signed) => "char",
+                Self::Char(Sign::Unsigned) => "unsigned char",
+                Self::Mask => "mask",
+                Self::Vector => "vector",
             }
         )
     }
@@ -56,9 +73,10 @@ impl TypeKind {
     pub fn c_prefix(&self) -> &str {
         match self {
             Self::Float => "float",
-            Self::Int => "int",
-            Self::UInt => "uint",
+            Self::Int(Sign::Signed) => "int",
+            Self::Int(Sign::Unsigned) => "uint",
             Self::Poly => "poly",
+            Self::Char(Sign::Signed) => "char",
             _ => unreachable!("Not used: {:#?}", self),
         }
     }
@@ -66,10 +84,13 @@ impl TypeKind {
     /// Gets the rust prefix for the type kind i.e. i, u, f.
     pub fn rust_prefix(&self) -> &str {
         match self {
+            Self::BFloat => "bf",
             Self::Float => "f",
-            Self::Int => "i",
-            Self::UInt => "u",
+            Self::Int(Sign::Signed) => "i",
+            Self::Int(Sign::Unsigned) => "u",
             Self::Poly => "u",
+            Self::Char(Sign::Unsigned) => "u",
+            Self::Char(Sign::Signed) => "i",
             _ => unreachable!("Unused type kind: {:#?}", self),
         }
     }
@@ -133,11 +154,14 @@ impl IntrinsicType {
     }
 
     pub fn c_scalar_type(&self) -> String {
-        format!(
-            "{prefix}{bits}_t",
-            prefix = self.kind().c_prefix(),
-            bits = self.inner_size()
-        )
+        match self.kind() {
+            TypeKind::Char(_) => String::from("char"),
+            _ => format!(
+                "{prefix}{bits}_t",
+                prefix = self.kind().c_prefix(),
+                bits = self.inner_size()
+            ),
+        }
     }
 
     pub fn rust_scalar_type(&self) -> String {
@@ -155,8 +179,8 @@ impl IntrinsicType {
                 bit_len: Some(8),
                 ..
             } => match kind {
-                TypeKind::Int => "(int)",
-                TypeKind::UInt => "(unsigned int)",
+                TypeKind::Int(Sign::Signed) => "(int)",
+                TypeKind::Int(Sign::Unsigned) => "(unsigned int)",
                 TypeKind::Poly => "(unsigned int)(uint8_t)",
                 _ => "",
             },
@@ -172,6 +196,21 @@ impl IntrinsicType {
                 128 => "",
                 _ => panic!("invalid bit_len"),
             },
+            IntrinsicType {
+                kind: TypeKind::Float,
+                bit_len: Some(bit_len),
+                ..
+            } => match bit_len {
+                16 => "(float16_t)",
+                32 => "(float)",
+                64 => "(double)",
+                128 => "",
+                _ => panic!("invalid bit_len"),
+            },
+            IntrinsicType {
+                kind: TypeKind::Char(_),
+                ..
+            } => "(char)",
             _ => "",
         }
     }
@@ -185,7 +224,7 @@ impl IntrinsicType {
         match self {
             IntrinsicType {
                 bit_len: Some(bit_len @ (8 | 16 | 32 | 64)),
-                kind: kind @ (TypeKind::Int | TypeKind::UInt | TypeKind::Poly),
+                kind: kind @ (TypeKind::Int(_) | TypeKind::Poly | TypeKind::Char(_)),
                 simd_len,
                 vec_len,
                 ..
@@ -201,7 +240,8 @@ impl IntrinsicType {
                         .format_with(",\n", |i, fmt| {
                             let src = value_for_array(*bit_len, i);
                             assert!(src == 0 || src.ilog2() < *bit_len);
-                            if *kind == TypeKind::Int && (src >> (*bit_len - 1)) != 0 {
+                            if *kind == TypeKind::Int(Sign::Signed) && (src >> (*bit_len - 1)) != 0
+                            {
                                 // `src` is a two's complement representation of a negative value.
                                 let mask = !0u64 >> (64 - *bit_len);
                                 let ones_compl = src ^ mask;
@@ -257,7 +297,7 @@ impl IntrinsicType {
                 ..
             } => false,
             IntrinsicType {
-                kind: TypeKind::Int | TypeKind::UInt | TypeKind::Poly,
+                kind: TypeKind::Int(_) | TypeKind::Poly,
                 ..
             } => true,
             _ => unimplemented!(),
@@ -282,7 +322,9 @@ pub trait IntrinsicTypeDefinition: Deref<Target = IntrinsicType> {
     fn get_lane_function(&self) -> String;
 
     /// can be implemented in an `impl` block
-    fn from_c(_s: &str, _target: &str) -> Result<Box<Self>, String>;
+    fn from_c(_s: &str, _target: &str) -> Result<Self, String>
+    where
+        Self: Sized;
 
     /// Gets a string containing the typename for this type in C format.
     /// can be directly defined in `impl` blocks
diff --git a/library/stdarch/crates/intrinsic-test/src/common/write_file.rs b/library/stdarch/crates/intrinsic-test/src/common/write_file.rs
index 0ba3e829a6b..92dd70b7c57 100644
--- a/library/stdarch/crates/intrinsic-test/src/common/write_file.rs
+++ b/library/stdarch/crates/intrinsic-test/src/common/write_file.rs
@@ -1,5 +1,3 @@
-use super::gen_c::create_c_test_program;
-use super::gen_c::setup_c_file_paths;
 use super::gen_rust::{create_rust_test_program, setup_rust_file_paths};
 use super::intrinsic::IntrinsicDefinition;
 use super::intrinsic_helpers::IntrinsicTypeDefinition;
@@ -11,37 +9,6 @@ pub fn write_file(filename: &String, code: String) {
     file.write_all(code.into_bytes().as_slice()).unwrap();
 }
 
-pub fn write_c_testfiles<T: IntrinsicTypeDefinition + Sized>(
-    intrinsics: &Vec<&dyn IntrinsicDefinition<T>>,
-    target: &str,
-    c_target: &str,
-    headers: &[&str],
-    notice: &str,
-    arch_specific_definitions: &[&str],
-) -> Vec<String> {
-    let intrinsics_name_list = intrinsics
-        .iter()
-        .map(|i| i.name().clone())
-        .collect::<Vec<_>>();
-    let filename_mapping = setup_c_file_paths(&intrinsics_name_list);
-
-    intrinsics.iter().for_each(|&i| {
-        let c_code = create_c_test_program(
-            i,
-            headers,
-            target,
-            c_target,
-            notice,
-            arch_specific_definitions,
-        );
-        if let Some(filename) = filename_mapping.get(&i.name()) {
-            write_file(filename, c_code)
-        };
-    });
-
-    intrinsics_name_list
-}
-
 pub fn write_rust_testfiles<T: IntrinsicTypeDefinition>(
     intrinsics: Vec<&dyn IntrinsicDefinition<T>>,
     rust_target: &str,
diff --git a/library/stdarch/crates/intrinsic-test/src/main.rs b/library/stdarch/crates/intrinsic-test/src/main.rs
index 054138a0dba..538f317a297 100644
--- a/library/stdarch/crates/intrinsic-test/src/main.rs
+++ b/library/stdarch/crates/intrinsic-test/src/main.rs
@@ -30,12 +30,15 @@ fn main() {
 
     let test_environment = test_environment_result.unwrap();
 
+    info!("building C binaries");
     if !test_environment.build_c_file() {
         std::process::exit(2);
     }
+    info!("building Rust binaries");
     if !test_environment.build_rust_file() {
         std::process::exit(3);
     }
+    info!("comaparing outputs");
     if !test_environment.compare_outputs() {
         std::process::exit(1);
     }
diff --git a/library/stdarch/crates/simd-test-macro/src/lib.rs b/library/stdarch/crates/simd-test-macro/src/lib.rs
index 855e969e1eb..b18e2d6b63e 100644
--- a/library/stdarch/crates/simd-test-macro/src/lib.rs
+++ b/library/stdarch/crates/simd-test-macro/src/lib.rs
@@ -57,12 +57,12 @@ pub fn simd_test(
         .unwrap_or_else(|| panic!("target triple contained no \"-\": {target}"))
     {
         "i686" | "x86_64" | "i586" => "is_x86_feature_detected",
-        "arm" | "armv7" => "is_arm_feature_detected",
+        "arm" | "armv7" | "thumbv7neon" => "is_arm_feature_detected",
         "aarch64" | "arm64ec" | "aarch64_be" => "is_aarch64_feature_detected",
         maybe_riscv if maybe_riscv.starts_with("riscv") => "is_riscv_feature_detected",
         "powerpc" | "powerpcle" => "is_powerpc_feature_detected",
         "powerpc64" | "powerpc64le" => "is_powerpc64_feature_detected",
-        "loongarch64" => "is_loongarch_feature_detected",
+        "loongarch32" | "loongarch64" => "is_loongarch_feature_detected",
         "s390x" => "is_s390x_feature_detected",
         t => panic!("unknown target: {t}"),
     };
diff --git a/library/stdarch/crates/std_detect/LICENSE-APACHE b/library/stdarch/crates/std_detect/LICENSE-APACHE
deleted file mode 100644
index 16fe87b06e8..00000000000
--- a/library/stdarch/crates/std_detect/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
-                              Apache License
-                        Version 2.0, January 2004
-                     http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-   "License" shall mean the terms and conditions for use, reproduction,
-   and distribution as defined by Sections 1 through 9 of this document.
-
-   "Licensor" shall mean the copyright owner or entity authorized by
-   the copyright owner that is granting the License.
-
-   "Legal Entity" shall mean the union of the acting entity and all
-   other entities that control, are controlled by, or are under common
-   control with that entity. For the purposes of this definition,
-   "control" means (i) the power, direct or indirect, to cause the
-   direction or management of such entity, whether by contract or
-   otherwise, or (ii) ownership of fifty percent (50%) or more of the
-   outstanding shares, or (iii) beneficial ownership of such entity.
-
-   "You" (or "Your") shall mean an individual or Legal Entity
-   exercising permissions granted by this License.
-
-   "Source" form shall mean the preferred form for making modifications,
-   including but not limited to software source code, documentation
-   source, and configuration files.
-
-   "Object" form shall mean any form resulting from mechanical
-   transformation or translation of a Source form, including but
-   not limited to compiled object code, generated documentation,
-   and conversions to other media types.
-
-   "Work" shall mean the work of authorship, whether in Source or
-   Object form, made available under the License, as indicated by a
-   copyright notice that is included in or attached to the work
-   (an example is provided in the Appendix below).
-
-   "Derivative Works" shall mean any work, whether in Source or Object
-   form, that is based on (or derived from) the Work and for which the
-   editorial revisions, annotations, elaborations, or other modifications
-   represent, as a whole, an original work of authorship. For the purposes
-   of this License, Derivative Works shall not include works that remain
-   separable from, or merely link (or bind by name) to the interfaces of,
-   the Work and Derivative Works thereof.
-
-   "Contribution" shall mean any work of authorship, including
-   the original version of the Work and any modifications or additions
-   to that Work or Derivative Works thereof, that is intentionally
-   submitted to Licensor for inclusion in the Work by the copyright owner
-   or by an individual or Legal Entity authorized to submit on behalf of
-   the copyright owner. For the purposes of this definition, "submitted"
-   means any form of electronic, verbal, or written communication sent
-   to the Licensor or its representatives, including but not limited to
-   communication on electronic mailing lists, source code control systems,
-   and issue tracking systems that are managed by, or on behalf of, the
-   Licensor for the purpose of discussing and improving the Work, but
-   excluding communication that is conspicuously marked or otherwise
-   designated in writing by the copyright owner as "Not a Contribution."
-
-   "Contributor" shall mean Licensor and any individual or Legal Entity
-   on behalf of whom a Contribution has been received by Licensor and
-   subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   copyright license to reproduce, prepare Derivative Works of,
-   publicly display, publicly perform, sublicense, and distribute the
-   Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-   this License, each Contributor hereby grants to You a perpetual,
-   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-   (except as stated in this section) patent license to make, have made,
-   use, offer to sell, sell, import, and otherwise transfer the Work,
-   where such license applies only to those patent claims licensable
-   by such Contributor that are necessarily infringed by their
-   Contribution(s) alone or by combination of their Contribution(s)
-   with the Work to which such Contribution(s) was submitted. If You
-   institute patent litigation against any entity (including a
-   cross-claim or counterclaim in a lawsuit) alleging that the Work
-   or a Contribution incorporated within the Work constitutes direct
-   or contributory patent infringement, then any patent licenses
-   granted to You under this License for that Work shall terminate
-   as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-   Work or Derivative Works thereof in any medium, with or without
-   modifications, and in Source or Object form, provided that You
-   meet the following conditions:
-
-   (a) You must give any other recipients of the Work or
-       Derivative Works a copy of this License; and
-
-   (b) You must cause any modified files to carry prominent notices
-       stating that You changed the files; and
-
-   (c) You must retain, in the Source form of any Derivative Works
-       that You distribute, all copyright, patent, trademark, and
-       attribution notices from the Source form of the Work,
-       excluding those notices that do not pertain to any part of
-       the Derivative Works; and
-
-   (d) If the Work includes a "NOTICE" text file as part of its
-       distribution, then any Derivative Works that You distribute must
-       include a readable copy of the attribution notices contained
-       within such NOTICE file, excluding those notices that do not
-       pertain to any part of the Derivative Works, in at least one
-       of the following places: within a NOTICE text file distributed
-       as part of the Derivative Works; within the Source form or
-       documentation, if provided along with the Derivative Works; or,
-       within a display generated by the Derivative Works, if and
-       wherever such third-party notices normally appear. The contents
-       of the NOTICE file are for informational purposes only and
-       do not modify the License. You may add Your own attribution
-       notices within Derivative Works that You distribute, alongside
-       or as an addendum to the NOTICE text from the Work, provided
-       that such additional attribution notices cannot be construed
-       as modifying the License.
-
-   You may add Your own copyright statement to Your modifications and
-   may provide additional or different license terms and conditions
-   for use, reproduction, or distribution of Your modifications, or
-   for any such Derivative Works as a whole, provided Your use,
-   reproduction, and distribution of the Work otherwise complies with
-   the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-   any Contribution intentionally submitted for inclusion in the Work
-   by You to the Licensor shall be under the terms and conditions of
-   this License, without any additional terms or conditions.
-   Notwithstanding the above, nothing herein shall supersede or modify
-   the terms of any separate license agreement you may have executed
-   with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-   names, trademarks, service marks, or product names of the Licensor,
-   except as required for reasonable and customary use in describing the
-   origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-   agreed to in writing, Licensor provides the Work (and each
-   Contributor provides its Contributions) on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-   implied, including, without limitation, any warranties or conditions
-   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-   PARTICULAR PURPOSE. You are solely responsible for determining the
-   appropriateness of using or redistributing the Work and assume any
-   risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-   whether in tort (including negligence), contract, or otherwise,
-   unless required by applicable law (such as deliberate and grossly
-   negligent acts) or agreed to in writing, shall any Contributor be
-   liable to You for damages, including any direct, indirect, special,
-   incidental, or consequential damages of any character arising as a
-   result of this License or out of the use or inability to use the
-   Work (including but not limited to damages for loss of goodwill,
-   work stoppage, computer failure or malfunction, or any and all
-   other commercial damages or losses), even if such Contributor
-   has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-   the Work or Derivative Works thereof, You may choose to offer,
-   and charge a fee for, acceptance of support, warranty, indemnity,
-   or other liability obligations and/or rights consistent with this
-   License. However, in accepting such obligations, You may act only
-   on Your own behalf and on Your sole responsibility, not on behalf
-   of any other Contributor, and only if You agree to indemnify,
-   defend, and hold each Contributor harmless for any liability
-   incurred by, or claims asserted against, such Contributor by reason
-   of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-   To apply the Apache License to your work, attach the following
-   boilerplate notice, with the fields enclosed by brackets "[]"
-   replaced with your own identifying information. (Don't include
-   the brackets!)  The text should be enclosed in the appropriate
-   comment syntax for the file format. We also recommend that a
-   file or class name and description of purpose be included on the
-   same "printed page" as the copyright notice for easier
-   identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/library/stdarch/crates/std_detect/LICENSE-MIT b/library/stdarch/crates/std_detect/LICENSE-MIT
deleted file mode 100644
index 52d82415d8b..00000000000
--- a/library/stdarch/crates/std_detect/LICENSE-MIT
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) 2017 The Rust Project Developers
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/library/stdarch/crates/stdarch-gen-arm/Cargo.toml b/library/stdarch/crates/stdarch-gen-arm/Cargo.toml
index 899296d25ea..312019f454c 100644
--- a/library/stdarch/crates/stdarch-gen-arm/Cargo.toml
+++ b/library/stdarch/crates/stdarch-gen-arm/Cargo.toml
@@ -13,7 +13,6 @@ edition = "2024"
 
 [dependencies]
 itertools = "0.14.0"
-lazy_static = "1.4.0"
 proc-macro2 = "1.0"
 quote = "1.0"
 regex = "1.5"
diff --git a/library/stdarch/crates/stdarch-gen-arm/spec/neon/aarch64.spec.yml b/library/stdarch/crates/stdarch-gen-arm/spec/neon/aarch64.spec.yml
index f0dce681d9c..a31613e6b1a 100644
--- a/library/stdarch/crates/stdarch-gen-arm/spec/neon/aarch64.spec.yml
+++ b/library/stdarch/crates/stdarch-gen-arm/spec/neon/aarch64.spec.yml
@@ -187,7 +187,7 @@ intrinsics:
     arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
     return_type: "{neon_type[1]}"
     attr: [*neon-stable]
-    assert_instr: [sabdl]
+    assert_instr: [sabdl2]
     safety: safe
     types:
       - [int8x16_t, int16x8_t, int8x8_t, uint8x8_t]
@@ -230,7 +230,7 @@ intrinsics:
           - stable
           - - 'feature = "neon_intrinsics"'
             - 'since = "1.59.0"'
-    assert_instr: [sabdl]
+    assert_instr: [sabdl2]
     safety: safe
     types:
       - [int16x8_t, int32x4_t, int16x4_t, uint16x4_t]
@@ -273,7 +273,7 @@ intrinsics:
           - stable
           - - 'feature = "neon_intrinsics"'
             - 'since = "1.59.0"'
-    assert_instr: [sabdl]
+    assert_instr: [sabdl2]
     safety: safe
     types:
       - [int32x4_t, int64x2_t, int32x2_t, uint32x2_t]
@@ -1462,7 +1462,7 @@ intrinsics:
     arguments: ["a: {neon_type[0]}"]
     return_type: "{neon_type[1]}"
     attr:
-      - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtl]]}]]
+      - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtl2]]}]]
       - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
     safety: safe
     types:
@@ -1530,7 +1530,7 @@ intrinsics:
     arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
     return_type: "{neon_type[2]}"
     attr:
-      - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtn]]}]]
+      - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtn2]]}]]
       - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
     safety: safe
     types:
@@ -1582,7 +1582,7 @@ intrinsics:
     arguments: ["a: {type[0]}", "b: {neon_type[1]}"]
     return_type: "{type[2]}"
     attr:
-      - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtxn]]}]]
+      - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [fcvtxn2]]}]]
       - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
     safety: safe
     types:
@@ -5147,7 +5147,7 @@ intrinsics:
     attr:
       - *neon-stable
     safety: safe
-    assert_instr: [pmull]
+    assert_instr: [pmull2]
     types:
       - [poly8x16_t, poly8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', poly16x8_t]
     compose:
@@ -5169,7 +5169,7 @@ intrinsics:
       - *neon-aes
       - *neon-stable
     safety: safe
-    assert_instr: [pmull]
+    assert_instr: [pmull2]
     types:
       - [poly64x2_t, "p128"]
     compose:
@@ -5741,7 +5741,7 @@ intrinsics:
     arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
     return_type: "{neon_type[0]}"
     attr: [*neon-stable]
-    assert_instr: [ssubw]
+    assert_instr: [ssubw2]
     safety: safe
     types:
       - [int16x8_t, int8x16_t, int8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]']
@@ -5762,7 +5762,7 @@ intrinsics:
     arguments: ["a: {neon_type[0]}", "b: {neon_type[1]}"]
     return_type: "{neon_type[0]}"
     attr: [*neon-stable]
-    assert_instr: [usubw]
+    assert_instr: [usubw2]
     safety: safe
     types:
       - [uint16x8_t, uint8x16_t, uint8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]']
@@ -5783,7 +5783,7 @@ intrinsics:
     arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
     return_type: "{neon_type[1]}"
     attr: [*neon-stable]
-    assert_instr: [ssubl]
+    assert_instr: [ssubl2]
     safety: safe
     types:
       - [int8x16_t, int16x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', int8x8_t]
@@ -5813,7 +5813,7 @@ intrinsics:
     arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
     return_type: "{neon_type[1]}"
     attr: [*neon-stable]
-    assert_instr: [usubl]
+    assert_instr: [usubl2]
     safety: safe
     types:
       - [uint8x16_t, uint16x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', uint8x8_t]
@@ -6580,7 +6580,6 @@ intrinsics:
               arch: aarch64,arm64ec
 
 
-
   - name: "vmaxnm{neon_type.no}"
     doc: Floating-point Maximum Number (vector)
     arguments: ["a: {neon_type}", "b: {neon_type}"]
@@ -6592,11 +6591,7 @@ intrinsics:
       - float64x1_t
       - float64x2_t
     compose:
-      - LLVMLink:
-          name: "fmaxnm.{neon_type}"
-          links:
-            - link: "llvm.aarch64.neon.fmaxnm.{neon_type}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_fmax, [a, b]]
 
 
   - name: "vmaxnmh_{type}"
@@ -6611,11 +6606,7 @@ intrinsics:
     types:
       - f16
     compose:
-      - LLVMLink:
-          name: "vmaxh.{neon_type}"
-          links:
-            - link: "llvm.aarch64.neon.fmaxnm.{type}"
-              arch: aarch64,arm64ec
+      - FnCall: ["f16::max", [a, b]]
 
 
   - name: "vminnmh_{type}"
@@ -6630,11 +6621,7 @@ intrinsics:
     types:
       - f16
     compose:
-      - LLVMLink:
-          name: "vminh.{neon_type}"
-          links:
-            - link: "llvm.aarch64.neon.fminnm.{type}"
-              arch: aarch64,arm64ec
+      - FnCall: ["f16::min", [a, b]]
 
 
   - name: "vmaxnmv{neon_type[0].no}"
@@ -6648,11 +6635,7 @@ intrinsics:
       - [float32x2_t, f32]
       - [float64x2_t, f64]
     compose:
-      - LLVMLink:
-          name: "fmaxnmv.{neon_type[0]}"
-          links:
-            - link: "llvm.aarch64.neon.fmaxnmv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_max, [a]]
 
   - name: "vmaxnmv{neon_type[0].no}"
     doc: Floating-point maximum number across vector
@@ -6664,11 +6647,7 @@ intrinsics:
     types:
       - [float32x4_t, f32]
     compose:
-      - LLVMLink:
-          name: "fmaxnmv.{neon_type[0]}"
-          links:
-            - link: "llvm.aarch64.neon.fmaxnmv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_max, [a]]
 
 
   - name: "vmaxnmv{neon_type[0].no}"
@@ -6684,11 +6663,7 @@ intrinsics:
       - [float16x4_t, f16]
       - [float16x8_t, f16]
     compose:
-      - LLVMLink:
-          name: "fmaxnmv.{neon_type[0]}"
-          links:
-            - link: "llvm.aarch64.neon.fmaxnmv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_max, [a]]
 
 
   - name: "vminnmv{neon_type[0].no}"
@@ -6704,11 +6679,7 @@ intrinsics:
       - [float16x4_t, f16]
       - [float16x8_t, f16]
     compose:
-      - LLVMLink:
-          name: "fminnmv.{neon_type[0]}"
-          links:
-            - link: "llvm.aarch64.neon.fminnmv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_min, [a]]
 
 
   - name: "vmaxv{neon_type[0].no}"
@@ -6814,11 +6785,7 @@ intrinsics:
       - float64x1_t
       - float64x2_t
     compose:
-      - LLVMLink:
-          name: "fminnm.{neon_type}"
-          links:
-            - link: "llvm.aarch64.neon.fminnm.{neon_type}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_fmin, [a, b]]
 
   - name: "vminnmv{neon_type[0].no}"
     doc: "Floating-point minimum number across vector"
@@ -6832,11 +6799,7 @@ intrinsics:
       - [float32x2_t, "f32"]
       - [float64x2_t, "f64"]
     compose:
-      - LLVMLink:
-          name: "vminnmv.{neon_type[0]}"
-          links:
-            - link: "llvm.aarch64.neon.fminnmv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_min, [a]]
 
   - name: "vminnmv{neon_type[0].no}"
     doc: "Floating-point minimum number across vector"
@@ -6849,11 +6812,7 @@ intrinsics:
     types:
       - [float32x4_t, "f32"]
     compose:
-      - LLVMLink:
-          name: "vminnmv.{neon_type[0]}"
-          links:
-            - link: "llvm.aarch64.neon.fminnmv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_min, [a]]
 
   - name: "vmovl_high{neon_type[0].noq}"
     doc: Vector move
@@ -9950,7 +9909,7 @@ intrinsics:
     return_type: "{neon_type[0]}"
     attr:
       - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
-      - FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [uabal]]}]]
+      - FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [uabal2]]}]]
     safety: safe
     types:
       - [uint16x8_t, uint8x16_t, uint8x8_t, '[8, 9, 10, 11, 12, 13, 14, 15]', '[8, 9, 10, 11, 12, 13, 14, 15]']
@@ -9977,7 +9936,7 @@ intrinsics:
     return_type: "{neon_type[0]}"
     attr:
       - *neon-stable
-      - FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [sabal]]}]]
+      - FnCall: [cfg_attr, [{FnCall: [all, [test, {FnCall: [not, ['target_env = "msvc"']]}]]}, {FnCall: [assert_instr, [sabal2]]}]]
     safety: safe
     types:
       - [int16x8_t, int8x16_t, int8x16_t, '[8, 9, 10, 11, 12, 13, 14, 15]', int8x8_t, uint8x8_t]
@@ -11386,7 +11345,7 @@ intrinsics:
     arguments: ["a: {neon_type[0]}", "b: {neon_type[0]}"]
     return_type: "{neon_type[1]}"
     attr:
-      - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [uabdl]]}]]
+      - FnCall: [cfg_attr, [test, {FnCall: [assert_instr, [uabdl2]]}]]
       - FnCall: [stable, ['feature = "neon_intrinsics"', 'since = "1.59.0"']]
     safety: safe
     types:
@@ -13023,6 +12982,26 @@ intrinsics:
             - link: "llvm.aarch64.crc32cx"
               arch: aarch64,arm64ec
 
+  - name: "vabsd_s64"
+    doc: "Absolute Value (wrapping)."
+    arguments: ["a: {type[1]}"]
+    return_type: "{type[1]}"
+    attr:
+      - *neon-stable
+    assert_instr: [abs]
+    safety: safe
+    types:
+      - [i64, i64]
+    compose:
+      # This is behaviorally equivalent to `i64::wrapping_abs`, but keeps the value in a SIMD
+      # register. That can be beneficial when combined with other instructions. This LLVM
+      # issue provides some extra context https://github.com/llvm/llvm-project/issues/148388.
+      - LLVMLink:
+          name: "vabsd_s64"
+          links:
+             - link: "llvm.aarch64.neon.abs.i64"
+               arch: aarch64,arm64ec
+
   - name: "{type[0]}"
     doc: "Absolute Value (wrapping)."
     arguments: ["a: {type[1]}"]
@@ -13032,15 +13011,18 @@ intrinsics:
     assert_instr: [abs]
     safety: safe
     types:
-      - ['vabsd_s64', i64, i64]
       - ['vabs_s64', int64x1_t, v1i64]
       - ['vabsq_s64', int64x2_t, v2i64]
     compose:
-      - LLVMLink:
-          name: "{type[0]}"
-          links:
-            - link: "llvm.aarch64.neon.abs.{type[2]}"
-              arch: aarch64,arm64ec
+      - Let:
+          - neg
+          - "{type[1]}"
+          - FnCall: [simd_neg, [a]]
+      - Let:
+          - mask
+          - "{type[1]}"
+          - FnCall: [simd_ge, [a, neg]]
+      - FnCall: [simd_select, [mask, a, neg]]
 
   - name: "vuqadd{neon_type[0].no}"
     doc: "Signed saturating Accumulate of Unsigned value."
@@ -13142,11 +13124,7 @@ intrinsics:
     types:
       - [int64x2_t, i64]
     compose:
-      - FnCall:
-          - transmute
-          - - FnCall:
-                - "vaddvq_u64"
-                - - FnCall: [transmute, [a]]
+      - FnCall: [simd_reduce_add_unordered, [a]]
 
   - name: "vpaddd_u64"
     doc: "Add pairwise"
@@ -13159,7 +13137,7 @@ intrinsics:
     types:
       - [uint64x2_t, u64]
     compose:
-      - FnCall: [vaddvq_u64, [a]]
+      - FnCall: [simd_reduce_add_unordered, [a]]
 
   - name: "vaddv{neon_type[0].no}"
     doc: "Add across vector"
@@ -13176,11 +13154,7 @@ intrinsics:
       - [int16x8_t, i16]
       - [int32x4_t, i32]
     compose:
-      - LLVMLink:
-          name: "vaddv{neon_type[0].no}"
-          links:
-            - link: "llvm.aarch64.neon.saddv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_add_unordered, [a]]
 
   - name: "vaddv{neon_type[0].no}"
     doc: "Add across vector"
@@ -13193,11 +13167,7 @@ intrinsics:
     types:
       - [int32x2_t, i32]
     compose:
-      - LLVMLink:
-          name: "vaddv{neon_type[0].no}"
-          links:
-            - link: "llvm.aarch64.neon.saddv.i32.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_add_unordered, [a]]
 
   - name: "vaddv{neon_type[0].no}"
     doc: "Add across vector"
@@ -13210,11 +13180,7 @@ intrinsics:
     types:
       - [int64x2_t, i64]
     compose:
-      - LLVMLink:
-          name: "vaddv{neon_type[0].no}"
-          links:
-            - link: "llvm.aarch64.neon.saddv.i64.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_add_unordered, [a]]
 
   - name: "vaddv{neon_type[0].no}"
     doc: "Add across vector"
@@ -13231,11 +13197,7 @@ intrinsics:
       - [uint16x8_t, u16]
       - [uint32x4_t, u32]
     compose:
-      - LLVMLink:
-          name: "vaddv{neon_type[0].no}"
-          links:
-            - link: "llvm.aarch64.neon.uaddv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_add_unordered, [a]]
 
   - name: "vaddv{neon_type[0].no}"
     doc: "Add across vector"
@@ -13248,11 +13210,7 @@ intrinsics:
     types:
       - [uint32x2_t, u32, i32]
     compose:
-      - LLVMLink:
-          name: "vaddv{neon_type[0].no}"
-          links:
-            - link: "llvm.aarch64.neon.uaddv.{type[2]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_add_unordered, [a]]
 
   - name: "vaddv{neon_type[0].no}"
     doc: "Add across vector"
@@ -13265,11 +13223,7 @@ intrinsics:
     types:
       - [uint64x2_t, u64, i64]
     compose:
-      - LLVMLink:
-          name: "vaddv{neon_type[0].no}"
-          links:
-            - link: "llvm.aarch64.neon.uaddv.{type[2]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_add_unordered, [a]]
 
   - name: "vaddlv{neon_type[0].no}"
     doc: "Signed Add Long across Vector"
@@ -13327,11 +13281,7 @@ intrinsics:
       - [int16x8_t, i16, 'smaxv']
       - [int32x4_t, i32, 'smaxv']
     compose:
-      - LLVMLink:
-          name: "vmaxv{neon_type[0].no}"
-          links:
-            - link: "llvm.aarch64.neon.smaxv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_max, [a]]
 
   - name: "vmaxv{neon_type[0].no}"
     doc: "Horizontal vector max."
@@ -13349,11 +13299,7 @@ intrinsics:
       - [uint16x8_t, u16, 'umaxv']
       - [uint32x4_t, u32, 'umaxv']
     compose:
-      - LLVMLink:
-          name: "vmaxv{neon_type[0].no}"
-          links:
-            - link: "llvm.aarch64.neon.umaxv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_max, [a]]
 
   - name: "vmaxv{neon_type[0].no}"
     doc: "Horizontal vector max."
@@ -13390,11 +13336,7 @@ intrinsics:
       - [int16x8_t, i16, 'sminv']
       - [int32x4_t, i32, 'sminv']
     compose:
-      - LLVMLink:
-          name: "vminv{neon_type[0].no}"
-          links:
-            - link: "llvm.aarch64.neon.sminv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_min, [a]]
 
   - name: "vminv{neon_type[0].no}"
     doc: "Horizontal vector min."
@@ -13412,11 +13354,7 @@ intrinsics:
       - [uint16x8_t, u16, 'uminv']
       - [uint32x4_t, u32, 'uminv']
     compose:
-      - LLVMLink:
-          name: "vminv{neon_type[0].no}"
-          links:
-            - link: "llvm.aarch64.neon.uminv.{type[1]}.{neon_type[0]}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_reduce_min, [a]]
 
   - name: "vminv{neon_type[0].no}"
     doc: "Horizontal vector min."
diff --git a/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml b/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml
index 07959cf380e..c96c6e2a0c0 100644
--- a/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml
+++ b/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml
@@ -7135,13 +7135,8 @@ intrinsics:
       - int32x2_t
       - int32x4_t
     compose:
-      - LLVMLink:
-          name: "smax.{neon_type}"
-          links:
-            - link: "llvm.arm.neon.vmaxs.{neon_type}"
-              arch: arm
-            - link: "llvm.aarch64.neon.smax.{neon_type}"
-              arch: aarch64,arm64ec
+      - Let: [mask, "{neon_type}", {FnCall: [simd_ge, [a, b]]}]
+      - FnCall: [simd_select, [mask, a, b]]
 
   - name: "vmax{neon_type.no}"
     doc: Maximum (vector)
@@ -7162,13 +7157,8 @@ intrinsics:
       - uint32x2_t
       - uint32x4_t
     compose:
-      - LLVMLink:
-          name: "smax.{neon_type}"
-          links:
-            - link: "llvm.arm.neon.vmaxu.{neon_type}"
-              arch: arm
-            - link: "llvm.aarch64.neon.umax.{neon_type}"
-              arch: aarch64,arm64ec
+      - Let: [mask, "{neon_type}", {FnCall: [simd_ge, [a, b]]}]
+      - FnCall: [simd_select, [mask, a, b]]
 
   - name: "vmax{neon_type.no}"
     doc: Maximum (vector)
@@ -7233,13 +7223,7 @@ intrinsics:
       - float32x2_t
       - float32x4_t
     compose:
-      - LLVMLink:
-          name: "fmaxnm.{neon_type}"
-          links:
-            - link: "llvm.arm.neon.vmaxnm.{neon_type}"
-              arch: arm
-            - link: "llvm.aarch64.neon.fmaxnm.{neon_type}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_fmax, [a, b]]
 
 
   - name: "vmaxnm{neon_type.no}"
@@ -7257,13 +7241,7 @@ intrinsics:
       - float16x4_t
       - float16x8_t
     compose:
-      - LLVMLink:
-          name: "fmaxnm.{neon_type}"
-          links:
-            - link: "llvm.arm.neon.vmaxnm.{neon_type}"
-              arch: arm
-            - link: "llvm.aarch64.neon.fmaxnm.{neon_type}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_fmax, [a, b]]
 
 
   - name: "vminnm{neon_type.no}"
@@ -7281,13 +7259,7 @@ intrinsics:
       - float16x4_t
       - float16x8_t
     compose:
-      - LLVMLink:
-          name: "fminnm.{neon_type}"
-          links:
-            - link: "llvm.arm.neon.vminnm.{neon_type}"
-              arch: arm
-            - link: "llvm.aarch64.neon.fminnm.{neon_type}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_fmin, [a, b]]
 
 
   - name: "vmin{neon_type.no}"
@@ -7309,13 +7281,8 @@ intrinsics:
       - int32x2_t
       - int32x4_t
     compose:
-      - LLVMLink:
-          name: "smin.{neon_type}"
-          links:
-            - link: "llvm.arm.neon.vmins.{neon_type}"
-              arch: arm
-            - link: "llvm.aarch64.neon.smin.{neon_type}"
-              arch: aarch64,arm64ec
+      - Let: [mask, "{neon_type}", {FnCall: [simd_le, [a, b]]}]
+      - FnCall: [simd_select, [mask, a, b]]
 
   - name: "vmin{neon_type.no}"
     doc: "Minimum (vector)"
@@ -7336,13 +7303,8 @@ intrinsics:
       - uint32x2_t
       - uint32x4_t
     compose:
-      - LLVMLink:
-          name: "umin.{neon_type}"
-          links:
-            - link: "llvm.arm.neon.vminu.{neon_type}"
-              arch: arm
-            - link: "llvm.aarch64.neon.umin.{neon_type}"
-              arch: aarch64,arm64ec
+      - Let: [mask, "{neon_type}", {FnCall: [simd_le, [a, b]]}]
+      - FnCall: [simd_select, [mask, a, b]]
 
   - name: "vmin{neon_type.no}"
     doc: "Minimum (vector)"
@@ -7408,13 +7370,7 @@ intrinsics:
       - float32x2_t
       - float32x4_t
     compose:
-      - LLVMLink:
-          name: "fminnm.{neon_type}"
-          links:
-            - link: "llvm.arm.neon.vminnm.{neon_type}"
-              arch: arm
-            - link: "llvm.aarch64.neon.fminnm.{neon_type}"
-              arch: aarch64,arm64ec
+      - FnCall: [simd_fmin, [a, b]]
 
   - name: "vpadd{neon_type.no}"
     doc: Floating-point add pairwise
@@ -7874,9 +7830,9 @@ intrinsics:
     static_defs: ['const N: i32']
     safety: safe
     types:
-      - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16]) }']
-      - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) }']
-      - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64, -N as i64]) }']
+      - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16; 8]) }']
+      - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N; 4]) }']
+      - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64; 2]) }']
     compose:
       - FnCall: [static_assert!, ["{type[2]}"]]
       - LLVMLink:
@@ -7929,9 +7885,9 @@ intrinsics:
     static_defs: ['const N: i32']
     safety: safe
     types:
-      - [int16x8_t, uint8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16]) }']
-      - [int32x4_t, uint16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) }']
-      - [int64x2_t, uint32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64, -N as i64]) }']
+      - [int16x8_t, uint8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16; 8]) }']
+      - [int32x4_t, uint16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N; 4]) }']
+      - [int64x2_t, uint32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64; 2]) }']
     compose:
       - FnCall: [static_assert!, ["{type[2]}"]]
       - LLVMLink:
@@ -8105,9 +8061,9 @@ intrinsics:
     static_defs: ['const N: i32']
     safety: safe
     types:
-      - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16]) }']
-      - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) }']
-      - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64, -N as i64]) }']
+      - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16; 8]) }']
+      - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N; 4]) }']
+      - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64; 2]) }']
     compose:
       - FnCall: [static_assert!, ["{type[2]}"]]
       - LLVMLink:
@@ -8215,9 +8171,9 @@ intrinsics:
     static_defs: ['const N: i32']
     safety: safe
     types:
-      - [int16x8_t, uint8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16]) }']
-      - [int32x4_t, uint16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) }']
-      - [int64x2_t, uint32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64, -N as i64]) }']
+      - [int16x8_t, uint8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16; 8]) }']
+      - [int32x4_t, uint16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N; 4]) }']
+      - [int64x2_t, uint32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64; 2]) }']
     compose:
       - FnCall: [static_assert!, ["{type[2]}"]]
       - LLVMLink:
@@ -8939,9 +8895,9 @@ intrinsics:
     static_defs: ['const N: i32']
     safety: safe
     types:
-      - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16, -N as i16]) }']
-      - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N as i32, -N as i32, -N as i32, -N as i32]) }']
-      - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64, -N as i64]) }']
+      - [int16x8_t, int8x8_t, 'N >= 1 && N <= 8', 'const { int16x8_t([-N as i16; 8]) }']
+      - [int32x4_t, int16x4_t, 'N >= 1 && N <= 16', 'const { int32x4_t([-N; 4]) }']
+      - [int64x2_t, int32x2_t, 'N >= 1 && N <= 32', 'const { int64x2_t([-N as i64; 2]) }']
     compose:
       - FnCall: [static_assert!, ["{type[2]}"]]
       - LLVMLink:
@@ -9576,7 +9532,8 @@ intrinsics:
     attr:
       - *neon-v7
       - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]
-      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn1]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn2]]}]]
       - *neon-not-arm-stable
       - *neon-cfg-arm-unstable
     safety: safe
@@ -9617,7 +9574,8 @@ intrinsics:
     attr:
       - *neon-v7
       - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]
-      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn1]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [trn2]]}]]
       - *neon-fp16
       - *neon-unstable-f16
     safety: safe
@@ -9645,7 +9603,8 @@ intrinsics:
     attr:
       - *neon-v7
       - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]
-      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
       - *neon-not-arm-stable
       - *neon-cfg-arm-unstable
     safety: safe
@@ -9673,7 +9632,8 @@ intrinsics:
     attr:
       - *neon-v7
       - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vorr]]}]]
-      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
       - *neon-not-arm-stable
       - *neon-cfg-arm-unstable
     safety: safe
@@ -9707,7 +9667,8 @@ intrinsics:
     attr:
       - *neon-v7
       - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]
-      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
       - *neon-not-arm-stable
       - *neon-cfg-arm-unstable
     safety: safe
@@ -9735,7 +9696,8 @@ intrinsics:
     attr:
       - *neon-v7
       - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vzip]]}]]
-      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
       - *neon-not-arm-stable
       - *neon-cfg-arm-unstable
     safety: safe
@@ -9767,7 +9729,8 @@ intrinsics:
     attr:
       - *neon-v7
       - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, ['"vzip.16"']]}]]
-      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
       - *neon-fp16
       - *neon-unstable-f16
     safety: safe
@@ -9794,7 +9757,8 @@ intrinsics:
     attr:
       - *neon-v7
       - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vuzp]]}]]
-      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp1]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp2]]}]]
       - *neon-not-arm-stable
       - *neon-cfg-arm-unstable
     safety: safe
@@ -9835,7 +9799,8 @@ intrinsics:
     attr:
       - *neon-v7
       - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vuzp]]}]]
-      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp1]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [uzp2]]}]]
       - *neon-fp16
       - *neon-unstable-f16
     safety: safe
@@ -9863,7 +9828,8 @@ intrinsics:
     attr:
       - *neon-v7
       - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vtrn]]}]]
-      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
+      - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
       - *neon-not-arm-stable
       - *neon-cfg-arm-unstable
     safety: safe
@@ -12881,13 +12847,16 @@ intrinsics:
       - int16x8_t
       - int32x4_t
     compose:
-      - LLVMLink:
-          name: "vabs{neon_type.no}"
-          links:
-            - link: "llvm.aarch64.neon.abs.{neon_type}"
-              arch: aarch64,arm64ec
-            - link: "llvm.arm.neon.vabs.{neon_type}"
-              arch: arm
+      - Let:
+          - neg
+          - "{neon_type}"
+          - FnCall: [simd_neg, [a]]
+      - Let:
+          - mask
+          - "{neon_type}"
+          - FnCall: [simd_ge, [a, neg]]
+      - FnCall: [simd_select, [mask, a, neg]]
+
 
   - name: "vpmin{neon_type.no}"
     doc: "Folding minimum of adjacent pairs"
@@ -13862,8 +13831,8 @@ intrinsics:
       - [int8x16_t, '8',  '1 <= N && N <= 8',  'v16i8', 'int8x16_t::splat', '-N as i8']
       - [int16x4_t, '16', '1 <= N && N <= 16', 'v4i16', 'int16x4_t::splat', '-N as i16']
       - [int16x8_t, '16', '1 <= N && N <= 16', 'v8i16', 'int16x8_t::splat', '-N as i16']
-      - [int32x2_t, '32', '1 <= N && N <= 32', 'v2i32', 'int32x2_t::splat', '-N as i32']
-      - [int32x4_t, '32', '1 <= N && N <= 32', 'v4i32', 'int32x4_t::splat', '-N as i32']
+      - [int32x2_t, '32', '1 <= N && N <= 32', 'v2i32', 'int32x2_t::splat', '-N']
+      - [int32x4_t, '32', '1 <= N && N <= 32', 'v4i32', 'int32x4_t::splat', '-N']
       - [int64x1_t, '64', '1 <= N && N <= 64', 'v1i64', 'int64x1_t::splat', '-N as i64']
       - [int64x2_t, '64', '1 <= N && N <= 64', 'v2i64', 'int64x2_t::splat', '-N as i64']
     compose:
@@ -13891,8 +13860,8 @@ intrinsics:
       - [uint8x16_t, "neon,v7", '8',  'static_assert_uimm_bits!', 'N, 3',    'v16i8', 'int8x16_t::splat', 'N as i8']
       - [uint16x4_t, "neon,v7", '16', 'static_assert_uimm_bits!', 'N, 4',    'v4i16', 'int16x4_t::splat', 'N as i16']
       - [uint16x8_t, "neon,v7", '16', 'static_assert_uimm_bits!', 'N, 4',    'v8i16', 'int16x8_t::splat', 'N as i16']
-      - [uint32x2_t, "neon,v7", '32', 'static_assert!', 'N >= 0 && N <= 31', 'v2i32', 'int32x2_t::splat', 'N as i32']
-      - [uint32x4_t, "neon,v7", '32', 'static_assert!', 'N >= 0 && N <= 31', 'v4i32', 'int32x4_t::splat', 'N as i32']
+      - [uint32x2_t, "neon,v7", '32', 'static_assert!', 'N >= 0 && N <= 31', 'v2i32', 'int32x2_t::splat', 'N']
+      - [uint32x4_t, "neon,v7", '32', 'static_assert!', 'N >= 0 && N <= 31', 'v4i32', 'int32x4_t::splat', 'N']
       - [uint64x1_t, "neon,v7", '64', 'static_assert!', 'N >= 0 && N <= 63', 'v1i64', 'int64x1_t::splat', 'N as i64']
       - [uint64x2_t, "neon,v7", '64', 'static_assert!', 'N >= 0 && N <= 63', 'v2i64', 'int64x2_t::splat', 'N as i64']
       - [poly8x8_t,  "neon,v7", '8',  'static_assert_uimm_bits!', 'N, 3',     'v8i8', 'int8x8_t::splat',  'N as i8']
@@ -14138,6 +14107,7 @@ intrinsics:
     doc: "Load one single-element structure and Replicate to all lanes (of one register)."
     arguments: ["ptr: {type[1]}"]
     return_type: "{neon_type[2]}"
+    big_endian_inverse: false
     attr:
       - *neon-v7
       - FnCall: [cfg_attr, [*test-is-arm, { FnCall: [assert_instr, ['"{type[3]}"']] }  ]]
@@ -14147,40 +14117,36 @@ intrinsics:
     safety:
       unsafe: [neon]
     types:
-      - ['vld1_dup_s8', '*const i8', 'int8x8_t', 'vld1.8', 'ld1r', 'vld1_lane_s8::<0>', 'i8x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']
-      - ['vld1_dup_u8', '*const u8', 'uint8x8_t', 'vld1.8', 'ld1r', 'vld1_lane_u8::<0>', 'u8x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']
-      - ['vld1_dup_p8', '*const p8', 'poly8x8_t', 'vld1.8', 'ld1r', 'vld1_lane_p8::<0>', 'u8x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']
+      - ['vld1_dup_s8', '*const i8', 'int8x8_t', 'vld1.8', 'ld1r', 'i8x8::splat']
+      - ['vld1_dup_u8', '*const u8', 'uint8x8_t', 'vld1.8', 'ld1r', 'u8x8::splat']
+      - ['vld1_dup_p8', '*const p8', 'poly8x8_t', 'vld1.8', 'ld1r', 'u8x8::splat']
 
-      - ['vld1q_dup_s8', '*const i8', 'int8x16_t', 'vld1.8', 'ld1r', 'vld1q_lane_s8::<0>', 'i8x16::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]']
-      - ['vld1q_dup_u8', '*const u8', 'uint8x16_t', 'vld1.8', 'ld1r', 'vld1q_lane_u8::<0>', 'u8x16::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]']
-      - ['vld1q_dup_p8', '*const p8', 'poly8x16_t', 'vld1.8', 'ld1r', 'vld1q_lane_p8::<0>', 'u8x16::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]']
+      - ['vld1q_dup_s8', '*const i8', 'int8x16_t', 'vld1.8', 'ld1r', 'i8x16::splat']
+      - ['vld1q_dup_u8', '*const u8', 'uint8x16_t', 'vld1.8', 'ld1r', 'u8x16::splat']
+      - ['vld1q_dup_p8', '*const p8', 'poly8x16_t', 'vld1.8', 'ld1r', 'u8x16::splat']
 
-      - ['vld1_dup_s16', '*const i16', 'int16x4_t', 'vld1.16', 'ld1r', 'vld1_lane_s16::<0>', 'i16x4::splat(0)', '[0, 0, 0, 0]']
-      - ['vld1_dup_u16', '*const u16', 'uint16x4_t', 'vld1.16', 'ld1r', 'vld1_lane_u16::<0>', 'u16x4::splat(0)', '[0, 0, 0, 0]']
-      - ['vld1_dup_p16', '*const p16', 'poly16x4_t', 'vld1.16', 'ld1r', 'vld1_lane_p16::<0>', 'u16x4::splat(0)', '[0, 0, 0, 0]']
+      - ['vld1_dup_s16', '*const i16', 'int16x4_t', 'vld1.16', 'ld1r', 'i16x4::splat']
+      - ['vld1_dup_u16', '*const u16', 'uint16x4_t', 'vld1.16', 'ld1r', 'u16x4::splat']
+      - ['vld1_dup_p16', '*const p16', 'poly16x4_t', 'vld1.16', 'ld1r', 'u16x4::splat']
 
-      - ['vld1q_dup_s16', '*const i16', 'int16x8_t', 'vld1.16', 'ld1r', 'vld1q_lane_s16::<0>', 'i16x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']
-      - ['vld1q_dup_u16', '*const u16', 'uint16x8_t', 'vld1.16', 'ld1r', 'vld1q_lane_u16::<0>', 'u16x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']
-      - ['vld1q_dup_p16', '*const p16', 'poly16x8_t', 'vld1.16', 'ld1r', 'vld1q_lane_p16::<0>', 'u16x8::splat(0)', '[0, 0, 0, 0, 0, 0, 0, 0]']
+      - ['vld1q_dup_s16', '*const i16', 'int16x8_t', 'vld1.16', 'ld1r', 'i16x8::splat']
+      - ['vld1q_dup_u16', '*const u16', 'uint16x8_t', 'vld1.16', 'ld1r', 'u16x8::splat']
+      - ['vld1q_dup_p16', '*const p16', 'poly16x8_t', 'vld1.16', 'ld1r', 'u16x8::splat']
 
-      - ['vld1_dup_s32', '*const i32', 'int32x2_t', 'vld1.32', 'ld1r', 'vld1_lane_s32::<0>', 'i32x2::splat(0)', '[0, 0]']
-      - ['vld1_dup_u32', '*const u32', 'uint32x2_t', 'vld1.32', 'ld1r', 'vld1_lane_u32::<0>', 'u32x2::splat(0)', '[0, 0]']
-      - ['vld1_dup_f32', '*const f32', 'float32x2_t', 'vld1.32', 'ld1r', 'vld1_lane_f32::<0>', 'f32x2::splat(0.0)', '[0, 0]']
+      - ['vld1_dup_s32', '*const i32', 'int32x2_t', 'vld1.32', 'ld1r', 'i32x2::splat']
+      - ['vld1_dup_u32', '*const u32', 'uint32x2_t', 'vld1.32', 'ld1r', 'u32x2::splat']
+      - ['vld1_dup_f32', '*const f32', 'float32x2_t', 'vld1.32', 'ld1r', 'f32x2::splat']
 
-      - ['vld1q_dup_s32', '*const i32', 'int32x4_t', 'vld1.32', 'ld1r', 'vld1q_lane_s32::<0>', 'i32x4::splat(0)', '[0, 0, 0, 0]']
-      - ['vld1q_dup_u32', '*const u32', 'uint32x4_t', 'vld1.32', 'ld1r', 'vld1q_lane_u32::<0>', 'u32x4::splat(0)', '[0, 0, 0, 0]']
-      - ['vld1q_dup_f32', '*const f32', 'float32x4_t', 'vld1.32', 'ld1r', 'vld1q_lane_f32::<0>', 'f32x4::splat(0.0)', '[0, 0, 0, 0]']
+      - ['vld1q_dup_s32', '*const i32', 'int32x4_t', 'vld1.32', 'ld1r', 'i32x4::splat']
+      - ['vld1q_dup_u32', '*const u32', 'uint32x4_t', 'vld1.32', 'ld1r', 'u32x4::splat']
+      - ['vld1q_dup_f32', '*const f32', 'float32x4_t', 'vld1.32', 'ld1r', 'f32x4::splat']
 
-      - ['vld1q_dup_s64', '*const i64', 'int64x2_t', 'vldr', 'ld1', 'vld1q_lane_s64::<0>', 'i64x2::splat(0)', '[0, 0]']
-      - ['vld1q_dup_u64', '*const u64', 'uint64x2_t', 'vldr', 'ld1', 'vld1q_lane_u64::<0>', 'u64x2::splat(0)', '[0, 0]']
+      - ['vld1q_dup_s64', '*const i64', 'int64x2_t', 'vldr', 'ld1r', 'i64x2::splat']
+      - ['vld1q_dup_u64', '*const u64', 'uint64x2_t', 'vldr', 'ld1r', 'u64x2::splat']
     compose:
-      - Let:
-          - x
-          - FnCall:
-              - '{type[5]}'
-              - - ptr
-                - FnCall: [transmute, ['{type[6]}']]
-      - FnCall: ['simd_shuffle!', [x, x, '{type[7]}']]
+      - FnCall:
+          - transmute
+          - - FnCall: ['{type[5]}', ["*ptr"]]
 
   - name: "{type[0]}"
     doc: "Absolute difference and accumulate (64-bit)"
diff --git a/library/stdarch/crates/stdarch-gen-arm/src/expression.rs b/library/stdarch/crates/stdarch-gen-arm/src/expression.rs
index 56c94602fff..d5644ef27d4 100644
--- a/library/stdarch/crates/stdarch-gen-arm/src/expression.rs
+++ b/library/stdarch/crates/stdarch-gen-arm/src/expression.rs
@@ -1,5 +1,4 @@
 use itertools::Itertools;
-use lazy_static::lazy_static;
 use proc_macro2::{Literal, Punct, Spacing, TokenStream};
 use quote::{ToTokens, TokenStreamExt, format_ident, quote};
 use regex::Regex;
@@ -7,6 +6,7 @@ use serde::de::{self, MapAccess, Visitor};
 use serde::{Deserialize, Deserializer, Serialize};
 use std::fmt;
 use std::str::FromStr;
+use std::sync::LazyLock;
 
 use crate::intrinsic::Intrinsic;
 use crate::wildstring::WildStringPart;
@@ -374,10 +374,8 @@ impl FromStr for Expression {
     type Err = String;
 
     fn from_str(s: &str) -> Result<Self, Self::Err> {
-        lazy_static! {
-            static ref MACRO_RE: Regex =
-                Regex::new(r"^(?P<name>[\w\d_]+)!\((?P<ex>.*?)\);?$").unwrap();
-        }
+        static MACRO_RE: LazyLock<Regex> =
+            LazyLock::new(|| Regex::new(r"^(?P<name>[\w\d_]+)!\((?P<ex>.*?)\);?$").unwrap());
 
         if s == "SvUndef" {
             Ok(Expression::SvUndef)
diff --git a/library/stdarch/crates/stdarch-gen-arm/src/load_store_tests.rs b/library/stdarch/crates/stdarch-gen-arm/src/load_store_tests.rs
index 5cf39b2e11a..3f3bfed132c 100644
--- a/library/stdarch/crates/stdarch-gen-arm/src/load_store_tests.rs
+++ b/library/stdarch/crates/stdarch-gen-arm/src/load_store_tests.rs
@@ -2,6 +2,7 @@ use std::fs::File;
 use std::io::Write;
 use std::path::PathBuf;
 use std::str::FromStr;
+use std::sync::LazyLock;
 
 use crate::format_code;
 use crate::input::InputType;
@@ -10,7 +11,6 @@ use crate::typekinds::BaseType;
 use crate::typekinds::{ToRepr, TypeKind};
 
 use itertools::Itertools;
-use lazy_static::lazy_static;
 use proc_macro2::TokenStream;
 use quote::{format_ident, quote};
 
@@ -639,8 +639,8 @@ impl LdIntrCharacteristics {
     }
 }
 
-lazy_static! {
-    static ref PREAMBLE: String = format!(
+static PREAMBLE: LazyLock<String> = LazyLock::new(|| {
+    format!(
         r#"#![allow(unused)]
 
 use super::*;
@@ -801,13 +801,11 @@ fn assert_vector_matches_u64(vector: svuint64_t, expected: svuint64_t) {{
     assert!(!svptest_any(defined, cmp))
 }}
 "#
-    );
-}
+    )
+});
 
-lazy_static! {
-    static ref MANUAL_TESTS: String = format!(
-        "#[simd_test(enable = \"sve\")]
-unsafe fn test_ffr() {{
+const MANUAL_TESTS: &str = "#[simd_test(enable = \"sve\")]
+unsafe fn test_ffr() {
     svsetffr();
     let ffr = svrdffr();
     assert_vector_matches_u8(svdup_n_u8_z(ffr, 1), svindex_u8(1, 0));
@@ -816,7 +814,5 @@ unsafe fn test_ffr() {{
     svwrffr(pred);
     let ffr = svrdffr_z(svptrue_b8());
     assert_vector_matches_u8(svdup_n_u8_z(ffr, 1), svdup_n_u8_z(pred, 1));
-}}
-"
-    );
 }
+";
diff --git a/library/stdarch/crates/stdarch-gen-arm/src/typekinds.rs b/library/stdarch/crates/stdarch-gen-arm/src/typekinds.rs
index 7c697cb7c0c..bd47ff2bd15 100644
--- a/library/stdarch/crates/stdarch-gen-arm/src/typekinds.rs
+++ b/library/stdarch/crates/stdarch-gen-arm/src/typekinds.rs
@@ -1,10 +1,10 @@
-use lazy_static::lazy_static;
 use proc_macro2::TokenStream;
 use quote::{ToTokens, TokenStreamExt, quote};
 use regex::Regex;
 use serde_with::{DeserializeFromStr, SerializeDisplay};
 use std::fmt;
 use std::str::FromStr;
+use std::sync::LazyLock;
 
 use crate::context;
 use crate::expression::{Expression, FnCall};
@@ -496,9 +496,9 @@ impl FromStr for VectorType {
     type Err = String;
 
     fn from_str(s: &str) -> Result<Self, Self::Err> {
-        lazy_static! {
-            static ref RE: Regex = Regex::new(r"^(?:(?:sv(?P<sv_ty>(?:uint|int|bool|float)(?:\d+)?))|(?:(?P<ty>(?:uint|int|bool|poly|float)(?:\d+)?)x(?P<lanes>(?:\d+)?)))(?:x(?P<tuple_size>2|3|4))?_t$").unwrap();
-        }
+        static RE: LazyLock<Regex> = LazyLock::new(|| {
+            Regex::new(r"^(?:(?:sv(?P<sv_ty>(?:uint|int|bool|float)(?:\d+)?))|(?:(?P<ty>(?:uint|int|bool|poly|float)(?:\d+)?)x(?P<lanes>(?:\d+)?)))(?:x(?P<tuple_size>2|3|4))?_t$").unwrap()
+        });
 
         if let Some(c) = RE.captures(s) {
             let (base_type, lanes) = Self::sanitise_lanes(
@@ -698,9 +698,8 @@ impl FromStr for BaseType {
     type Err = String;
 
     fn from_str(s: &str) -> Result<Self, Self::Err> {
-        lazy_static! {
-            static ref RE: Regex = Regex::new(r"^(?P<kind>[a-zA-Z]+)(?P<size>\d+)?(_t)?$").unwrap();
-        }
+        static RE: LazyLock<Regex> =
+            LazyLock::new(|| Regex::new(r"^(?P<kind>[a-zA-Z]+)(?P<size>\d+)?(_t)?$").unwrap());
 
         if let Some(c) = RE.captures(s) {
             let kind = c["kind"].parse()?;
diff --git a/library/stdarch/crates/stdarch-gen-arm/src/wildcards.rs b/library/stdarch/crates/stdarch-gen-arm/src/wildcards.rs
index 25aa8034892..6c40d88df45 100644
--- a/library/stdarch/crates/stdarch-gen-arm/src/wildcards.rs
+++ b/library/stdarch/crates/stdarch-gen-arm/src/wildcards.rs
@@ -1,8 +1,7 @@
-use lazy_static::lazy_static;
 use regex::Regex;
 use serde_with::{DeserializeFromStr, SerializeDisplay};
-use std::fmt;
 use std::str::FromStr;
+use std::{fmt, sync::LazyLock};
 
 use crate::{
     fn_suffix::SuffixKind,
@@ -66,9 +65,9 @@ impl FromStr for Wildcard {
     type Err = String;
 
     fn from_str(s: &str) -> Result<Self, Self::Err> {
-        lazy_static! {
-            static ref RE: Regex = Regex::new(r"^(?P<wildcard>\w+?)(?:_x(?P<tuple_size>[2-4]))?(?:\[(?P<index>\d+)\])?(?:\.(?P<modifiers>\w+))?(?:\s+as\s+(?P<scale_to>.*?))?$").unwrap();
-        }
+        static RE: LazyLock<Regex> = LazyLock::new(|| {
+            Regex::new(r"^(?P<wildcard>\w+?)(?:_x(?P<tuple_size>[2-4]))?(?:\[(?P<index>\d+)\])?(?:\.(?P<modifiers>\w+))?(?:\s+as\s+(?P<scale_to>.*?))?$").unwrap()
+        });
 
         if let Some(c) = RE.captures(s) {
             let wildcard_name = &c["wildcard"];
diff --git a/library/stdarch/crates/stdarch-gen-loongarch/README.md b/library/stdarch/crates/stdarch-gen-loongarch/README.md
index 1fc81483a12..2b3f00f34af 100644
--- a/library/stdarch/crates/stdarch-gen-loongarch/README.md
+++ b/library/stdarch/crates/stdarch-gen-loongarch/README.md
@@ -11,7 +11,6 @@ LSX:
 # Generate bindings
 OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsxintrin.h
 OUT_DIR=`pwd`/crates/core_arch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsx.spec
-rustfmt crates/core_arch/src/loongarch64/lsx/generated.rs
 
 # Generate tests
 OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lsx.spec test
@@ -25,7 +24,6 @@ LASX:
 # Generate bindings
 OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasxintrin.h
 OUT_DIR=`pwd`/crates/core_arch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasx.spec
-rustfmt crates/core_arch/src/loongarch64/lasx/generated.rs
 
 # Generate tests
 OUT_DIR=`pwd`/crates/stdarch-gen-loongarch cargo run -p stdarch-gen-loongarch -- crates/stdarch-gen-loongarch/lasx.spec test
diff --git a/library/stdarch/crates/stdarch-gen-loongarch/src/main.rs b/library/stdarch/crates/stdarch-gen-loongarch/src/main.rs
index aa9990b6ccd..40132097f5d 100644
--- a/library/stdarch/crates/stdarch-gen-loongarch/src/main.rs
+++ b/library/stdarch/crates/stdarch-gen-loongarch/src/main.rs
@@ -274,13 +274,14 @@ fn gen_bind_body(
         }
     };
 
+    let is_mem = in_t.iter().any(|s| s.contains("POINTER"));
     let is_store = current_name.to_string().contains("vst");
     let link_function = {
         let fn_decl = {
             let fn_output = if out_t.to_lowercase() == "void" {
                 String::new()
             } else {
-                format!("-> {}", type_to_rst(out_t, is_store))
+                format!(" -> {}", type_to_rst(out_t, is_store))
             };
             let fn_inputs = match para_num {
                 1 => format!("(a: {})", type_to_rst(in_t[0], is_store)),
@@ -304,7 +305,7 @@ fn gen_bind_body(
                 ),
                 _ => panic!("unsupported parameter number"),
             };
-            format!("fn __{current_name}{fn_inputs} {fn_output};")
+            format!("fn __{current_name}{fn_inputs}{fn_output};")
         };
         let function = format!(
             r#"    #[link_name = "llvm.loongarch.{}"]
@@ -456,31 +457,40 @@ fn gen_bind_body(
             };
             rustc_legacy_const_generics = "rustc_legacy_const_generics(2, 3)";
         }
-        format!("pub unsafe fn {current_name}{fn_inputs} {fn_output}")
+        format!(
+            "pub {}fn {current_name}{fn_inputs} {fn_output}",
+            if is_mem { "unsafe " } else { "" }
+        )
     };
+    let unsafe_start = if !is_mem { "unsafe { " } else { "" };
+    let unsafe_end = if !is_mem { " }" } else { "" };
     let mut call_params = {
         match para_num {
-            1 => format!("__{current_name}(a)"),
-            2 => format!("__{current_name}(a, b)"),
-            3 => format!("__{current_name}(a, b, c)"),
-            4 => format!("__{current_name}(a, b, c, d)"),
+            1 => format!("{unsafe_start}__{current_name}(a){unsafe_end}"),
+            2 => format!("{unsafe_start}__{current_name}(a, b){unsafe_end}"),
+            3 => format!("{unsafe_start}__{current_name}(a, b, c){unsafe_end}"),
+            4 => format!("{unsafe_start}__{current_name}(a, b, c, d){unsafe_end}"),
             _ => panic!("unsupported parameter number"),
         }
     };
     if para_num == 1 && in_t[0] == "HI" {
         call_params = match asm_fmts[1].as_str() {
             "si10" => {
-                format!("static_assert_simm_bits!(IMM_S10, 10);\n    __{current_name}(IMM_S10)")
+                format!(
+                    "static_assert_simm_bits!(IMM_S10, 10);\n    {unsafe_start}__{current_name}(IMM_S10){unsafe_end}"
+                )
             }
             "i13" => {
-                format!("static_assert_simm_bits!(IMM_S13, 13);\n    __{current_name}(IMM_S13)")
+                format!(
+                    "static_assert_simm_bits!(IMM_S13, 13);\n    {unsafe_start}__{current_name}(IMM_S13){unsafe_end}"
+                )
             }
             _ => panic!("unsupported assembly format: {}", asm_fmts[2]),
         }
     } else if para_num == 2 && (in_t[1] == "UQI" || in_t[1] == "USI") {
         call_params = if asm_fmts[2].starts_with("ui") {
             format!(
-                "static_assert_uimm_bits!(IMM{0}, {0});\n    __{current_name}(a, IMM{0})",
+                "static_assert_uimm_bits!(IMM{0}, {0});\n    {unsafe_start}__{current_name}(a, IMM{0}){unsafe_end}",
                 asm_fmts[2].get(2..).unwrap()
             )
         } else {
@@ -489,14 +499,16 @@ fn gen_bind_body(
     } else if para_num == 2 && in_t[1] == "QI" {
         call_params = match asm_fmts[2].as_str() {
             "si5" => {
-                format!("static_assert_simm_bits!(IMM_S5, 5);\n    __{current_name}(a, IMM_S5)")
+                format!(
+                    "static_assert_simm_bits!(IMM_S5, 5);\n    {unsafe_start}__{current_name}(a, IMM_S5){unsafe_end}"
+                )
             }
             _ => panic!("unsupported assembly format: {}", asm_fmts[2]),
         };
     } else if para_num == 2 && in_t[0] == "CVPOINTER" && in_t[1] == "SI" {
         call_params = if asm_fmts[2].starts_with("si") {
             format!(
-                "static_assert_simm_bits!(IMM_S{0}, {0});\n    __{current_name}(mem_addr, IMM_S{0})",
+                "static_assert_simm_bits!(IMM_S{0}, {0});\n    {unsafe_start}__{current_name}(mem_addr, IMM_S{0}){unsafe_end}",
                 asm_fmts[2].get(2..).unwrap()
             )
         } else {
@@ -504,13 +516,13 @@ fn gen_bind_body(
         }
     } else if para_num == 2 && in_t[0] == "CVPOINTER" && in_t[1] == "DI" {
         call_params = match asm_fmts[2].as_str() {
-            "rk" => format!("__{current_name}(mem_addr, b)"),
+            "rk" => format!("{unsafe_start}__{current_name}(mem_addr, b){unsafe_end}"),
             _ => panic!("unsupported assembly format: {}", asm_fmts[2]),
         };
     } else if para_num == 3 && (in_t[2] == "USI" || in_t[2] == "UQI") {
         call_params = if asm_fmts[2].starts_with("ui") {
             format!(
-                "static_assert_uimm_bits!(IMM{0}, {0});\n    __{current_name}(a, b, IMM{0})",
+                "static_assert_uimm_bits!(IMM{0}, {0});\n    {unsafe_start}__{current_name}(a, b, IMM{0}){unsafe_end}",
                 asm_fmts[2].get(2..).unwrap()
             )
         } else {
@@ -519,19 +531,19 @@ fn gen_bind_body(
     } else if para_num == 3 && in_t[1] == "CVPOINTER" && in_t[2] == "SI" {
         call_params = match asm_fmts[2].as_str() {
             "si12" => format!(
-                "static_assert_simm_bits!(IMM_S12, 12);\n    __{current_name}(a, mem_addr, IMM_S12)"
+                "static_assert_simm_bits!(IMM_S12, 12);\n    {unsafe_start}__{current_name}(a, mem_addr, IMM_S12){unsafe_end}"
             ),
             _ => panic!("unsupported assembly format: {}", asm_fmts[2]),
         };
     } else if para_num == 3 && in_t[1] == "CVPOINTER" && in_t[2] == "DI" {
         call_params = match asm_fmts[2].as_str() {
-            "rk" => format!("__{current_name}(a, mem_addr, b)"),
+            "rk" => format!("{unsafe_start}__{current_name}(a, mem_addr, b){unsafe_end}"),
             _ => panic!("unsupported assembly format: {}", asm_fmts[2]),
         };
     } else if para_num == 4 {
         call_params = match (asm_fmts[2].as_str(), current_name.chars().last().unwrap()) {
             ("si8", t) => format!(
-                "static_assert_simm_bits!(IMM_S8, 8);\n    static_assert_uimm_bits!(IMM{0}, {0});\n    __{current_name}(a, mem_addr, IMM_S8, IMM{0})",
+                "static_assert_simm_bits!(IMM_S8, 8);\n    static_assert_uimm_bits!(IMM{0}, {0});\n    {unsafe_start}__{current_name}(a, mem_addr, IMM_S8, IMM{0}){unsafe_end}",
                 type_to_imm(t)
             ),
             (_, _) => panic!(
diff --git a/library/stdarch/crates/stdarch-test/Cargo.toml b/library/stdarch/crates/stdarch-test/Cargo.toml
index e4791e4ec52..e88258bfd30 100644
--- a/library/stdarch/crates/stdarch-test/Cargo.toml
+++ b/library/stdarch/crates/stdarch-test/Cargo.toml
@@ -7,7 +7,6 @@ edition = "2024"
 [dependencies]
 assert-instr-macro = { path = "../assert-instr-macro" }
 simd-test-macro = { path = "../simd-test-macro" }
-lazy_static = "1.0"
 rustc-demangle = "0.1.8"
 cfg-if = "1.0"
 
@@ -20,7 +19,7 @@ cc = "1.0"
 # time, and we want to make updates to this explicit rather than automatically
 # picking up updates which might break CI with new instruction names.
 [target.'cfg(target_arch = "wasm32")'.dependencies]
-wasmprinter = "=0.2.67"
+wasmprinter = "=0.235"
 
 [features]
 default = []
diff --git a/library/stdarch/crates/stdarch-test/src/lib.rs b/library/stdarch/crates/stdarch-test/src/lib.rs
index f6614f6d51c..ecaf95f6176 100644
--- a/library/stdarch/crates/stdarch-test/src/lib.rs
+++ b/library/stdarch/crates/stdarch-test/src/lib.rs
@@ -7,13 +7,11 @@
 #![allow(clippy::missing_docs_in_private_items, clippy::print_stdout)]
 
 #[macro_use]
-extern crate lazy_static;
-#[macro_use]
 extern crate cfg_if;
 
 pub use assert_instr_macro::*;
 pub use simd_test_macro::*;
-use std::{cmp, collections::HashSet, env, hash, hint::black_box, str};
+use std::{cmp, collections::HashSet, env, hash, hint::black_box, str, sync::LazyLock};
 
 cfg_if! {
     if #[cfg(target_arch = "wasm32")] {
@@ -25,9 +23,7 @@ cfg_if! {
     }
 }
 
-lazy_static! {
-    static ref DISASSEMBLY: HashSet<Function> = disassemble_myself();
-}
+static DISASSEMBLY: LazyLock<HashSet<Function>> = LazyLock::new(disassemble_myself);
 
 #[derive(Debug)]
 struct Function {
@@ -65,11 +61,12 @@ pub fn assert(shim_addr: usize, fnname: &str, expected: &str) {
     black_box(shim_addr);
 
     //eprintln!("shim name: {fnname}");
-    let function = &DISASSEMBLY
-        .get(&Function::new(fnname))
-        .unwrap_or_else(|| panic!("function \"{fnname}\" not found in the disassembly"));
+    let Some(function) = &DISASSEMBLY.get(&Function::new(fnname)) else {
+        panic!("function `{fnname}` not found in the disassembly")
+    };
     //eprintln!("  function: {:?}", function);
 
+    // Trim any filler instructions.
     let mut instrs = &function.instrs[..];
     while instrs.last().is_some_and(|s| s == "nop" || s == "int3") {
         instrs = &instrs[..instrs.len() - 1];
@@ -84,12 +81,26 @@ pub fn assert(shim_addr: usize, fnname: &str, expected: &str) {
     // 2. It is a mark, indicating that the instruction will be
     // compiled into other instructions - mainly because of llvm
     // optimization.
-    let expected = if expected == "unknown" {
-        "<unknown>" // Workaround for rust-lang/stdarch#1674, todo: remove when the issue is fixed
-    } else {
-        expected
+    let expected = match expected {
+        // `<unknown>` is what LLVM will generate for unknown instructions. We use this to fail
+        // loudly when LLVM does start supporting these instructions.
+        //
+        // This was introduced in https://github.com/rust-lang/stdarch/pull/1674 to work around the
+        // RISC-V P extension not yet being supported.
+        "unknown" => "<unknown>",
+        _ => expected,
     };
-    let found = expected == "nop" || instrs.iter().any(|s| s.starts_with(expected));
+
+    // Check whether the given instruction is part of the disassemblied body.
+    let found = expected == "nop"
+        || instrs.iter().any(|instruction| {
+            instruction.starts_with(expected)
+            // Check that the next character is non-alphanumeric. This prevents false negatives
+            // when e.g. `fminnm` was used but `fmin` was expected.
+            //
+            // TODO: resolve the conflicts (x86_64 and aarch64 have a bunch, probably others)
+            // && !instruction[expected.len()..].starts_with(|c: char| c.is_ascii_alphanumeric())
+        });
 
     // Look for subroutine call instructions in the disassembly to detect whether
     // inlining failed: all intrinsics are `#[inline(always)]`, so calling one
diff --git a/library/stdarch/examples/Cargo.toml b/library/stdarch/examples/Cargo.toml
index 61184494e15..61451edee84 100644
--- a/library/stdarch/examples/Cargo.toml
+++ b/library/stdarch/examples/Cargo.toml
@@ -12,7 +12,6 @@ default-run = "hex"
 
 [dependencies]
 core_arch = { path = "../crates/core_arch" }
-std_detect = { path = "../crates/std_detect" }
 quickcheck = "1.0"
 rand = "0.8"
 
diff --git a/library/stdarch/examples/connect5.rs b/library/stdarch/examples/connect5.rs
index 2b451f45d71..371b28552b3 100644
--- a/library/stdarch/examples/connect5.rs
+++ b/library/stdarch/examples/connect5.rs
@@ -40,9 +40,13 @@ use std::cmp;
 use std::time::Instant;
 
 #[cfg(target_arch = "x86")]
-use {core_arch::arch::x86::*, std_detect::is_x86_feature_detected};
+use core_arch::arch::x86::*;
 #[cfg(target_arch = "x86_64")]
-use {core_arch::arch::x86_64::*, std_detect::is_x86_feature_detected};
+use core_arch::arch::x86_64::*;
+#[cfg(target_arch = "x86")]
+use std::is_x86_feature_detected;
+#[cfg(target_arch = "x86_64")]
+use std::is_x86_feature_detected;
 
 // types
 
@@ -558,7 +562,12 @@ fn search(pos: &Pos, alpha: i32, beta: i32, depth: i32, _ply: i32) -> i32 {
     assert_ne!(bm, MOVE_NONE);
     assert!(bs >= -EVAL_INF && bs <= EVAL_INF);
 
-    if _ply == 0 { bm } else { bs } //best move at the root node, best score elsewhere
+    //best move at the root node, best score elsewhere
+    if _ply == 0 {
+        bm
+    } else {
+        bs
+    }
 }
 
 /// Evaluation function: give different scores to different patterns after a fixed depth.
@@ -570,15 +579,11 @@ fn eval(pos: &Pos, _ply: i32) -> i32 {
     #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
     {
         if check_x86_avx512_features() {
-            unsafe {
-                if check_patternlive4_avx512(pos, def) {
-                    return -4096;
-                }
-            }
-        } else {
-            if check_patternlive4(pos, def) {
+            if unsafe { check_patternlive4_avx512(pos, def) } {
                 return -4096;
             }
+        } else if check_patternlive4(pos, def) {
+            return -4096;
         }
     }
 
@@ -593,15 +598,11 @@ fn eval(pos: &Pos, _ply: i32) -> i32 {
     #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
     {
         if check_x86_avx512_features() {
-            unsafe {
-                if check_patternlive4_avx512(pos, atk) {
-                    return 2560;
-                }
-            }
-        } else {
-            if check_patternlive4(pos, atk) {
+            if unsafe { check_patternlive4_avx512(pos, atk) } {
                 return 2560;
             }
+        } else if check_patternlive4(pos, atk) {
+            return 2560;
         }
     }
 
@@ -616,15 +617,11 @@ fn eval(pos: &Pos, _ply: i32) -> i32 {
     #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
     {
         if check_x86_avx512_features() {
-            unsafe {
-                if check_patterndead4_avx512(pos, atk) > 0 {
-                    return 2560;
-                }
-            }
-        } else {
-            if check_patterndead4(pos, atk) > 0 {
+            if unsafe { check_patterndead4_avx512(pos, atk) > 0 } {
                 return 2560;
             }
+        } else if check_patterndead4(pos, atk) > 0 {
+            return 2560;
         }
     }
 
@@ -909,9 +906,7 @@ fn pos_is_winner_avx512(pos: &Pos) -> bool {
                                         0b00_10_10_10_10_11_10_10_10_10_11_11_11_11_11_10];
     let mut count_match: i32 = 0;
 
-    for dir in 0..2 {
-        // direction 0 and 1
-        let mut board0 = board0org[dir];
+    for mut board0 in board0org {
         let boardf = _mm512_and_si512(answer, board0);
         let temp_mask = _mm512_mask_cmpeq_epi16_mask(answer_mask[0], answer, boardf);
         count_match += _popcnt32(temp_mask as i32);
diff --git a/library/stdarch/examples/hex.rs b/library/stdarch/examples/hex.rs
index e393ad72716..95ffbaf666c 100644
--- a/library/stdarch/examples/hex.rs
+++ b/library/stdarch/examples/hex.rs
@@ -36,9 +36,13 @@ use std::{
 };
 
 #[cfg(target_arch = "x86")]
-use {core_arch::arch::x86::*, std_detect::is_x86_feature_detected};
+use core_arch::arch::x86::*;
 #[cfg(target_arch = "x86_64")]
-use {core_arch::arch::x86_64::*, std_detect::is_x86_feature_detected};
+use core_arch::arch::x86_64::*;
+#[cfg(target_arch = "x86")]
+use std::is_x86_feature_detected;
+#[cfg(target_arch = "x86_64")]
+use std::is_x86_feature_detected;
 
 fn main() {
     let mut input = Vec::new();
diff --git a/library/stdarch/triagebot.toml b/library/stdarch/triagebot.toml
index 75eb642e996..2c281c8f7d4 100644
--- a/library/stdarch/triagebot.toml
+++ b/library/stdarch/triagebot.toml
@@ -1,7 +1,7 @@
 [assign]
 
 [assign.owners]
-"*" = ["@Amanieu"]
+"*" = ["@Amanieu", "@folkertdev", "@sayantn"]
 
 [ping.windows]
 message = """\
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 00000000000..dbdd9c644f1
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,3232 @@
+{
+  "name": "rust",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "dependencies": {
+        "browser-ui-test": "^0.21.1",
+        "es-check": "^6.2.1",
+        "eslint": "^8.57.1",
+        "eslint-js": "github:eslint/js",
+        "typescript": "^5.8.3"
+      }
+    },
+    "node_modules/@babel/code-frame": {
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
+      "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/helper-validator-identifier": "^7.27.1",
+        "js-tokens": "^4.0.0",
+        "picocolors": "^1.1.1"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helper-validator-identifier": {
+      "version": "7.27.1",
+      "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+      "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@caporal/core": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/@caporal/core/-/core-2.0.7.tgz",
+      "integrity": "sha512-OvKBEidoXUGT28RP3USXFdLgiR5kGCHfRXR1uBQznyxBHaWjGcpH+G1chRqyIVT82pQoJiauOZRIGlrpyAbRYQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/glob": "^7.1.1",
+        "@types/lodash": "^4.14.149",
+        "@types/node": "13.9.3",
+        "@types/table": "^5.0.0",
+        "@types/tabtab": "^3.0.1",
+        "@types/wrap-ansi": "^3.0.0",
+        "chalk": "^3.0.0",
+        "glob": "^7.1.6",
+        "lodash": "^4.17.21",
+        "table": "^5.4.6",
+        "tabtab": "^3.0.2",
+        "winston": "^3.2.1",
+        "wrap-ansi": "^6.2.0"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/@colors/colors": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz",
+      "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.1.90"
+      }
+    },
+    "node_modules/@dabh/diagnostics": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz",
+      "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==",
+      "license": "MIT",
+      "dependencies": {
+        "colorspace": "1.1.x",
+        "enabled": "2.0.x",
+        "kuler": "^2.0.0"
+      }
+    },
+    "node_modules/@eslint-community/eslint-utils": {
+      "version": "4.7.0",
+      "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz",
+      "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==",
+      "license": "MIT",
+      "dependencies": {
+        "eslint-visitor-keys": "^3.4.3"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      },
+      "peerDependencies": {
+        "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
+      }
+    },
+    "node_modules/@eslint-community/regexpp": {
+      "version": "4.12.1",
+      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+      "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
+      "license": "MIT",
+      "engines": {
+        "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@eslint/eslintrc": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+      "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ajv": "^6.12.4",
+        "debug": "^4.3.2",
+        "espree": "^9.6.0",
+        "globals": "^13.19.0",
+        "ignore": "^5.2.0",
+        "import-fresh": "^3.2.1",
+        "js-yaml": "^4.1.0",
+        "minimatch": "^3.1.2",
+        "strip-json-comments": "^3.1.1"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/@eslint/js": {
+      "version": "8.57.1",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
+      "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
+      "license": "MIT",
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@humanwhocodes/config-array": {
+      "version": "0.13.0",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+      "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+      "deprecated": "Use @eslint/config-array instead",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@humanwhocodes/object-schema": "^2.0.3",
+        "debug": "^4.3.1",
+        "minimatch": "^3.0.5"
+      },
+      "engines": {
+        "node": ">=10.10.0"
+      }
+    },
+    "node_modules/@humanwhocodes/module-importer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+      "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=12.22"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
+    },
+    "node_modules/@humanwhocodes/object-schema": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+      "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+      "deprecated": "Use @eslint/object-schema instead",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/@nodelib/fs.scandir": {
+      "version": "2.1.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+      "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.stat": "2.0.5",
+        "run-parallel": "^1.1.9"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.stat": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+      "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@nodelib/fs.walk": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+      "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.scandir": "2.1.5",
+        "fastq": "^1.6.0"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/@puppeteer/browsers": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.3.0.tgz",
+      "integrity": "sha512-ioXoq9gPxkss4MYhD+SFaU9p1IHFUX0ILAWFPyjGaBdjLsYAlZw6j1iLA0N/m12uVHLFDfSYNF7EQccjinIMDA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "debug": "^4.3.5",
+        "extract-zip": "^2.0.1",
+        "progress": "^2.0.3",
+        "proxy-agent": "^6.4.0",
+        "semver": "^7.6.3",
+        "tar-fs": "^3.0.6",
+        "unbzip2-stream": "^1.4.3",
+        "yargs": "^17.7.2"
+      },
+      "bin": {
+        "browsers": "lib/cjs/main-cli.js"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@tootallnate/quickjs-emscripten": {
+      "version": "0.23.0",
+      "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz",
+      "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==",
+      "license": "MIT"
+    },
+    "node_modules/@types/glob": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
+      "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/lodash": {
+      "version": "4.17.20",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.20.tgz",
+      "integrity": "sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==",
+      "license": "MIT"
+    },
+    "node_modules/@types/minimatch": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
+      "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
+      "license": "MIT"
+    },
+    "node_modules/@types/node": {
+      "version": "13.9.3",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.3.tgz",
+      "integrity": "sha512-01s+ac4qerwd6RHD+mVbOEsraDHSgUaefQlEdBbUolnQFjKwCr7luvAlEwW1RFojh67u0z4OUTjPn9LEl4zIkA==",
+      "license": "MIT"
+    },
+    "node_modules/@types/table": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/@types/table/-/table-5.0.0.tgz",
+      "integrity": "sha512-fQLtGLZXor264zUPWI95WNDsZ3QV43/c0lJpR/h1hhLJumXRmHNsrvBfEzW2YMhb0EWCsn4U6h82IgwsajAuTA==",
+      "license": "MIT"
+    },
+    "node_modules/@types/tabtab": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@types/tabtab/-/tabtab-3.0.4.tgz",
+      "integrity": "sha512-gmh8JsmIYPGRqk8Xb4dmulV37TpLwg0Quo3GJ0LgEcl4v0O92F14PGebBd7LHv9GBEw2KbmBSrvU0/NzIy5AoA==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@types/triple-beam": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz",
+      "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==",
+      "license": "MIT"
+    },
+    "node_modules/@types/wrap-ansi": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz",
+      "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==",
+      "license": "MIT"
+    },
+    "node_modules/@types/yauzl": {
+      "version": "2.10.3",
+      "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz",
+      "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==",
+      "license": "MIT",
+      "optional": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@ungap/structured-clone": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+      "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+      "license": "ISC"
+    },
+    "node_modules/acorn": {
+      "version": "8.15.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+      "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+      "license": "MIT",
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-jsx": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+      "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+      "license": "MIT",
+      "peerDependencies": {
+        "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+      }
+    },
+    "node_modules/agent-base": {
+      "version": "7.1.4",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+      "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.12.6",
+      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+      "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+      "license": "MIT",
+      "dependencies": {
+        "fast-deep-equal": "^3.1.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/epoberezkin"
+      }
+    },
+    "node_modules/ansi-escapes": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+      "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "license": "Python-2.0"
+    },
+    "node_modules/ast-types": {
+      "version": "0.13.4",
+      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz",
+      "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==",
+      "license": "MIT",
+      "dependencies": {
+        "tslib": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/astral-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
+      "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/async": {
+      "version": "3.2.6",
+      "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
+      "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
+      "license": "MIT"
+    },
+    "node_modules/b4a": {
+      "version": "1.6.7",
+      "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
+      "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
+      "license": "Apache-2.0"
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "license": "MIT"
+    },
+    "node_modules/bare-events": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.0.tgz",
+      "integrity": "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==",
+      "license": "Apache-2.0",
+      "optional": true
+    },
+    "node_modules/bare-fs": {
+      "version": "4.1.6",
+      "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz",
+      "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==",
+      "license": "Apache-2.0",
+      "optional": true,
+      "dependencies": {
+        "bare-events": "^2.5.4",
+        "bare-path": "^3.0.0",
+        "bare-stream": "^2.6.4"
+      },
+      "engines": {
+        "bare": ">=1.16.0"
+      },
+      "peerDependencies": {
+        "bare-buffer": "*"
+      },
+      "peerDependenciesMeta": {
+        "bare-buffer": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/bare-os": {
+      "version": "3.6.1",
+      "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz",
+      "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==",
+      "license": "Apache-2.0",
+      "optional": true,
+      "engines": {
+        "bare": ">=1.14.0"
+      }
+    },
+    "node_modules/bare-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
+      "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
+      "license": "Apache-2.0",
+      "optional": true,
+      "dependencies": {
+        "bare-os": "^3.0.1"
+      }
+    },
+    "node_modules/bare-stream": {
+      "version": "2.6.5",
+      "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz",
+      "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==",
+      "license": "Apache-2.0",
+      "optional": true,
+      "dependencies": {
+        "streamx": "^2.21.0"
+      },
+      "peerDependencies": {
+        "bare-buffer": "*",
+        "bare-events": "*"
+      },
+      "peerDependenciesMeta": {
+        "bare-buffer": {
+          "optional": true
+        },
+        "bare-events": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/basic-ftp": {
+      "version": "5.0.5",
+      "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz",
+      "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.12",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+      "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+      "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+      "license": "MIT",
+      "dependencies": {
+        "fill-range": "^7.1.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/browser-ui-test": {
+      "version": "0.21.1",
+      "resolved": "https://registry.npmjs.org/browser-ui-test/-/browser-ui-test-0.21.1.tgz",
+      "integrity": "sha512-b3a9mhALAmbP+GifoN/c295RPyuyfIUFMz0DtlBHbeDW5PYQTMHZZJtm7R2UyP6JiIQSkR+7227sS3maMGMUTg==",
+      "license": "MIT",
+      "dependencies": {
+        "css-unit-converter": "^1.1.2",
+        "pngjs": "^3.4.0",
+        "puppeteer": "^22.15.0",
+        "readline-sync": "^1.4.10"
+      },
+      "bin": {
+        "browser-ui-test": "src/index.js"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.1.13"
+      }
+    },
+    "node_modules/buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/callsites": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/chalk": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+      "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/chardet": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
+      "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+      "license": "MIT"
+    },
+    "node_modules/chromium-bidi": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.6.3.tgz",
+      "integrity": "sha512-qXlsCmpCZJAnoTYI83Iu6EdYQpMYdVkCfq08KDh2pmlVqK5t5IA9mGs4/LwCwp4fqisSOMXZxP3HIh8w8aRn0A==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "mitt": "3.0.1",
+        "urlpattern-polyfill": "10.0.0",
+        "zod": "3.23.8"
+      },
+      "peerDependencies": {
+        "devtools-protocol": "*"
+      }
+    },
+    "node_modules/cli-cursor": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+      "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
+      "license": "MIT",
+      "dependencies": {
+        "restore-cursor": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/cli-width": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
+      "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
+      "license": "ISC"
+    },
+    "node_modules/cliui": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+      "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+      "license": "ISC",
+      "dependencies": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.1",
+        "wrap-ansi": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/cliui/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "license": "MIT"
+    },
+    "node_modules/cliui/node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cliui/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/cliui/node_modules/wrap-ansi": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+      "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+      }
+    },
+    "node_modules/color": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
+      "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.3",
+        "color-string": "^1.6.0"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "license": "MIT"
+    },
+    "node_modules/color-string": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+      "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "node_modules/color/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/color/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "license": "MIT"
+    },
+    "node_modules/colorspace": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz",
+      "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==",
+      "license": "MIT",
+      "dependencies": {
+        "color": "^3.1.3",
+        "text-hex": "1.0.x"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+      "license": "MIT"
+    },
+    "node_modules/cosmiconfig": {
+      "version": "9.0.0",
+      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz",
+      "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==",
+      "license": "MIT",
+      "dependencies": {
+        "env-paths": "^2.2.1",
+        "import-fresh": "^3.3.0",
+        "js-yaml": "^4.1.0",
+        "parse-json": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/d-fischer"
+      },
+      "peerDependencies": {
+        "typescript": ">=4.9.5"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/cross-spawn": {
+      "version": "7.0.6",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+      "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+      "license": "MIT",
+      "dependencies": {
+        "path-key": "^3.1.0",
+        "shebang-command": "^2.0.0",
+        "which": "^2.0.1"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/css-unit-converter": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz",
+      "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==",
+      "license": "MIT"
+    },
+    "node_modules/data-uri-to-buffer": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz",
+      "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/debug": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+      "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "^2.1.3"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/deep-is": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+      "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+      "license": "MIT"
+    },
+    "node_modules/degenerator": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz",
+      "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ast-types": "^0.13.4",
+        "escodegen": "^2.1.0",
+        "esprima": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/devtools-protocol": {
+      "version": "0.0.1312386",
+      "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1312386.tgz",
+      "integrity": "sha512-DPnhUXvmvKT2dFA/j7B+riVLUt9Q6RKJlcppojL5CoRywJJKLDYnRlw0gTFKfgDPHP5E04UoB71SxoJlVZy8FA==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/doctrine": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
+      "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "esutils": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+      "license": "MIT"
+    },
+    "node_modules/enabled": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
+      "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==",
+      "license": "MIT"
+    },
+    "node_modules/end-of-stream": {
+      "version": "1.4.5",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+      "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+      "license": "MIT",
+      "dependencies": {
+        "once": "^1.4.0"
+      }
+    },
+    "node_modules/env-paths": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+      "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "license": "MIT",
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/es-check": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/es-check/-/es-check-6.2.1.tgz",
+      "integrity": "sha512-IPiRXUlwSTd2yMklIf9yEGe6GK5wCS8Sz1aTNHm1QSiYzI4aiq19giYbLi95tb+e0JJVKmcU0iQXQWW60a8V9A==",
+      "license": "MIT",
+      "dependencies": {
+        "@caporal/core": "^2.0.2",
+        "acorn": "^8.7.0",
+        "fast-glob": "^3.2.11"
+      },
+      "bin": {
+        "es-check": "index.js"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/es6-promisify": {
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.1.1.tgz",
+      "integrity": "sha512-HBL8I3mIki5C1Cc9QjKUenHtnG0A5/xA8Q/AllRcfiwl2CZFXGK7ddBiCoRwAix4i2KxcQfjtIVcrVbB3vbmwg==",
+      "license": "MIT"
+    },
+    "node_modules/escalade": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+      "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/escodegen": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+      "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "esprima": "^4.0.1",
+        "estraverse": "^5.2.0",
+        "esutils": "^2.0.2"
+      },
+      "bin": {
+        "escodegen": "bin/escodegen.js",
+        "esgenerate": "bin/esgenerate.js"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "optionalDependencies": {
+        "source-map": "~0.6.1"
+      }
+    },
+    "node_modules/eslint": {
+      "version": "8.57.1",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
+      "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+      "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
+      "license": "MIT",
+      "dependencies": {
+        "@eslint-community/eslint-utils": "^4.2.0",
+        "@eslint-community/regexpp": "^4.6.1",
+        "@eslint/eslintrc": "^2.1.4",
+        "@eslint/js": "8.57.1",
+        "@humanwhocodes/config-array": "^0.13.0",
+        "@humanwhocodes/module-importer": "^1.0.1",
+        "@nodelib/fs.walk": "^1.2.8",
+        "@ungap/structured-clone": "^1.2.0",
+        "ajv": "^6.12.4",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.3.2",
+        "doctrine": "^3.0.0",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^7.2.2",
+        "eslint-visitor-keys": "^3.4.3",
+        "espree": "^9.6.1",
+        "esquery": "^1.4.2",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "find-up": "^5.0.0",
+        "glob-parent": "^6.0.2",
+        "globals": "^13.19.0",
+        "graphemer": "^1.4.0",
+        "ignore": "^5.2.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "is-path-inside": "^3.0.3",
+        "js-yaml": "^4.1.0",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.4.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.1.2",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.3",
+        "strip-ansi": "^6.0.1",
+        "text-table": "^0.2.0"
+      },
+      "bin": {
+        "eslint": "bin/eslint.js"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/eslint-js": {
+      "version": "1.0.0",
+      "resolved": "git+ssh://git@github.com/eslint/js.git#5bd12e3772d361af2c4bfad774ea7bfd9caae6bc",
+      "workspaces": [
+        "packages/*"
+      ]
+    },
+    "node_modules/eslint-scope": {
+      "version": "7.2.2",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
+      "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "esrecurse": "^4.3.0",
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/eslint-visitor-keys": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/eslint/node_modules/chalk": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.1.0",
+        "supports-color": "^7.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk?sponsor=1"
+      }
+    },
+    "node_modules/espree": {
+      "version": "9.6.1",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
+      "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "acorn": "^8.9.0",
+        "acorn-jsx": "^5.3.2",
+        "eslint-visitor-keys": "^3.4.1"
+      },
+      "engines": {
+        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "license": "BSD-2-Clause",
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/esquery": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+      "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "estraverse": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "estraverse": "^5.2.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "5.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+      "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "license": "BSD-2-Clause",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/external-editor": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
+      "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+      "license": "MIT",
+      "dependencies": {
+        "chardet": "^0.7.0",
+        "iconv-lite": "^0.4.24",
+        "tmp": "^0.0.33"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/extract-zip": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+      "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "debug": "^4.1.1",
+        "get-stream": "^5.1.0",
+        "yauzl": "^2.10.0"
+      },
+      "bin": {
+        "extract-zip": "cli.js"
+      },
+      "engines": {
+        "node": ">= 10.17.0"
+      },
+      "optionalDependencies": {
+        "@types/yauzl": "^2.9.1"
+      }
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+      "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+      "license": "MIT"
+    },
+    "node_modules/fast-fifo": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+      "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+      "license": "MIT"
+    },
+    "node_modules/fast-glob": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+      "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+      "license": "MIT",
+      "dependencies": {
+        "@nodelib/fs.stat": "^2.0.2",
+        "@nodelib/fs.walk": "^1.2.3",
+        "glob-parent": "^5.1.2",
+        "merge2": "^1.3.0",
+        "micromatch": "^4.0.8"
+      },
+      "engines": {
+        "node": ">=8.6.0"
+      }
+    },
+    "node_modules/fast-glob/node_modules/glob-parent": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+      "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+      "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+      "license": "MIT"
+    },
+    "node_modules/fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+      "license": "MIT"
+    },
+    "node_modules/fastq": {
+      "version": "1.19.1",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
+      "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
+      "license": "ISC",
+      "dependencies": {
+        "reusify": "^1.0.4"
+      }
+    },
+    "node_modules/fd-slicer": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+      "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+      "license": "MIT",
+      "dependencies": {
+        "pend": "~1.2.0"
+      }
+    },
+    "node_modules/fecha": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
+      "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==",
+      "license": "MIT"
+    },
+    "node_modules/figures": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+      "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
+      "license": "MIT",
+      "dependencies": {
+        "escape-string-regexp": "^1.0.5"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/figures/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/file-entry-cache": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
+      "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+      "license": "MIT",
+      "dependencies": {
+        "flat-cache": "^3.0.4"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/fill-range": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+      "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+      "license": "MIT",
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+      "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+      "license": "MIT",
+      "dependencies": {
+        "locate-path": "^6.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/flat-cache": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz",
+      "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==",
+      "license": "MIT",
+      "dependencies": {
+        "flatted": "^3.2.9",
+        "keyv": "^4.5.3",
+        "rimraf": "^3.0.2"
+      },
+      "engines": {
+        "node": "^10.12.0 || >=12.0.0"
+      }
+    },
+    "node_modules/flatted": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz",
+      "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==",
+      "license": "ISC"
+    },
+    "node_modules/fn.name": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
+      "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==",
+      "license": "MIT"
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+      "license": "ISC"
+    },
+    "node_modules/get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+      "license": "ISC",
+      "engines": {
+        "node": "6.* || 8.* || >= 10.*"
+      }
+    },
+    "node_modules/get-stream": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+      "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+      "license": "MIT",
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/get-uri": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz",
+      "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==",
+      "license": "MIT",
+      "dependencies": {
+        "basic-ftp": "^5.0.2",
+        "data-uri-to-buffer": "^6.0.2",
+        "debug": "^4.3.4"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "deprecated": "Glob versions prior to v9 are no longer supported",
+      "license": "ISC",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+      "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+      "license": "ISC",
+      "dependencies": {
+        "is-glob": "^4.0.3"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
+    "node_modules/globals": {
+      "version": "13.24.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+      "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+      "license": "MIT",
+      "dependencies": {
+        "type-fest": "^0.20.2"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/graphemer": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+      "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+      "license": "MIT"
+    },
+    "node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/http-proxy-agent": {
+      "version": "7.0.2",
+      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+      "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "^7.1.0",
+        "debug": "^4.3.4"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/https-proxy-agent": {
+      "version": "7.0.6",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+      "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "^7.1.2",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/ignore": {
+      "version": "5.3.2",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+      "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/import-fresh": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz",
+      "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==",
+      "license": "MIT",
+      "dependencies": {
+        "parent-module": "^1.0.0",
+        "resolve-from": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.19"
+      }
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+      "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+      "license": "ISC",
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "license": "ISC"
+    },
+    "node_modules/inquirer": {
+      "version": "6.5.2",
+      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
+      "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-escapes": "^3.2.0",
+        "chalk": "^2.4.2",
+        "cli-cursor": "^2.1.0",
+        "cli-width": "^2.0.0",
+        "external-editor": "^3.0.3",
+        "figures": "^2.0.0",
+        "lodash": "^4.17.12",
+        "mute-stream": "0.0.7",
+        "run-async": "^2.2.0",
+        "rxjs": "^6.4.0",
+        "string-width": "^2.1.0",
+        "strip-ansi": "^5.1.0",
+        "through": "^2.3.6"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/inquirer/node_modules/ansi-regex": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+      "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/inquirer/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/inquirer/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "license": "MIT"
+    },
+    "node_modules/inquirer/node_modules/escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/inquirer/node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/string-width": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+      "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+      "license": "MIT",
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/string-width/node_modules/ansi-regex": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
+      "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/string-width/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+      "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/inquirer/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/inquirer/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/ip-address": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz",
+      "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==",
+      "license": "MIT",
+      "dependencies": {
+        "jsbn": "1.1.0",
+        "sprintf-js": "^1.1.3"
+      },
+      "engines": {
+        "node": ">= 12"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+      "license": "MIT"
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+      "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+      "license": "MIT",
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-path-inside": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
+      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/is-stream": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+      "license": "ISC"
+    },
+    "node_modules/js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "license": "MIT"
+    },
+    "node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "license": "MIT",
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/jsbn": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz",
+      "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==",
+      "license": "MIT"
+    },
+    "node_modules/json-buffer": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+      "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+      "license": "MIT"
+    },
+    "node_modules/json-parse-even-better-errors": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+      "license": "MIT"
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "license": "MIT"
+    },
+    "node_modules/json-stable-stringify-without-jsonify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+      "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+      "license": "MIT"
+    },
+    "node_modules/keyv": {
+      "version": "4.5.4",
+      "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+      "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+      "license": "MIT",
+      "dependencies": {
+        "json-buffer": "3.0.1"
+      }
+    },
+    "node_modules/kuler": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
+      "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==",
+      "license": "MIT"
+    },
+    "node_modules/levn": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+      "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "^1.2.1",
+        "type-check": "~0.4.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/lines-and-columns": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+      "license": "MIT"
+    },
+    "node_modules/locate-path": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+      "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+      "license": "MIT",
+      "dependencies": {
+        "p-locate": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.21",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+      "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+      "license": "MIT"
+    },
+    "node_modules/lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "license": "MIT"
+    },
+    "node_modules/logform": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz",
+      "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@colors/colors": "1.6.0",
+        "@types/triple-beam": "^1.3.2",
+        "fecha": "^4.2.0",
+        "ms": "^2.1.1",
+        "safe-stable-stringify": "^2.3.1",
+        "triple-beam": "^1.3.0"
+      },
+      "engines": {
+        "node": ">= 12.0.0"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "7.18.3",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
+      "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/merge2": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+      "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+      "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+      "license": "MIT",
+      "dependencies": {
+        "braces": "^3.0.3",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
+    "node_modules/mimic-fn": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+      "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/mitt": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+      "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==",
+      "license": "MIT"
+    },
+    "node_modules/mkdirp": {
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.6"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+      "license": "MIT"
+    },
+    "node_modules/mute-stream": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+      "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==",
+      "license": "ISC"
+    },
+    "node_modules/natural-compare": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+      "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+      "license": "MIT"
+    },
+    "node_modules/netmask": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
+      "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+      "license": "ISC",
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/one-time": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
+      "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
+      "license": "MIT",
+      "dependencies": {
+        "fn.name": "1.x.x"
+      }
+    },
+    "node_modules/onetime": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+      "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
+      "license": "MIT",
+      "dependencies": {
+        "mimic-fn": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/optionator": {
+      "version": "0.9.4",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+      "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+      "license": "MIT",
+      "dependencies": {
+        "deep-is": "^0.1.3",
+        "fast-levenshtein": "^2.0.6",
+        "levn": "^0.4.1",
+        "prelude-ls": "^1.2.1",
+        "type-check": "^0.4.0",
+        "word-wrap": "^1.2.5"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/os-tmpdir": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+      "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+      "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+      "license": "MIT",
+      "dependencies": {
+        "yocto-queue": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+      "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+      "license": "MIT",
+      "dependencies": {
+        "p-limit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/pac-proxy-agent": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz",
+      "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==",
+      "license": "MIT",
+      "dependencies": {
+        "@tootallnate/quickjs-emscripten": "^0.23.0",
+        "agent-base": "^7.1.2",
+        "debug": "^4.3.4",
+        "get-uri": "^6.0.1",
+        "http-proxy-agent": "^7.0.0",
+        "https-proxy-agent": "^7.0.6",
+        "pac-resolver": "^7.0.1",
+        "socks-proxy-agent": "^8.0.5"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/pac-resolver": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz",
+      "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==",
+      "license": "MIT",
+      "dependencies": {
+        "degenerator": "^5.0.0",
+        "netmask": "^2.0.2"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/parent-module": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+      "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+      "license": "MIT",
+      "dependencies": {
+        "callsites": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.0.0",
+        "error-ex": "^1.3.1",
+        "json-parse-even-better-errors": "^2.3.0",
+        "lines-and-columns": "^1.1.6"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-key": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+      "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/pend": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+      "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+      "license": "MIT"
+    },
+    "node_modules/picocolors": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+      "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+      "license": "ISC"
+    },
+    "node_modules/picomatch": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+      "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/pngjs": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+      "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/prelude-ls": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+      "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/progress": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/proxy-agent": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz",
+      "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==",
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "^7.1.2",
+        "debug": "^4.3.4",
+        "http-proxy-agent": "^7.0.1",
+        "https-proxy-agent": "^7.0.6",
+        "lru-cache": "^7.14.1",
+        "pac-proxy-agent": "^7.1.0",
+        "proxy-from-env": "^1.1.0",
+        "socks-proxy-agent": "^8.0.5"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+      "license": "MIT"
+    },
+    "node_modules/pump": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
+      "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
+      "license": "MIT",
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/punycode": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+      "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/puppeteer": {
+      "version": "22.15.0",
+      "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.15.0.tgz",
+      "integrity": "sha512-XjCY1SiSEi1T7iSYuxS82ft85kwDJUS7wj1Z0eGVXKdtr5g4xnVcbjwxhq5xBnpK/E7x1VZZoJDxpjAOasHT4Q==",
+      "hasInstallScript": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@puppeteer/browsers": "2.3.0",
+        "cosmiconfig": "^9.0.0",
+        "devtools-protocol": "0.0.1312386",
+        "puppeteer-core": "22.15.0"
+      },
+      "bin": {
+        "puppeteer": "lib/esm/puppeteer/node/cli.js"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/puppeteer-core": {
+      "version": "22.15.0",
+      "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.15.0.tgz",
+      "integrity": "sha512-cHArnywCiAAVXa3t4GGL2vttNxh7GqXtIYGym99egkNJ3oG//wL9LkvO4WE8W1TJe95t1F1ocu9X4xWaGsOKOA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@puppeteer/browsers": "2.3.0",
+        "chromium-bidi": "0.6.3",
+        "debug": "^4.3.6",
+        "devtools-protocol": "0.0.1312386",
+        "ws": "^8.18.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/queue-microtask": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
+      "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/readable-stream": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+      "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+      "license": "MIT",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/readline-sync": {
+      "version": "1.4.10",
+      "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz",
+      "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+      "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/restore-cursor": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+      "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
+      "license": "MIT",
+      "dependencies": {
+        "onetime": "^2.0.0",
+        "signal-exit": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/reusify": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+      "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
+      "license": "MIT",
+      "engines": {
+        "iojs": ">=1.0.0",
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "deprecated": "Rimraf versions prior to v4 are no longer supported",
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/run-async": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+      "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/run-parallel": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
+      "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT",
+      "dependencies": {
+        "queue-microtask": "^1.2.2"
+      }
+    },
+    "node_modules/rxjs": {
+      "version": "6.6.7",
+      "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+      "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "tslib": "^1.9.0"
+      },
+      "engines": {
+        "npm": ">=2.0.0"
+      }
+    },
+    "node_modules/rxjs/node_modules/tslib": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
+      "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+      "license": "0BSD"
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/safe-stable-stringify": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
+      "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "license": "MIT"
+    },
+    "node_modules/semver": {
+      "version": "7.7.2",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+      "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+      "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+      "license": "MIT",
+      "dependencies": {
+        "shebang-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+      "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.7",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+      "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+      "license": "ISC"
+    },
+    "node_modules/simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+      "license": "MIT",
+      "dependencies": {
+        "is-arrayish": "^0.3.1"
+      }
+    },
+    "node_modules/simple-swizzle/node_modules/is-arrayish": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+      "license": "MIT"
+    },
+    "node_modules/slice-ansi": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+      "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^3.2.0",
+        "astral-regex": "^1.0.0",
+        "is-fullwidth-code-point": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/slice-ansi/node_modules/ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/slice-ansi/node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/slice-ansi/node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+      "license": "MIT"
+    },
+    "node_modules/smart-buffer": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
+      "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6.0.0",
+        "npm": ">= 3.0.0"
+      }
+    },
+    "node_modules/socks": {
+      "version": "2.8.6",
+      "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.6.tgz",
+      "integrity": "sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA==",
+      "license": "MIT",
+      "dependencies": {
+        "ip-address": "^9.0.5",
+        "smart-buffer": "^4.2.0"
+      },
+      "engines": {
+        "node": ">= 10.0.0",
+        "npm": ">= 3.0.0"
+      }
+    },
+    "node_modules/socks-proxy-agent": {
+      "version": "8.0.5",
+      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
+      "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
+      "license": "MIT",
+      "dependencies": {
+        "agent-base": "^7.1.2",
+        "debug": "^4.3.4",
+        "socks": "^2.8.3"
+      },
+      "engines": {
+        "node": ">= 14"
+      }
+    },
+    "node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+      "license": "BSD-3-Clause",
+      "optional": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
+      "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==",
+      "license": "BSD-3-Clause"
+    },
+    "node_modules/stack-trace": {
+      "version": "0.0.10",
+      "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+      "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/streamx": {
+      "version": "2.22.1",
+      "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz",
+      "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==",
+      "license": "MIT",
+      "dependencies": {
+        "fast-fifo": "^1.3.2",
+        "text-decoder": "^1.1.0"
+      },
+      "optionalDependencies": {
+        "bare-events": "^2.2.0"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "~5.2.0"
+      }
+    },
+    "node_modules/string-width": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/string-width/node_modules/ansi-regex": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+      "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/string-width/node_modules/strip-ansi": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+      "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-regex": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+      "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+      "license": "MIT",
+      "dependencies": {
+        "has-flag": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/table": {
+      "version": "5.4.6",
+      "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
+      "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "ajv": "^6.10.2",
+        "lodash": "^4.17.14",
+        "slice-ansi": "^2.1.0",
+        "string-width": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/tabtab": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/tabtab/-/tabtab-3.0.2.tgz",
+      "integrity": "sha512-jANKmUe0sIQc/zTALTBy186PoM/k6aPrh3A7p6AaAfF6WPSbTx1JYeGIGH162btpH+mmVEXln+UxwViZHO2Jhg==",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "^4.0.1",
+        "es6-promisify": "^6.0.0",
+        "inquirer": "^6.0.0",
+        "minimist": "^1.2.0",
+        "mkdirp": "^0.5.1",
+        "untildify": "^3.0.3"
+      }
+    },
+    "node_modules/tar-fs": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.0.tgz",
+      "integrity": "sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w==",
+      "license": "MIT",
+      "dependencies": {
+        "pump": "^3.0.0",
+        "tar-stream": "^3.1.5"
+      },
+      "optionalDependencies": {
+        "bare-fs": "^4.0.1",
+        "bare-path": "^3.0.0"
+      }
+    },
+    "node_modules/tar-stream": {
+      "version": "3.1.7",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+      "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
+      "license": "MIT",
+      "dependencies": {
+        "b4a": "^1.6.4",
+        "fast-fifo": "^1.2.0",
+        "streamx": "^2.15.0"
+      }
+    },
+    "node_modules/text-decoder": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
+      "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "b4a": "^1.6.4"
+      }
+    },
+    "node_modules/text-hex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
+      "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
+      "license": "MIT"
+    },
+    "node_modules/text-table": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+      "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+      "license": "MIT"
+    },
+    "node_modules/through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+      "license": "MIT"
+    },
+    "node_modules/tmp": {
+      "version": "0.0.33",
+      "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+      "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+      "license": "MIT",
+      "dependencies": {
+        "os-tmpdir": "~1.0.2"
+      },
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "license": "MIT",
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/triple-beam": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz",
+      "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 14.0.0"
+      }
+    },
+    "node_modules/tslib": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+      "license": "0BSD"
+    },
+    "node_modules/type-check": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+      "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+      "license": "MIT",
+      "dependencies": {
+        "prelude-ls": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/type-fest": {
+      "version": "0.20.2",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+      "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+      "license": "(MIT OR CC0-1.0)",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/typescript": {
+      "version": "5.8.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+      "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
+      "license": "Apache-2.0",
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=14.17"
+      }
+    },
+    "node_modules/unbzip2-stream": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+      "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+      "license": "MIT",
+      "dependencies": {
+        "buffer": "^5.2.1",
+        "through": "^2.3.8"
+      }
+    },
+    "node_modules/untildify": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz",
+      "integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/uri-js": {
+      "version": "4.4.1",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+      "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+      "license": "BSD-2-Clause",
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/urlpattern-polyfill": {
+      "version": "10.0.0",
+      "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz",
+      "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==",
+      "license": "MIT"
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
+      "license": "MIT"
+    },
+    "node_modules/which": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+      "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+      "license": "ISC",
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "node-which": "bin/node-which"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/winston": {
+      "version": "3.17.0",
+      "resolved": "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz",
+      "integrity": "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==",
+      "license": "MIT",
+      "dependencies": {
+        "@colors/colors": "^1.6.0",
+        "@dabh/diagnostics": "^2.0.2",
+        "async": "^3.2.3",
+        "is-stream": "^2.0.0",
+        "logform": "^2.7.0",
+        "one-time": "^1.0.0",
+        "readable-stream": "^3.4.0",
+        "safe-stable-stringify": "^2.3.1",
+        "stack-trace": "0.0.x",
+        "triple-beam": "^1.3.0",
+        "winston-transport": "^4.9.0"
+      },
+      "engines": {
+        "node": ">= 12.0.0"
+      }
+    },
+    "node_modules/winston-transport": {
+      "version": "4.9.0",
+      "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz",
+      "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==",
+      "license": "MIT",
+      "dependencies": {
+        "logform": "^2.7.0",
+        "readable-stream": "^3.6.2",
+        "triple-beam": "^1.3.0"
+      },
+      "engines": {
+        "node": ">= 12.0.0"
+      }
+    },
+    "node_modules/word-wrap": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+      "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+      "license": "MIT",
+      "dependencies": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "license": "MIT"
+    },
+    "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrap-ansi/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+      "license": "ISC"
+    },
+    "node_modules/ws": {
+      "version": "8.18.3",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
+      "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/y18n": {
+      "version": "5.0.8",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+      "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/yargs": {
+      "version": "17.7.2",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+      "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+      "license": "MIT",
+      "dependencies": {
+        "cliui": "^8.0.1",
+        "escalade": "^3.1.1",
+        "get-caller-file": "^2.0.5",
+        "require-directory": "^2.1.1",
+        "string-width": "^4.2.3",
+        "y18n": "^5.0.5",
+        "yargs-parser": "^21.1.1"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "21.1.1",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+      "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/yargs/node_modules/emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+      "license": "MIT"
+    },
+    "node_modules/yargs/node_modules/is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yargs/node_modules/string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "license": "MIT",
+      "dependencies": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/yauzl": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+      "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+      "license": "MIT",
+      "dependencies": {
+        "buffer-crc32": "~0.2.3",
+        "fd-slicer": "~1.1.0"
+      }
+    },
+    "node_modules/yocto-queue": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+      "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/zod": {
+      "version": "3.23.8",
+      "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
+      "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/colinhacks"
+      }
+    }
+  }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 00000000000..945f9a3ee87
--- /dev/null
+++ b/package.json
@@ -0,0 +1,9 @@
+{
+  "dependencies": {
+    "browser-ui-test": "^0.21.1",
+    "es-check": "^6.2.1",
+    "eslint": "^8.57.1",
+    "eslint-js": "github:eslint/js",
+    "typescript": "^5.8.3"
+  }
+}
diff --git a/rust-bors.toml b/rust-bors.toml
index fbfaa980f05..56f48512b06 100644
--- a/rust-bors.toml
+++ b/rust-bors.toml
@@ -1,2 +1,19 @@
 # 6 hours timeout for CI builds
 timeout = 21600
+
+# Do not allow approving PRs with certain labels
+labels_blocking_approval = [
+    # Waiting for an FCP to finish
+    "final-comment-period",
+    "proposed-final-comment-period",
+    # PRs that were closed or postponed by an FCP
+    "disposition-close",
+    "disposition-postpone",
+    # Waiting for library ACP
+    "S-waiting-on-ACP",
+    "S-waiting-on-concerns",
+    "S-waiting-on-crater",
+    "S-waiting-on-fcp",
+    "S-waiting-on-MCP",
+    "S-waiting-on-team"
+]
diff --git a/rustfmt.toml b/rustfmt.toml
index 689e390b990..6172a2bb3bf 100644
--- a/rustfmt.toml
+++ b/rustfmt.toml
@@ -14,7 +14,7 @@ ignore = [
     "/vendor/",
 
     # Some tests are not formatted, for various reasons.
-    "/tests/codegen/simd-intrinsic/", # Many types like `u8x64` are better hand-formatted.
+    "/tests/codegen-llvm/simd-intrinsic/", # Many types like `u8x64` are better hand-formatted.
     "/tests/crashes/",                # Many of these tests contain syntax errors.
     "/tests/debuginfo/",              # These tests are somewhat sensitive to source code layout.
     "/tests/incremental/",            # These tests are somewhat sensitive to source code layout.
@@ -58,5 +58,5 @@ ignore = [
 
     # Rustfmt doesn't support use closures yet
     "tests/mir-opt/ergonomic-clones/closure.rs",
-    "tests/codegen/ergonomic-clones/closure.rs",
+    "tests/codegen-llvm/ergonomic-clones/closure.rs",
 ]
diff --git a/src/bootstrap/src/core/build_steps/check.rs b/src/bootstrap/src/core/build_steps/check.rs
index f0acb7f7141..cfe090b22dc 100644
--- a/src/bootstrap/src/core/build_steps/check.rs
+++ b/src/bootstrap/src/core/build_steps/check.rs
@@ -370,132 +370,18 @@ impl Step for CodegenBackend {
     }
 }
 
-/// Checks Rust analyzer that links to .rmetas from a checked rustc.
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct RustAnalyzer {
-    pub build_compiler: Compiler,
-    pub target: TargetSelection,
-}
-
-impl Step for RustAnalyzer {
-    type Output = ();
-    const ONLY_HOSTS: bool = true;
-    const DEFAULT: bool = true;
-
-    fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
-        let builder = run.builder;
-        run.path("src/tools/rust-analyzer").default_condition(
-            builder
-                .config
-                .tools
-                .as_ref()
-                .is_none_or(|tools| tools.iter().any(|tool| tool == "rust-analyzer")),
-        )
-    }
-
-    fn make_run(run: RunConfig<'_>) {
-        let build_compiler = prepare_compiler_for_check(run.builder, run.target, Mode::ToolRustc);
-        run.builder.ensure(RustAnalyzer { build_compiler, target: run.target });
-    }
-
-    fn run(self, builder: &Builder<'_>) {
-        let build_compiler = self.build_compiler;
-        let target = self.target;
-
-        let mut cargo = prepare_tool_cargo(
-            builder,
-            build_compiler,
-            Mode::ToolRustc,
-            target,
-            builder.kind,
-            "src/tools/rust-analyzer",
-            SourceType::InTree,
-            &["in-rust-tree".to_owned()],
-        );
-
-        cargo.allow_features(crate::core::build_steps::tool::RustAnalyzer::ALLOW_FEATURES);
-
-        cargo.arg("--bins");
-        cargo.arg("--tests");
-        cargo.arg("--benches");
-
-        // Cargo's output path in a given stage, compiled by a particular
-        // compiler for the specified target.
-        let stamp = BuildStamp::new(&builder.cargo_out(build_compiler, Mode::ToolRustc, target))
-            .with_prefix("rust-analyzer-check");
-
-        let _guard = builder.msg_check("rust-analyzer artifacts", target, None);
-        run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], true, false);
-    }
-
-    fn metadata(&self) -> Option<StepMetadata> {
-        Some(StepMetadata::check("rust-analyzer", self.target).built_by(self.build_compiler))
-    }
-}
-
-/// Compiletest is implicitly "checked" when it gets built in order to run tests,
-/// so this is mainly for people working on compiletest to run locally.
-#[derive(Debug, Clone, PartialEq, Eq, Hash)]
-pub struct Compiletest {
-    pub target: TargetSelection,
-}
-
-impl Step for Compiletest {
-    type Output = ();
-    const ONLY_HOSTS: bool = true;
-    const DEFAULT: bool = false;
-
-    fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
-        run.path("src/tools/compiletest")
-    }
-
-    fn make_run(run: RunConfig<'_>) {
-        run.builder.ensure(Compiletest { target: run.target });
-    }
-
-    fn run(self, builder: &Builder<'_>) {
-        let mode = if builder.config.compiletest_use_stage0_libtest {
-            Mode::ToolBootstrap
-        } else {
-            Mode::ToolStd
-        };
-        let build_compiler = prepare_compiler_for_check(builder, self.target, mode);
-
-        let mut cargo = prepare_tool_cargo(
-            builder,
-            build_compiler,
-            mode,
-            self.target,
-            builder.kind,
-            "src/tools/compiletest",
-            SourceType::InTree,
-            &[],
-        );
-
-        cargo.allow_features(COMPILETEST_ALLOW_FEATURES);
-
-        cargo.arg("--all-targets");
-
-        let stamp = BuildStamp::new(&builder.cargo_out(build_compiler, mode, self.target))
-            .with_prefix("compiletest-check");
-
-        let _guard = builder.msg_check("compiletest artifacts", self.target, None);
-        run_cargo(builder, cargo, builder.config.free_args.clone(), &stamp, vec![], true, false);
-    }
-
-    fn metadata(&self) -> Option<StepMetadata> {
-        Some(StepMetadata::check("compiletest", self.target))
-    }
-}
-
 macro_rules! tool_check_step {
     (
         $name:ident {
             // The part of this path after the final '/' is also used as a display name.
             path: $path:literal
             $(, alt_path: $alt_path:literal )*
-            , mode: $mode:path
+            // Closure that returns `Mode` based on the passed `&Builder<'_>`
+            , mode: $mode:expr
+            // Subset of nightly features that are allowed to be used when checking
             $(, allow_features: $allow_features:expr )?
+            // Features that should be enabled when checking
+            $(, enable_features: [$($enable_features:expr),*] )?
             $(, default: $default:literal )?
             $( , )?
         }
@@ -518,10 +404,13 @@ macro_rules! tool_check_step {
 
             fn make_run(run: RunConfig<'_>) {
                 let target = run.target;
-                let build_compiler = prepare_compiler_for_check(run.builder, target, $mode);
+                let builder = run.builder;
+                let mode = $mode(builder);
+
+                let build_compiler = prepare_compiler_for_check(run.builder, target, mode);
 
                 // It doesn't make sense to cross-check bootstrap tools
-                if $mode == Mode::ToolBootstrap && target != run.builder.host_target {
+                if mode == Mode::ToolBootstrap && target != run.builder.host_target {
                     println!("WARNING: not checking bootstrap tool {} for target {target} as it is a bootstrap (host-only) tool", stringify!($path));
                     return;
                 };
@@ -536,7 +425,9 @@ macro_rules! tool_check_step {
                     $( _value = $allow_features; )?
                     _value
                 };
-                run_tool_check_step(builder, build_compiler, target, $path, $mode, allow_features);
+                let extra_features: &[&str] = &[$($($enable_features),*)?];
+                let mode = $mode(builder);
+                run_tool_check_step(builder, build_compiler, target, $path, mode, allow_features, extra_features);
             }
 
             fn metadata(&self) -> Option<StepMetadata> {
@@ -554,9 +445,11 @@ fn run_tool_check_step(
     path: &str,
     mode: Mode,
     allow_features: &str,
+    extra_features: &[&str],
 ) {
     let display_name = path.rsplit('/').next().unwrap();
 
+    let extra_features = extra_features.iter().map(|f| f.to_string()).collect::<Vec<String>>();
     let mut cargo = prepare_tool_cargo(
         builder,
         build_compiler,
@@ -569,12 +462,19 @@ fn run_tool_check_step(
         // steps should probably be marked non-default so that the default
         // checks aren't affected by toolstate being broken.
         SourceType::InTree,
-        &[],
+        &extra_features,
     );
     cargo.allow_features(allow_features);
 
-    // FIXME: check bootstrap doesn't currently work with --all-targets
-    cargo.arg("--all-targets");
+    // FIXME: check bootstrap doesn't currently work when multiple targets are checked
+    // FIXME: rust-analyzer does not work with --all-targets
+    if display_name == "rust-analyzer" {
+        cargo.arg("--bins");
+        cargo.arg("--tests");
+        cargo.arg("--benches");
+    } else {
+        cargo.arg("--all-targets");
+    }
 
     let stamp = BuildStamp::new(&builder.cargo_out(build_compiler, mode, target))
         .with_prefix(&format!("{display_name}-check"));
@@ -593,43 +493,66 @@ fn run_tool_check_step(
 tool_check_step!(Rustdoc {
     path: "src/tools/rustdoc",
     alt_path: "src/librustdoc",
-    mode: Mode::ToolRustc
+    mode: |_builder| Mode::ToolRustc
 });
 // Clippy, miri and Rustfmt are hybrids. They are external tools, but use a git subtree instead
 // of a submodule. Since the SourceType only drives the deny-warnings
 // behavior, treat it as in-tree so that any new warnings in clippy will be
 // rejected.
-tool_check_step!(Clippy { path: "src/tools/clippy", mode: Mode::ToolRustc });
-tool_check_step!(Miri { path: "src/tools/miri", mode: Mode::ToolRustc });
-tool_check_step!(CargoMiri { path: "src/tools/miri/cargo-miri", mode: Mode::ToolRustc });
-tool_check_step!(Rustfmt { path: "src/tools/rustfmt", mode: Mode::ToolRustc });
+tool_check_step!(Clippy { path: "src/tools/clippy", mode: |_builder| Mode::ToolRustc });
+tool_check_step!(Miri { path: "src/tools/miri", mode: |_builder| Mode::ToolRustc });
+tool_check_step!(CargoMiri { path: "src/tools/miri/cargo-miri", mode: |_builder| Mode::ToolRustc });
+tool_check_step!(Rustfmt { path: "src/tools/rustfmt", mode: |_builder| Mode::ToolRustc });
+tool_check_step!(RustAnalyzer {
+    path: "src/tools/rust-analyzer",
+    mode: |_builder| Mode::ToolRustc,
+    allow_features: tool::RustAnalyzer::ALLOW_FEATURES,
+    enable_features: ["in-rust-tree"],
+});
 tool_check_step!(MiroptTestTools {
     path: "src/tools/miropt-test-tools",
-    mode: Mode::ToolBootstrap
+    mode: |_builder| Mode::ToolBootstrap
 });
 // We want to test the local std
 tool_check_step!(TestFloatParse {
     path: "src/tools/test-float-parse",
-    mode: Mode::ToolStd,
+    mode: |_builder| Mode::ToolStd,
     allow_features: tool::TestFloatParse::ALLOW_FEATURES
 });
 tool_check_step!(FeaturesStatusDump {
     path: "src/tools/features-status-dump",
-    mode: Mode::ToolBootstrap
+    mode: |_builder| Mode::ToolBootstrap
 });
 
-tool_check_step!(Bootstrap { path: "src/bootstrap", mode: Mode::ToolBootstrap, default: false });
+tool_check_step!(Bootstrap {
+    path: "src/bootstrap",
+    mode: |_builder| Mode::ToolBootstrap,
+    default: false
+});
 
 // `run-make-support` will be built as part of suitable run-make compiletest test steps, but support
 // check to make it easier to work on.
 tool_check_step!(RunMakeSupport {
     path: "src/tools/run-make-support",
-    mode: Mode::ToolBootstrap,
+    mode: |_builder| Mode::ToolBootstrap,
     default: false
 });
 
 tool_check_step!(CoverageDump {
     path: "src/tools/coverage-dump",
-    mode: Mode::ToolBootstrap,
+    mode: |_builder| Mode::ToolBootstrap,
     default: false
 });
+
+// Compiletest is implicitly "checked" when it gets built in order to run tests,
+// so this is mainly for people working on compiletest to run locally.
+tool_check_step!(Compiletest {
+    path: "src/tools/compiletest",
+    mode: |builder: &Builder<'_>| if builder.config.compiletest_use_stage0_libtest {
+        Mode::ToolBootstrap
+    } else {
+        Mode::ToolStd
+    },
+    allow_features: COMPILETEST_ALLOW_FEATURES,
+    default: false,
+});
diff --git a/src/bootstrap/src/core/build_steps/dist.rs b/src/bootstrap/src/core/build_steps/dist.rs
index 39e4fb2ac01..c8a54ad250c 100644
--- a/src/bootstrap/src/core/build_steps/dist.rs
+++ b/src/bootstrap/src/core/build_steps/dist.rs
@@ -1068,6 +1068,8 @@ impl Step for PlainSourceTarball {
             "bootstrap.example.toml",
             "configure",
             "license-metadata.json",
+            "package-lock.json",
+            "package.json",
             "x",
             "x.ps1",
             "x.py",
diff --git a/src/bootstrap/src/core/build_steps/test.rs b/src/bootstrap/src/core/build_steps/test.rs
index 7652ea1a488..d346062761c 100644
--- a/src/bootstrap/src/core/build_steps/test.rs
+++ b/src/bootstrap/src/core/build_steps/test.rs
@@ -739,7 +739,6 @@ impl Step for CompiletestTest {
 
 #[derive(Debug, Clone, PartialEq, Eq, Hash)]
 pub struct Clippy {
-    stage: u32,
     host: TargetSelection,
 }
 
@@ -753,33 +752,23 @@ impl Step for Clippy {
     }
 
     fn make_run(run: RunConfig<'_>) {
-        // If stage is explicitly set or not lower than 2, keep it. Otherwise, make sure it's at least 2
-        // as tests for this step don't work with a lower stage.
-        let stage = if run.builder.config.is_explicit_stage() || run.builder.top_stage >= 2 {
-            run.builder.top_stage
-        } else {
-            2
-        };
-
-        run.builder.ensure(Clippy { stage, host: run.target });
+        run.builder.ensure(Clippy { host: run.target });
     }
 
     /// Runs `cargo test` for clippy.
     fn run(self, builder: &Builder<'_>) {
-        let stage = self.stage;
+        let stage = builder.top_stage;
         let host = self.host;
-        let compiler = builder.compiler(stage, host);
-
-        if stage < 2 {
-            eprintln!("WARNING: clippy tests on stage {stage} may not behave well.");
-            eprintln!("HELP: consider using stage 2");
-        }
+        // We need to carefully distinguish the compiler that builds clippy, and the compiler
+        // that is linked into the clippy being tested. `target_compiler` is the latter,
+        // and it must also be used by clippy's test runner to build tests and their dependencies.
+        let target_compiler = builder.compiler(stage, host);
 
-        let tool_result = builder.ensure(tool::Clippy { compiler, target: self.host });
-        let compiler = tool_result.build_compiler;
+        let tool_result = builder.ensure(tool::Clippy { compiler: target_compiler, target: host });
+        let tool_compiler = tool_result.build_compiler;
         let mut cargo = tool::prepare_tool_cargo(
             builder,
-            compiler,
+            tool_compiler,
             Mode::ToolRustc,
             host,
             Kind::Test,
@@ -788,11 +777,17 @@ impl Step for Clippy {
             &[],
         );
 
-        cargo.env("RUSTC_TEST_SUITE", builder.rustc(compiler));
-        cargo.env("RUSTC_LIB_PATH", builder.rustc_libdir(compiler));
-        let host_libs = builder.stage_out(compiler, Mode::ToolRustc).join(builder.cargo_dir());
+        cargo.env("RUSTC_TEST_SUITE", builder.rustc(tool_compiler));
+        cargo.env("RUSTC_LIB_PATH", builder.rustc_libdir(tool_compiler));
+        let host_libs = builder.stage_out(tool_compiler, Mode::ToolRustc).join(builder.cargo_dir());
         cargo.env("HOST_LIBS", host_libs);
 
+        // Build the standard library that the tests can use.
+        builder.std(target_compiler, host);
+        cargo.env("TEST_SYSROOT", builder.sysroot(target_compiler));
+        cargo.env("TEST_RUSTC", builder.rustc(target_compiler));
+        cargo.env("TEST_RUSTC_LIB", builder.rustc_libdir(target_compiler));
+
         // Collect paths of tests to run
         'partially_test: {
             let paths = &builder.config.paths[..];
@@ -813,7 +808,8 @@ impl Step for Clippy {
         cargo.add_rustc_lib_path(builder);
         let cargo = prepare_cargo_test(cargo, &[], &[], host, builder);
 
-        let _guard = builder.msg_sysroot_tool(Kind::Test, compiler.stage, "clippy", host, host);
+        let _guard =
+            builder.msg_sysroot_tool(Kind::Test, tool_compiler.stage, "clippy", host, host);
 
         // Clippy reports errors if it blessed the outputs
         if cargo.allow_failure().run(builder) {
@@ -1346,7 +1342,12 @@ test!(Ui { path: "tests/ui", mode: "ui", suite: "ui", default: true });
 
 test!(Crashes { path: "tests/crashes", mode: "crashes", suite: "crashes", default: true });
 
-test!(Codegen { path: "tests/codegen", mode: "codegen", suite: "codegen", default: true });
+test!(CodegenLlvm {
+    path: "tests/codegen-llvm",
+    mode: "codegen",
+    suite: "codegen-llvm",
+    default: true
+});
 
 test!(CodegenUnits {
     path: "tests/codegen-units",
@@ -1411,7 +1412,12 @@ test!(Pretty {
 
 test!(RunMake { path: "tests/run-make", mode: "run-make", suite: "run-make", default: true });
 
-test!(Assembly { path: "tests/assembly", mode: "assembly", suite: "assembly", default: true });
+test!(AssemblyLlvm {
+    path: "tests/assembly-llvm",
+    mode: "assembly",
+    suite: "assembly-llvm",
+    default: true
+});
 
 /// Runs the coverage test suite at `tests/coverage` in some or all of the
 /// coverage test modes.
@@ -1619,7 +1625,7 @@ NOTE: if you're sure you want to do this, please open an issue as to why. In the
         let suite_path = self.path;
 
         // Skip codegen tests if they aren't enabled in configuration.
-        if !builder.config.codegen_tests && suite == "codegen" {
+        if !builder.config.codegen_tests && mode == "codegen" {
             return;
         }
 
@@ -1816,7 +1822,7 @@ NOTE: if you're sure you want to do this, please open an issue as to why. In the
         let mut flags = if is_rustdoc { Vec::new() } else { vec!["-Crpath".to_string()] };
         flags.push(format!(
             "-Cdebuginfo={}",
-            if suite == "codegen" {
+            if mode == "codegen" {
                 // codegen tests typically check LLVM IR and are sensitive to additional debuginfo.
                 // So do not apply `rust.debuginfo-level-tests` for codegen tests.
                 if builder.config.rust_debuginfo_level_tests
diff --git a/src/bootstrap/src/core/builder/mod.rs b/src/bootstrap/src/core/builder/mod.rs
index d73e2bce25b..923c3a9a935 100644
--- a/src/bootstrap/src/core/builder/mod.rs
+++ b/src/bootstrap/src/core/builder/mod.rs
@@ -411,8 +411,8 @@ const PATH_REMAP: &[(&str, &[&str])] = &[
         "tests",
         &[
             // tidy-alphabetical-start
-            "tests/assembly",
-            "tests/codegen",
+            "tests/assembly-llvm",
+            "tests/codegen-llvm",
             "tests/codegen-units",
             "tests/coverage",
             "tests/coverage-run-rustdoc",
@@ -1049,9 +1049,9 @@ impl<'a> Builder<'a> {
                 test::Crashes,
                 test::Coverage,
                 test::MirOpt,
-                test::Codegen,
+                test::CodegenLlvm,
                 test::CodegenUnits,
-                test::Assembly,
+                test::AssemblyLlvm,
                 test::Incremental,
                 test::Debuginfo,
                 test::UiFullDeps,
diff --git a/src/bootstrap/src/core/builder/tests.rs b/src/bootstrap/src/core/builder/tests.rs
index e60a115b19d..6ea5d4e6553 100644
--- a/src/bootstrap/src/core/builder/tests.rs
+++ b/src/bootstrap/src/core/builder/tests.rs
@@ -642,6 +642,7 @@ mod snapshot {
     };
     use crate::core::builder::{Builder, Kind, StepDescription, StepMetadata};
     use crate::core::config::TargetSelection;
+    use crate::core::config::toml::rust::with_lld_opt_in_targets;
     use crate::utils::cache::Cache;
     use crate::utils::helpers::get_host_target;
     use crate::utils::tests::{ConfigBuilder, TestCtx};
@@ -998,7 +999,7 @@ mod snapshot {
         [build] llvm <host>
         [build] rustc 0 <host> -> rustc 1 <host>
         [build] rustdoc 0 <host>
-        [doc] std 1 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,sysroot,test,unwind]
+        [doc] std 1 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,std_detect,sysroot,test,unwind]
         ");
     }
 
@@ -1047,7 +1048,7 @@ mod snapshot {
         [build] rustc 1 <host> -> std 1 <host>
         [build] rustc 1 <host> -> rustc 2 <host>
         [build] rustdoc 1 <host>
-        [doc] std 2 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,sysroot,test,unwind]
+        [doc] std 2 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,std_detect,sysroot,test,unwind]
         [build] rustc 2 <host> -> std 2 <host>
         [build] rustc 0 <host> -> LintDocs 1 <host>
         [build] rustc 0 <host> -> RustInstaller 1 <host>
@@ -1089,7 +1090,7 @@ mod snapshot {
         [build] rustc 1 <host> -> WasmComponentLd 2 <host>
         [build] rustc 1 <host> -> LlvmBitcodeLinker 2 <host>
         [build] rustdoc 1 <host>
-        [doc] std 2 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,sysroot,test,unwind]
+        [doc] std 2 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,std_detect,sysroot,test,unwind]
         [build] rustc 2 <host> -> std 2 <host>
         [build] rustc 0 <host> -> LintDocs 1 <host>
         [build] rustc 0 <host> -> RustInstaller 1 <host>
@@ -1125,8 +1126,8 @@ mod snapshot {
         [build] rustc 1 <host> -> std 1 <host>
         [build] rustc 1 <host> -> rustc 2 <host>
         [build] rustdoc 1 <host>
-        [doc] std 2 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,sysroot,test,unwind]
-        [doc] std 2 <target1> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,sysroot,test,unwind]
+        [doc] std 2 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,std_detect,sysroot,test,unwind]
+        [doc] std 2 <target1> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,std_detect,sysroot,test,unwind]
         [build] rustc 2 <host> -> std 2 <host>
         [build] rustc 0 <host> -> LintDocs 1 <host>
         [build] rustc 0 <host> -> RustInstaller 1 <host>
@@ -1162,7 +1163,7 @@ mod snapshot {
         [build] rustc 1 <host> -> std 1 <host>
         [build] rustc 1 <host> -> rustc 2 <host>
         [build] rustdoc 1 <host>
-        [doc] std 2 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,sysroot,test,unwind]
+        [doc] std 2 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,std_detect,sysroot,test,unwind]
         [build] rustc 2 <host> -> std 2 <host>
         [build] rustc 0 <host> -> LintDocs 1 <host>
         [build] rustc 1 <host> -> std 1 <target1>
@@ -1199,8 +1200,8 @@ mod snapshot {
         [build] rustc 1 <host> -> std 1 <host>
         [build] rustc 1 <host> -> rustc 2 <host>
         [build] rustdoc 1 <host>
-        [doc] std 2 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,sysroot,test,unwind]
-        [doc] std 2 <target1> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,sysroot,test,unwind]
+        [doc] std 2 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,std_detect,sysroot,test,unwind]
+        [doc] std 2 <target1> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,std_detect,sysroot,test,unwind]
         [build] rustc 2 <host> -> std 2 <host>
         [build] rustc 0 <host> -> LintDocs 1 <host>
         [build] rustc 1 <host> -> std 1 <target1>
@@ -1241,7 +1242,7 @@ mod snapshot {
         [build] rustc 1 <host> -> std 1 <host>
         [build] rustc 1 <host> -> rustc 2 <host>
         [build] rustdoc 1 <host>
-        [doc] std 2 <target1> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,sysroot,test,unwind]
+        [doc] std 2 <target1> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,std_detect,sysroot,test,unwind]
         [build] rustc 2 <host> -> std 2 <host>
         [build] rustc 0 <host> -> RustInstaller 1 <host>
         [dist] docs <target1>
@@ -1273,7 +1274,7 @@ mod snapshot {
         [build] rustc 1 <host> -> rustc 2 <host>
         [build] rustc 1 <host> -> WasmComponentLd 2 <host>
         [build] rustdoc 1 <host>
-        [doc] std 2 <target1> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,sysroot,test,unwind]
+        [doc] std 2 <target1> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,std_detect,sysroot,test,unwind]
         [build] rustc 2 <host> -> std 2 <host>
         [build] rustc 1 <host> -> std 1 <target1>
         [build] rustc 2 <host> -> std 2 <target1>
@@ -1382,7 +1383,7 @@ mod snapshot {
         [check] rustc 1 <host> -> Miri 2 <target1>
         [check] rustc 1 <host> -> CargoMiri 2 <target1>
         [check] rustc 1 <host> -> Rustfmt 2 <target1>
-        [check] rustc 1 <host> -> rust-analyzer 2 <target1>
+        [check] rustc 1 <host> -> RustAnalyzer 2 <target1>
         [check] rustc 1 <host> -> TestFloatParse 2 <target1>
         [check] rustc 1 <host> -> std 1 <target1>
         ");
@@ -1530,7 +1531,7 @@ mod snapshot {
         insta::assert_snapshot!(
             ctx.config("check")
                 .path("compiletest")
-                .render_steps(), @"[check] compiletest <host>");
+                .render_steps(), @"[check] rustc 0 <host> -> Compiletest 1 <host>");
     }
 
     #[test]
@@ -1544,7 +1545,7 @@ mod snapshot {
         [build] llvm <host>
         [build] rustc 0 <host> -> rustc 1 <host>
         [build] rustc 1 <host> -> std 1 <host>
-        [check] compiletest <host>
+        [check] rustc 1 <host> -> Compiletest 2 <host>
         ");
     }
 
@@ -1569,7 +1570,7 @@ mod snapshot {
                 .path("rust-analyzer")
                 .render_steps(), @r"
         [check] rustc 0 <host> -> rustc 1 <host>
-        [check] rustc 0 <host> -> rust-analyzer 1 <host>
+        [check] rustc 0 <host> -> RustAnalyzer 1 <host>
         ");
     }
 
@@ -1619,7 +1620,7 @@ mod snapshot {
         [build] llvm <host>
         [build] rustc 0 <host> -> rustc 1 <host>
         [build] rustdoc 0 <host>
-        [doc] std 1 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,sysroot,test,unwind]
+        [doc] std 1 <host> crates=[alloc,compiler_builtins,core,panic_abort,panic_unwind,proc_macro,std,std_detect,sysroot,test,unwind]
         ");
     }
 
@@ -1653,6 +1654,21 @@ mod snapshot {
     }
 
     #[test]
+    fn test_lld_opt_in() {
+        with_lld_opt_in_targets(vec![host_target()], || {
+            let ctx = TestCtx::new();
+            insta::assert_snapshot!(
+                ctx.config("build")
+                    .path("compiler")
+                    .render_steps(), @r"
+            [build] llvm <host>
+            [build] rustc 0 <host> -> rustc 1 <host>
+            [build] rustc 0 <host> -> LldWrapper 1 <host>
+            ");
+        });
+    }
+
+    #[test]
     fn doc_library_no_std_target() {
         let ctx = TestCtx::new();
         insta::assert_snapshot!(
diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs
index 22a75183404..6e04f115424 100644
--- a/src/bootstrap/src/core/config/config.rs
+++ b/src/bootstrap/src/core/config/config.rs
@@ -942,6 +942,7 @@ impl Config {
         config.rust_profile_use = flags_rust_profile_use;
         config.rust_profile_generate = flags_rust_profile_generate;
 
+        config.apply_target_config(toml.target);
         config.apply_rust_config(toml.rust, flags_warnings);
 
         config.reproducible_artifacts = flags_reproducible_artifact;
@@ -967,8 +968,6 @@ impl Config {
 
         config.apply_gcc_config(toml.gcc);
 
-        config.apply_target_config(toml.target);
-
         match ccache {
             Some(StringOrBool::String(ref s)) => config.ccache = Some(s.to_string()),
             Some(StringOrBool::Bool(true)) => {
diff --git a/src/bootstrap/src/core/config/flags.rs b/src/bootstrap/src/core/config/flags.rs
index 1547ca44494..31a427f9ffa 100644
--- a/src/bootstrap/src/core/config/flags.rs
+++ b/src/bootstrap/src/core/config/flags.rs
@@ -386,7 +386,7 @@ pub enum Subcommand {
         bless: bool,
         #[arg(long)]
         /// comma-separated list of other files types to check (accepts py, py:lint,
-        /// py:fmt, shell, shell:lint, cpp, cpp:fmt, spellcheck)
+        /// py:fmt, shell, cpp, cpp:fmt, js, js:lint, js:typecheck, spellcheck)
         ///
         /// Any argument can be prefixed with "auto:" to only run if
         /// relevant files are modified (eg. "auto:py").
diff --git a/src/bootstrap/src/core/config/toml/rust.rs b/src/bootstrap/src/core/config/toml/rust.rs
index 71fab0e6ae6..c136bd4a6f9 100644
--- a/src/bootstrap/src/core/config/toml/rust.rs
+++ b/src/bootstrap/src/core/config/toml/rust.rs
@@ -410,6 +410,31 @@ pub(crate) fn validate_codegen_backends(backends: Vec<String>, section: &str) ->
     backends
 }
 
+#[cfg(not(test))]
+fn default_lld_opt_in_targets() -> Vec<String> {
+    vec!["x86_64-unknown-linux-gnu".to_string()]
+}
+
+#[cfg(test)]
+thread_local! {
+    static TEST_LLD_OPT_IN_TARGETS: std::cell::RefCell<Option<Vec<String>>> = std::cell::RefCell::new(None);
+}
+
+#[cfg(test)]
+fn default_lld_opt_in_targets() -> Vec<String> {
+    TEST_LLD_OPT_IN_TARGETS.with(|cell| cell.borrow().clone()).unwrap_or_default()
+}
+
+#[cfg(test)]
+pub fn with_lld_opt_in_targets<R>(targets: Vec<String>, f: impl FnOnce() -> R) -> R {
+    TEST_LLD_OPT_IN_TARGETS.with(|cell| {
+        let prev = cell.replace(Some(targets));
+        let result = f();
+        cell.replace(prev);
+        result
+    })
+}
+
 impl Config {
     pub fn apply_rust_config(&mut self, toml_rust: Option<Rust>, warnings: Warnings) {
         let mut debug = None;
@@ -617,12 +642,13 @@ impl Config {
         //   thus, disabled
         // - similarly, lld will not be built nor used by default when explicitly asked not to, e.g.
         //   when the config sets `rust.lld = false`
-        if self.host_target.triple == "x86_64-unknown-linux-gnu" && self.hosts == [self.host_target]
+        if default_lld_opt_in_targets().contains(&self.host_target.triple.to_string())
+            && self.hosts == [self.host_target]
         {
             let no_llvm_config = self
                 .target_config
                 .get(&self.host_target)
-                .is_some_and(|target_config| target_config.llvm_config.is_none());
+                .is_none_or(|target_config| target_config.llvm_config.is_none());
             let enable_lld = self.llvm_from_ci || no_llvm_config;
             // Prefer the config setting in case an explicit opt-out is needed.
             self.lld_enabled = lld_enabled.unwrap_or(enable_lld);
diff --git a/src/bootstrap/src/core/download.rs b/src/bootstrap/src/core/download.rs
index d7c6d8dbcc3..373fcd52052 100644
--- a/src/bootstrap/src/core/download.rs
+++ b/src/bootstrap/src/core/download.rs
@@ -875,6 +875,7 @@ pub(crate) fn is_download_ci_available(target_triple: &str, llvm_assertions: boo
         "powerpc-unknown-linux-gnu",
         "powerpc64-unknown-linux-gnu",
         "powerpc64le-unknown-linux-gnu",
+        "powerpc64le-unknown-linux-musl",
         "riscv64gc-unknown-linux-gnu",
         "s390x-unknown-linux-gnu",
         "x86_64-apple-darwin",
diff --git a/src/build_helper/src/npm.rs b/src/build_helper/src/npm.rs
index dedef40978d..86cf6183bd0 100644
--- a/src/build_helper/src/npm.rs
+++ b/src/build_helper/src/npm.rs
@@ -3,23 +3,34 @@ use std::path::{Path, PathBuf};
 use std::process::Command;
 use std::{fs, io};
 
-/// Install an exact package version, and return the path of `node_modules`.
-pub fn install_one(
-    out_dir: &Path,
-    npm_bin: &Path,
-    pkg_name: &str,
-    pkg_version: &str,
-) -> Result<PathBuf, io::Error> {
+use crate::ci::CiEnv;
+
+/// Install all the npm deps, and return the path of `node_modules`.
+pub fn install(src_root_path: &Path, out_dir: &Path, npm: &Path) -> Result<PathBuf, io::Error> {
     let nm_path = out_dir.join("node_modules");
-    let _ = fs::create_dir(&nm_path);
-    let mut child = Command::new(npm_bin)
-        .arg("install")
-        .arg("--audit=false")
-        .arg("--fund=false")
-        .arg(format!("{pkg_name}@{pkg_version}"))
-        .current_dir(out_dir)
-        .spawn()?;
-    let exit_status = child.wait()?;
+    let copy_to_build = |p| {
+        fs::copy(src_root_path.join(p), out_dir.join(p)).map_err(|e| {
+            eprintln!("unable to copy {p:?} to build directory: {e:?}");
+            e
+        })
+    };
+    // copy stuff to the output directory to make node_modules get put there.
+    copy_to_build("package.json")?;
+    copy_to_build("package-lock.json")?;
+
+    let mut cmd = Command::new(npm);
+    if CiEnv::is_ci() {
+        // `npm ci` redownloads every time and thus is too slow for local development.
+        cmd.arg("ci");
+    } else {
+        cmd.arg("install");
+    }
+    // disable a bunch of things we don't want.
+    // this makes tidy output less noisy, and also significantly improves runtime
+    // of repeated tidy invokations.
+    cmd.args(&["--audit=false", "--save=false", "--fund=false"]);
+    cmd.current_dir(out_dir);
+    let exit_status = cmd.spawn()?.wait()?;
     if !exit_status.success() {
         eprintln!("npm install did not exit successfully");
         return Err(io::Error::other(Box::<dyn Error + Send + Sync>::from(format!(
diff --git a/src/ci/citool/src/jobs.rs b/src/ci/citool/src/jobs.rs
index 410274227e4..47516cbc1f4 100644
--- a/src/ci/citool/src/jobs.rs
+++ b/src/ci/citool/src/jobs.rs
@@ -1,9 +1,9 @@
 #[cfg(test)]
 mod tests;
 
-use std::collections::BTreeMap;
+use std::collections::{BTreeMap, HashSet};
 
-use anyhow::Context as _;
+use anyhow::{Context as _, anyhow};
 use serde_yaml::Value;
 
 use crate::GitHubContext;
@@ -85,6 +85,10 @@ impl JobDatabase {
             .cloned()
             .collect()
     }
+
+    fn find_auto_job_by_name(&self, job_name: &str) -> Option<&Job> {
+        self.auto_jobs.iter().find(|job| job.name == job_name)
+    }
 }
 
 pub fn load_job_db(db: &str) -> anyhow::Result<JobDatabase> {
@@ -97,14 +101,118 @@ pub fn load_job_db(db: &str) -> anyhow::Result<JobDatabase> {
         db.apply_merge().context("failed to apply merge keys")
     };
 
-    // Apply merge twice to handle nested merges
+    // Apply merge twice to handle nested merges up to depth 2.
     apply_merge(&mut db)?;
     apply_merge(&mut db)?;
 
-    let db: JobDatabase = serde_yaml::from_value(db).context("failed to parse job database")?;
+    let mut db: JobDatabase = serde_yaml::from_value(db).context("failed to parse job database")?;
+
+    register_pr_jobs_as_auto_jobs(&mut db)?;
+
+    validate_job_database(&db)?;
+
     Ok(db)
 }
 
+/// Maintain invariant that PR CI jobs must be a subset of Auto CI jobs modulo carve-outs.
+///
+/// When PR jobs are auto-registered as Auto jobs, they will have `continue_on_error` overridden to
+/// be `false` to avoid wasting Auto CI resources.
+///
+/// When a job is already both a PR job and a auto job, we will post-validate their "equivalence
+/// modulo certain carve-outs" in [`validate_job_database`].
+///
+/// This invariant is important to make sure that it's not easily possible (without modifying
+/// `citool`) to have PRs with red PR-only CI jobs merged into `master`, causing all subsequent PR
+/// CI runs to be red until the cause is fixed.
+fn register_pr_jobs_as_auto_jobs(db: &mut JobDatabase) -> anyhow::Result<()> {
+    for pr_job in &db.pr_jobs {
+        // It's acceptable to "override" a PR job in Auto job, for instance, `x86_64-gnu-tools` will
+        // receive an additional `DEPLOY_TOOLSTATES_JSON: toolstates-linux.json` env when under Auto
+        // environment versus PR environment.
+        if db.find_auto_job_by_name(&pr_job.name).is_some() {
+            continue;
+        }
+
+        let auto_registered_job = Job { continue_on_error: Some(false), ..pr_job.clone() };
+        db.auto_jobs.push(auto_registered_job);
+    }
+
+    Ok(())
+}
+
+fn validate_job_database(db: &JobDatabase) -> anyhow::Result<()> {
+    fn ensure_no_duplicate_job_names(section: &str, jobs: &Vec<Job>) -> anyhow::Result<()> {
+        let mut job_names = HashSet::new();
+        for job in jobs {
+            let job_name = job.name.as_str();
+            if !job_names.insert(job_name) {
+                return Err(anyhow::anyhow!(
+                    "duplicate job name `{job_name}` in section `{section}`"
+                ));
+            }
+        }
+        Ok(())
+    }
+
+    ensure_no_duplicate_job_names("pr", &db.pr_jobs)?;
+    ensure_no_duplicate_job_names("auto", &db.auto_jobs)?;
+    ensure_no_duplicate_job_names("try", &db.try_jobs)?;
+    ensure_no_duplicate_job_names("optional", &db.optional_jobs)?;
+
+    fn equivalent_modulo_carve_out(pr_job: &Job, auto_job: &Job) -> anyhow::Result<()> {
+        let Job {
+            name,
+            os,
+            only_on_channel,
+            free_disk,
+            doc_url,
+            codebuild,
+
+            // Carve-out configs allowed to be different.
+            env: _,
+            continue_on_error: _,
+        } = pr_job;
+
+        if *name == auto_job.name
+            && *os == auto_job.os
+            && *only_on_channel == auto_job.only_on_channel
+            && *free_disk == auto_job.free_disk
+            && *doc_url == auto_job.doc_url
+            && *codebuild == auto_job.codebuild
+        {
+            Ok(())
+        } else {
+            Err(anyhow!(
+                "PR job `{}` differs from corresponding Auto job `{}` in configuration other than `continue_on_error` and `env`",
+                pr_job.name,
+                auto_job.name
+            ))
+        }
+    }
+
+    for pr_job in &db.pr_jobs {
+        // At this point, any PR job must also be an Auto job, auto-registered or overridden.
+        let auto_job = db
+            .find_auto_job_by_name(&pr_job.name)
+            .expect("PR job must either be auto-registered as Auto job or overridden");
+
+        equivalent_modulo_carve_out(pr_job, auto_job)?;
+    }
+
+    // Auto CI jobs must all "fail-fast" to avoid wasting Auto CI resources. For instance, `tidy`.
+    for auto_job in &db.auto_jobs {
+        if auto_job.continue_on_error == Some(true) {
+            return Err(anyhow!(
+                "Auto job `{}` cannot have `continue_on_error: true`",
+                auto_job.name
+            ));
+        }
+    }
+
+    Ok(())
+}
+
 /// Representation of a job outputted to a GitHub Actions workflow.
 #[derive(serde::Serialize, Debug)]
 struct GithubActionsJob {
diff --git a/src/ci/citool/src/jobs/tests.rs b/src/ci/citool/src/jobs/tests.rs
index 63ac508b632..f1f6274e1ed 100644
--- a/src/ci/citool/src/jobs/tests.rs
+++ b/src/ci/citool/src/jobs/tests.rs
@@ -1,3 +1,4 @@
+use std::collections::BTreeMap;
 use std::path::Path;
 
 use super::Job;
@@ -146,3 +147,222 @@ fn validate_jobs() {
         panic!("Job validation failed:\n{error_messages}");
     }
 }
+
+#[test]
+fn pr_job_implies_auto_job() {
+    let db = load_job_db(
+        r#"
+envs:
+  pr:
+  try:
+  auto:
+  optional:
+
+pr:
+    - name: pr-ci-a
+      os: ubuntu
+      env: {}
+try:
+auto:
+optional:
+"#,
+    )
+    .unwrap();
+
+    assert_eq!(db.auto_jobs.iter().map(|j| j.name.as_str()).collect::<Vec<_>>(), vec!["pr-ci-a"])
+}
+
+#[test]
+fn implied_auto_job_keeps_env_and_fails_fast() {
+    let db = load_job_db(
+        r#"
+envs:
+  pr:
+  try:
+  auto:
+  optional:
+
+pr:
+    - name: tidy
+      env:
+        DEPLOY_TOOLSTATES_JSON: toolstates-linux.json
+      continue_on_error: true
+      os: ubuntu
+try:
+auto:
+optional:
+"#,
+    )
+    .unwrap();
+
+    assert_eq!(db.auto_jobs.iter().map(|j| j.name.as_str()).collect::<Vec<_>>(), vec!["tidy"]);
+    assert_eq!(db.auto_jobs[0].continue_on_error, Some(false));
+    assert_eq!(
+        db.auto_jobs[0].env,
+        BTreeMap::from([(
+            "DEPLOY_TOOLSTATES_JSON".to_string(),
+            serde_yaml::Value::String("toolstates-linux.json".to_string())
+        )])
+    );
+}
+
+#[test]
+#[should_panic = "duplicate"]
+fn duplicate_job_name() {
+    let _ = load_job_db(
+        r#"
+envs:
+  pr:
+  try:
+  auto:
+
+
+pr:
+    - name: pr-ci-a
+      os: ubuntu
+      env: {}
+    - name: pr-ci-a
+      os: ubuntu
+      env: {}
+try:
+auto:
+optional:
+"#,
+    )
+    .unwrap();
+}
+
+#[test]
+fn auto_job_can_override_pr_job_spec() {
+    let db = load_job_db(
+        r#"
+envs:
+  pr:
+  try:
+  auto:
+  optional:
+
+pr:
+    - name: tidy
+      os: ubuntu
+      env: {}
+try:
+auto:
+    - name: tidy
+      env:
+        DEPLOY_TOOLSTATES_JSON: toolstates-linux.json
+      continue_on_error: false
+      os: ubuntu
+optional:
+"#,
+    )
+    .unwrap();
+
+    assert_eq!(db.auto_jobs.iter().map(|j| j.name.as_str()).collect::<Vec<_>>(), vec!["tidy"]);
+    assert_eq!(db.auto_jobs[0].continue_on_error, Some(false));
+    assert_eq!(
+        db.auto_jobs[0].env,
+        BTreeMap::from([(
+            "DEPLOY_TOOLSTATES_JSON".to_string(),
+            serde_yaml::Value::String("toolstates-linux.json".to_string())
+        )])
+    );
+}
+
+#[test]
+fn compatible_divergence_pr_auto_job() {
+    let db = load_job_db(
+        r#"
+envs:
+  pr:
+  try:
+  auto:
+  optional:
+
+pr:
+    - name: tidy
+      continue_on_error: true
+      env:
+        ENV_ALLOWED_TO_DIFFER: "hello world"
+      os: ubuntu
+try:
+auto:
+    - name: tidy
+      continue_on_error: false
+      env:
+        ENV_ALLOWED_TO_DIFFER: "goodbye world"
+      os: ubuntu
+optional:
+"#,
+    )
+    .unwrap();
+
+    // `continue_on_error` and `env` are carve-outs *allowed* to diverge between PR and Auto job of
+    // the same name. Should load successfully.
+
+    assert_eq!(db.auto_jobs.iter().map(|j| j.name.as_str()).collect::<Vec<_>>(), vec!["tidy"]);
+    assert_eq!(db.auto_jobs[0].continue_on_error, Some(false));
+    assert_eq!(
+        db.auto_jobs[0].env,
+        BTreeMap::from([(
+            "ENV_ALLOWED_TO_DIFFER".to_string(),
+            serde_yaml::Value::String("goodbye world".to_string())
+        )])
+    );
+}
+
+#[test]
+#[should_panic = "differs"]
+fn incompatible_divergence_pr_auto_job() {
+    // `os` is not one of the carve-out options allowed to diverge. This should fail.
+    let _ = load_job_db(
+        r#"
+envs:
+  pr:
+  try:
+  auto:
+  optional:
+
+pr:
+    - name: tidy
+      continue_on_error: true
+      env:
+        ENV_ALLOWED_TO_DIFFER: "hello world"
+      os: ubuntu
+try:
+auto:
+    - name: tidy
+      continue_on_error: false
+      env:
+        ENV_ALLOWED_TO_DIFFER: "goodbye world"
+      os: windows
+optional:
+"#,
+    )
+    .unwrap();
+}
+
+#[test]
+#[should_panic = "cannot have `continue_on_error: true`"]
+fn auto_job_continue_on_error() {
+    // Auto CI jobs must fail-fast.
+    let _ = load_job_db(
+        r#"
+envs:
+  pr:
+  try:
+  auto:
+  optional:
+
+pr:
+try:
+auto:
+    - name: tidy
+      continue_on_error: true
+      os: windows
+      env: {}
+optional:
+"#,
+    )
+    .unwrap();
+}
diff --git a/src/ci/citool/tests/jobs.rs b/src/ci/citool/tests/jobs.rs
index dbaf13d4f42..24e0b85cab2 100644
--- a/src/ci/citool/tests/jobs.rs
+++ b/src/ci/citool/tests/jobs.rs
@@ -6,7 +6,7 @@ const TEST_JOBS_YML_PATH: &str = concat!(env!("CARGO_MANIFEST_DIR"), "/tests/tes
 fn auto_jobs() {
     let stdout = get_matrix("push", "commit", "refs/heads/auto");
     insta::assert_snapshot!(stdout, @r#"
-    jobs=[{"name":"aarch64-gnu","full_name":"auto - aarch64-gnu","os":"ubuntu-22.04-arm","env":{"ARTIFACTS_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZN24CBO55","AWS_REGION":"us-west-1","CACHES_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZI5DHEBFL","DEPLOY_BUCKET":"rust-lang-ci2","TOOLSTATE_PUBLISH":1},"free_disk":true},{"name":"x86_64-gnu-llvm-18-1","full_name":"auto - x86_64-gnu-llvm-18-1","os":"ubuntu-24.04","env":{"ARTIFACTS_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZN24CBO55","AWS_REGION":"us-west-1","CACHES_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZI5DHEBFL","DEPLOY_BUCKET":"rust-lang-ci2","DOCKER_SCRIPT":"stage_2_test_set1.sh","IMAGE":"x86_64-gnu-llvm-18","READ_ONLY_SRC":"0","RUST_BACKTRACE":1,"TOOLSTATE_PUBLISH":1},"free_disk":true},{"name":"aarch64-apple","full_name":"auto - aarch64-apple","os":"macos-14","env":{"ARTIFACTS_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZN24CBO55","AWS_REGION":"us-west-1","CACHES_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZI5DHEBFL","DEPLOY_BUCKET":"rust-lang-ci2","MACOSX_DEPLOYMENT_TARGET":11.0,"MACOSX_STD_DEPLOYMENT_TARGET":11.0,"NO_DEBUG_ASSERTIONS":1,"NO_LLVM_ASSERTIONS":1,"NO_OVERFLOW_CHECKS":1,"RUSTC_RETRY_LINKER_ON_SEGFAULT":1,"RUST_CONFIGURE_ARGS":"--enable-sanitizers --enable-profiler --set rust.jemalloc","SCRIPT":"./x.py --stage 2 test --host=aarch64-apple-darwin --target=aarch64-apple-darwin","SELECT_XCODE":"/Applications/Xcode_15.4.app","TOOLSTATE_PUBLISH":1,"USE_XCODE_CLANG":1}},{"name":"dist-i686-msvc","full_name":"auto - dist-i686-msvc","os":"windows-2022","env":{"ARTIFACTS_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZN24CBO55","AWS_REGION":"us-west-1","CACHES_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZI5DHEBFL","CODEGEN_BACKENDS":"llvm,cranelift","DEPLOY_BUCKET":"rust-lang-ci2","DIST_REQUIRE_ALL_TOOLS":1,"RUST_CONFIGURE_ARGS":"--build=i686-pc-windows-msvc --host=i686-pc-windows-msvc --target=i686-pc-windows-msvc,i586-pc-windows-msvc --enable-full-tools --enable-profiler","SCRIPT":"python x.py dist bootstrap --include-default-paths","TOOLSTATE_PUBLISH":1}}]
+    jobs=[{"name":"aarch64-gnu","full_name":"auto - aarch64-gnu","os":"ubuntu-22.04-arm","env":{"ARTIFACTS_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZN24CBO55","AWS_REGION":"us-west-1","CACHES_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZI5DHEBFL","DEPLOY_BUCKET":"rust-lang-ci2","TOOLSTATE_PUBLISH":1},"free_disk":true},{"name":"x86_64-gnu-llvm-18-1","full_name":"auto - x86_64-gnu-llvm-18-1","os":"ubuntu-24.04","env":{"ARTIFACTS_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZN24CBO55","AWS_REGION":"us-west-1","CACHES_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZI5DHEBFL","DEPLOY_BUCKET":"rust-lang-ci2","DOCKER_SCRIPT":"stage_2_test_set1.sh","IMAGE":"x86_64-gnu-llvm-18","READ_ONLY_SRC":"0","RUST_BACKTRACE":1,"TOOLSTATE_PUBLISH":1},"free_disk":true},{"name":"aarch64-apple","full_name":"auto - aarch64-apple","os":"macos-14","env":{"ARTIFACTS_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZN24CBO55","AWS_REGION":"us-west-1","CACHES_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZI5DHEBFL","DEPLOY_BUCKET":"rust-lang-ci2","MACOSX_DEPLOYMENT_TARGET":11.0,"MACOSX_STD_DEPLOYMENT_TARGET":11.0,"NO_DEBUG_ASSERTIONS":1,"NO_LLVM_ASSERTIONS":1,"NO_OVERFLOW_CHECKS":1,"RUSTC_RETRY_LINKER_ON_SEGFAULT":1,"RUST_CONFIGURE_ARGS":"--enable-sanitizers --enable-profiler --set rust.jemalloc","SCRIPT":"./x.py --stage 2 test --host=aarch64-apple-darwin --target=aarch64-apple-darwin","SELECT_XCODE":"/Applications/Xcode_15.4.app","TOOLSTATE_PUBLISH":1,"USE_XCODE_CLANG":1}},{"name":"dist-i686-msvc","full_name":"auto - dist-i686-msvc","os":"windows-2022","env":{"ARTIFACTS_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZN24CBO55","AWS_REGION":"us-west-1","CACHES_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZI5DHEBFL","CODEGEN_BACKENDS":"llvm,cranelift","DEPLOY_BUCKET":"rust-lang-ci2","DIST_REQUIRE_ALL_TOOLS":1,"RUST_CONFIGURE_ARGS":"--build=i686-pc-windows-msvc --host=i686-pc-windows-msvc --target=i686-pc-windows-msvc,i586-pc-windows-msvc --enable-full-tools --enable-profiler","SCRIPT":"python x.py dist bootstrap --include-default-paths","TOOLSTATE_PUBLISH":1}},{"name":"pr-check-1","full_name":"auto - pr-check-1","os":"ubuntu-24.04","env":{"ARTIFACTS_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZN24CBO55","AWS_REGION":"us-west-1","CACHES_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZI5DHEBFL","DEPLOY_BUCKET":"rust-lang-ci2","TOOLSTATE_PUBLISH":1},"continue_on_error":false,"free_disk":true},{"name":"pr-check-2","full_name":"auto - pr-check-2","os":"ubuntu-24.04","env":{"ARTIFACTS_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZN24CBO55","AWS_REGION":"us-west-1","CACHES_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZI5DHEBFL","DEPLOY_BUCKET":"rust-lang-ci2","TOOLSTATE_PUBLISH":1},"continue_on_error":false,"free_disk":true},{"name":"tidy","full_name":"auto - tidy","os":"ubuntu-24.04","env":{"ARTIFACTS_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZN24CBO55","AWS_REGION":"us-west-1","CACHES_AWS_ACCESS_KEY_ID":"AKIA46X5W6CZI5DHEBFL","DEPLOY_BUCKET":"rust-lang-ci2","TOOLSTATE_PUBLISH":1},"continue_on_error":false,"free_disk":true,"doc_url":"https://foo.bar"}]
     run_type=auto
     "#);
 }
diff --git a/src/ci/docker/host-x86_64/pr-check-1/Dockerfile b/src/ci/docker/host-x86_64/pr-check-1/Dockerfile
index 8bbcc18e2be..d3c3cd1b63e 100644
--- a/src/ci/docker/host-x86_64/pr-check-1/Dockerfile
+++ b/src/ci/docker/host-x86_64/pr-check-1/Dockerfile
@@ -27,10 +27,6 @@ COPY scripts/nodejs.sh /scripts/
 RUN sh /scripts/nodejs.sh /node
 ENV PATH="/node/bin:${PATH}"
 
-# Install es-check
-# Pin its version to prevent unrelated CI failures due to future es-check versions.
-RUN npm install es-check@6.1.1 eslint@8.6.0 typescript@5.7.3 -g
-
 COPY scripts/sccache.sh /scripts/
 RUN sh /scripts/sccache.sh
 
@@ -52,7 +48,4 @@ ENV SCRIPT \
   python3 ../x.py check --set build.optimized-compiler-builtins=false core alloc std --target=aarch64-unknown-linux-gnu,i686-pc-windows-msvc,i686-unknown-linux-gnu,x86_64-apple-darwin,x86_64-pc-windows-gnu,x86_64-pc-windows-msvc && \
   /scripts/validate-toolstate.sh && \
   reuse --include-submodules lint && \
-  python3 ../x.py test collect-license-metadata && \
-  # Runs checks to ensure that there are no issues in our JS code.
-  es-check es2019 ../src/librustdoc/html/static/js/*.js && \
-  tsc --project ../src/librustdoc/html/static/js/tsconfig.json
+  python3 ../x.py test collect-license-metadata
diff --git a/src/ci/docker/host-x86_64/test-various/Dockerfile b/src/ci/docker/host-x86_64/test-various/Dockerfile
index 8d2e45ae497..4d09bea69c0 100644
--- a/src/ci/docker/host-x86_64/test-various/Dockerfile
+++ b/src/ci/docker/host-x86_64/test-various/Dockerfile
@@ -65,14 +65,14 @@ ENV WASM_SCRIPT python3 /checkout/x.py --stage 2 test --host='' --target $WASM_T
   tests/ui \
   tests/mir-opt \
   tests/codegen-units \
-  tests/codegen \
-  tests/assembly \
+  tests/codegen-llvm \
+  tests/assembly-llvm \
   library/core
 
 ENV NVPTX_TARGETS=nvptx64-nvidia-cuda
 ENV NVPTX_SCRIPT python3 /checkout/x.py --stage 2 test --host='' --target $NVPTX_TARGETS \
   tests/run-make \
-  tests/assembly
+  tests/assembly-llvm
 
 ENV MUSL_TARGETS=x86_64-unknown-linux-musl \
     CC_x86_64_unknown_linux_musl=x86_64-linux-musl-gcc \
diff --git a/src/ci/docker/host-x86_64/tidy/Dockerfile b/src/ci/docker/host-x86_64/tidy/Dockerfile
index dbb950cbe0c..ee1ae5410ee 100644
--- a/src/ci/docker/host-x86_64/tidy/Dockerfile
+++ b/src/ci/docker/host-x86_64/tidy/Dockerfile
@@ -45,4 +45,4 @@ RUN bash -c 'npm install -g eslint@$(cat /tmp/eslint.version)'
 # NOTE: intentionally uses python2 for x.py so we can test it still works.
 # validate-toolstate only runs in our CI, so it's ok for it to only support python3.
 ENV SCRIPT TIDY_PRINT_DIFF=1 python2.7 ../x.py test --stage 0 \
-  src/tools/tidy tidyselftest --extra-checks=py,cpp
+  src/tools/tidy tidyselftest --extra-checks=py,cpp,js
diff --git a/src/ci/github-actions/jobs.yml b/src/ci/github-actions/jobs.yml
index 0a6ebe44b3d..011688487b4 100644
--- a/src/ci/github-actions/jobs.yml
+++ b/src/ci/github-actions/jobs.yml
@@ -124,9 +124,16 @@ jobs:
     <<: *job-linux-36c-codebuild
 
 
-# Jobs that run on each push to a pull request (PR)
-# These jobs automatically inherit envs.pr, to avoid repeating
-# it in each job definition.
+# Jobs that run on each push to a pull request (PR).
+#
+# These jobs automatically inherit envs.pr, to avoid repeating it in each job
+# definition.
+#
+# PR CI jobs will be automatically registered as Auto CI jobs or overriden. When
+# automatically registered, the PR CI job configuration will be copied as an
+# Auto CI job but with `continue_on_error` overriden to `false` (to fail-fast).
+# When overriden, `citool` will check for equivalence between the PR and CI job
+# of the same name modulo `continue_on_error` and `env`.
 pr:
   - name: pr-check-1
     <<: *job-linux-4c
@@ -177,9 +184,15 @@ optional:
       IMAGE: pr-check-1
     <<: *job-linux-4c
 
-# Main CI jobs that have to be green to merge a commit into master
-# These jobs automatically inherit envs.auto, to avoid repeating
-# it in each job definition.
+# Main CI jobs that have to be green to merge a commit into master.
+#
+# These jobs automatically inherit envs.auto, to avoid repeating it in each job
+# definition.
+#
+# Auto jobs may not specify `continue_on_error: true`, and thus will fail-fast.
+#
+# Unless explicitly overriden, PR CI jobs will be automatically registered as
+# Auto CI jobs.
 auto:
   #############################
   #   Linux/Docker builders   #
diff --git a/src/doc/rustc-dev-guide/src/asm.md b/src/doc/rustc-dev-guide/src/asm.md
index eec9d448b0c..1bb493e73d5 100644
--- a/src/doc/rustc-dev-guide/src/asm.md
+++ b/src/doc/rustc-dev-guide/src/asm.md
@@ -155,9 +155,9 @@ can't know ahead of time whether a function will require a frame/base pointer.
 
 Various tests for inline assembly are available:
 
-- `tests/assembly/asm`
+- `tests/assembly-llvm/asm`
 - `tests/ui/asm`
-- `tests/codegen/asm-*`
+- `tests/codegen-llvm/asm-*`
 
 Every architecture supported by inline assembly must have exhaustive tests in
-`tests/assembly/asm` which test all combinations of register classes and types.
+`tests/assembly-llvm/asm` which test all combinations of register classes and types.
diff --git a/src/doc/rustc-dev-guide/src/autodiff/installation.md b/src/doc/rustc-dev-guide/src/autodiff/installation.md
index a550f6d233e..ddbb3a05424 100644
--- a/src/doc/rustc-dev-guide/src/autodiff/installation.md
+++ b/src/doc/rustc-dev-guide/src/autodiff/installation.md
@@ -25,7 +25,7 @@ rustup toolchain install nightly # enables -Z unstable-options
 You can then run our test cases:
 
 ```bash
-./x test --stage 1 tests/codegen/autodiff
+./x test --stage 1 tests/codegen-llvm/autodiff
 ./x test --stage 1 tests/pretty/autodiff
 ./x test --stage 1 tests/ui/autodiff
 ./x test --stage 1 tests/ui/feature-gates/feature-gate-autodiff.rs
diff --git a/src/doc/rustc-dev-guide/src/llvm-coverage-instrumentation.md b/src/doc/rustc-dev-guide/src/llvm-coverage-instrumentation.md
index 28e0e7a908d..880363b94bf 100644
--- a/src/doc/rustc-dev-guide/src/llvm-coverage-instrumentation.md
+++ b/src/doc/rustc-dev-guide/src/llvm-coverage-instrumentation.md
@@ -117,7 +117,7 @@ human-readable coverage report.
 > directive, so they will be skipped if the profiler runtime has not been
 > [enabled in `bootstrap.toml`](#recommended-configtoml-settings).
 
-Finally, the [`tests/codegen/instrument-coverage/testprog.rs`] test compiles a simple Rust program
+Finally, the [`tests/codegen-llvm/instrument-coverage/testprog.rs`] test compiles a simple Rust program
 with `-C instrument-coverage` and compares the compiled program's LLVM IR to
 expected LLVM IR instructions and structured data for a coverage-enabled
 program, including various checks for Coverage Map-related metadata and the LLVM
@@ -136,4 +136,4 @@ and `mir-opt` tests can be refreshed by running:
 [`tests/coverage`]: https://github.com/rust-lang/rust/tree/master/tests/coverage
 [`src/tools/coverage-dump`]: https://github.com/rust-lang/rust/tree/master/src/tools/coverage-dump
 [`tests/coverage-run-rustdoc`]: https://github.com/rust-lang/rust/tree/master/tests/coverage-run-rustdoc
-[`tests/codegen/instrument-coverage/testprog.rs`]: https://github.com/rust-lang/rust/blob/master/tests/mir-opt/coverage/instrument_coverage.rs
+[`tests/codegen-llvm/instrument-coverage/testprog.rs`]: https://github.com/rust-lang/rust/blob/master/tests/mir-opt/coverage/instrument_coverage.rs
diff --git a/src/doc/rustc-dev-guide/src/offload/installation.md b/src/doc/rustc-dev-guide/src/offload/installation.md
index 1962314c70a..1e792de3c8c 100644
--- a/src/doc/rustc-dev-guide/src/offload/installation.md
+++ b/src/doc/rustc-dev-guide/src/offload/installation.md
@@ -40,7 +40,7 @@ This gives you a working LLVM build.
 ## Testing
 run
 ```
-./x test --stage 1 tests/codegen/gpu_offload
+./x test --stage 1 tests/codegen-llvm/gpu_offload
 ```
 
 ## Usage
diff --git a/src/doc/rustc-dev-guide/src/profile-guided-optimization.md b/src/doc/rustc-dev-guide/src/profile-guided-optimization.md
index d279786ac45..2fa81021045 100644
--- a/src/doc/rustc-dev-guide/src/profile-guided-optimization.md
+++ b/src/doc/rustc-dev-guide/src/profile-guided-optimization.md
@@ -132,7 +132,7 @@ There is also a [codegen test][codegen-test] that checks that some expected
 instrumentation artifacts show up in LLVM IR.
 
 [rmake-tests]: https://github.com/rust-lang/rust/tree/master/tests/run-make
-[codegen-test]: https://github.com/rust-lang/rust/blob/master/tests/codegen/pgo-instrumentation.rs
+[codegen-test]: https://github.com/rust-lang/rust/blob/master/tests/codegen-llvm/pgo-instrumentation.rs
 
 ## Additional information
 
diff --git a/src/doc/rustc-dev-guide/src/sanitizers.md b/src/doc/rustc-dev-guide/src/sanitizers.md
index 664b4feac4f..29d9056c15d 100644
--- a/src/doc/rustc-dev-guide/src/sanitizers.md
+++ b/src/doc/rustc-dev-guide/src/sanitizers.md
@@ -76,7 +76,7 @@ implementation:
 ## Testing sanitizers
 
 Sanitizers are validated by code generation tests in
-[`tests/codegen/sanitize*.rs`][test-cg] and end-to-end functional tests in
+[`tests/codegen-llvm/sanitize*.rs`][test-cg] and end-to-end functional tests in
 [`tests/ui/sanitizer/`][test-ui] directory.
 
 Testing sanitizer functionality requires the sanitizer runtimes (built when
@@ -85,7 +85,7 @@ sanitizer. When sanitizer is unsupported on given target, sanitizers tests will
 be ignored. This behaviour is controlled by compiletest `needs-sanitizer-*`
 directives.
 
-[test-cg]: https://github.com/rust-lang/rust/tree/master/tests/codegen
+[test-cg]: https://github.com/rust-lang/rust/tree/master/tests/codegen-llvm
 [test-ui]: https://github.com/rust-lang/rust/tree/master/tests/ui/sanitizer
 
 ## Enabling sanitizer on a new target
diff --git a/src/doc/rustc-dev-guide/src/tests/compiletest.md b/src/doc/rustc-dev-guide/src/tests/compiletest.md
index aa99347b2bb..a108dfdef9b 100644
--- a/src/doc/rustc-dev-guide/src/tests/compiletest.md
+++ b/src/doc/rustc-dev-guide/src/tests/compiletest.md
@@ -68,7 +68,7 @@ The following test suites are available, with links for more information:
 | [`pretty`](#pretty-printer-tests)         | Check pretty printing                                                                                               |
 | [`incremental`](#incremental-tests)       | Check incremental compilation behavior                                                                              |
 | [`debuginfo`](#debuginfo-tests)           | Check debuginfo generation running debuggers                                                                        |
-| [`codegen`](#codegen-tests)               | Check code generation                                                                                               |
+| [`codegen-*`](#codegen-tests)             | Check code generation                                                                                               |
 | [`codegen-units`](#codegen-units-tests)   | Check codegen unit partitioning                                                                                     |
 | [`assembly`](#assembly-tests)             | Check assembly output                                                                                               |
 | [`mir-opt`](#mir-opt-tests)               | Check MIR generation and optimizations                                                                              |
@@ -290,7 +290,7 @@ For example, `./x test tests/debuginfo -- --debugger gdb` will only test GDB com
 
 ### Codegen tests
 
-The tests in [`tests/codegen`] test LLVM code generation. They compile the test
+The tests in [`tests/codegen-llvm`] test LLVM code generation. They compile the test
 with the `--emit=llvm-ir` flag to emit LLVM IR. They then run the LLVM
 [FileCheck] tool. The test is annotated with various `// CHECK` comments to
 check the generated code. See the [FileCheck] documentation for a tutorial and
@@ -301,13 +301,13 @@ See also the [assembly tests](#assembly-tests) for a similar set of tests.
 If you need to work with `#![no_std]` cross-compiling tests, consult the
 [`minicore` test auxiliary](./minicore.md) chapter.
 
-[`tests/codegen`]: https://github.com/rust-lang/rust/tree/master/tests/codegen
+[`tests/codegen-llvm`]: https://github.com/rust-lang/rust/tree/master/tests/codegen-llvm
 [FileCheck]: https://llvm.org/docs/CommandGuide/FileCheck.html
 
 
 ### Assembly tests
 
-The tests in [`tests/assembly`] test LLVM assembly output. They compile the test
+The tests in [`tests/assembly-llvm`] test LLVM assembly output. They compile the test
 with the `--emit=asm` flag to emit a `.s` file with the assembly output. They
 then run the LLVM [FileCheck] tool.
 
@@ -324,7 +324,7 @@ See also the [codegen tests](#codegen-tests) for a similar set of tests.
 If you need to work with `#![no_std]` cross-compiling tests, consult the
 [`minicore` test auxiliary](./minicore.md) chapter.
 
-[`tests/assembly`]: https://github.com/rust-lang/rust/tree/master/tests/assembly
+[`tests/assembly-llvm`]: https://github.com/rust-lang/rust/tree/master/tests/assembly-llvm
 
 
 ### Codegen-units tests
diff --git a/src/doc/unstable-book/src/compiler-flags/offload.md b/src/doc/unstable-book/src/compiler-flags/offload.md
new file mode 100644
index 00000000000..4266e8c11a2
--- /dev/null
+++ b/src/doc/unstable-book/src/compiler-flags/offload.md
@@ -0,0 +1,8 @@
+# `offload`
+
+The tracking issue for this feature is: [#131513](https://github.com/rust-lang/rust/issues/131513).
+
+------------------------
+
+This feature will later allow you to run functions on GPUs. It is work in progress.
+Set the `-Zoffload=Enable` compiler flag to experiment with it.
diff --git a/src/etc/completions/x.fish b/src/etc/completions/x.fish
index 28a228d5464..a5e5bb8f09e 100644
--- a/src/etc/completions/x.fish
+++ b/src/etc/completions/x.fish
@@ -299,7 +299,7 @@ complete -c x -n "__fish_x_using_subcommand doc" -l skip-std-check-if-no-downloa
 complete -c x -n "__fish_x_using_subcommand doc" -s h -l help -d 'Print help (see more with \'--help\')'
 complete -c x -n "__fish_x_using_subcommand test" -l test-args -d 'extra arguments to be passed for the test tool being used (e.g. libtest, compiletest or rustdoc)' -r
 complete -c x -n "__fish_x_using_subcommand test" -l compiletest-rustc-args -d 'extra options to pass the compiler when running compiletest tests' -r
-complete -c x -n "__fish_x_using_subcommand test" -l extra-checks -d 'comma-separated list of other files types to check (accepts py, py:lint, py:fmt, shell, shell:lint, cpp, cpp:fmt, spellcheck)' -r
+complete -c x -n "__fish_x_using_subcommand test" -l extra-checks -d 'comma-separated list of other files types to check (accepts py, py:lint, py:fmt, shell, cpp, cpp:fmt, js, js:lint, js:typecheck, spellcheck)' -r
 complete -c x -n "__fish_x_using_subcommand test" -l compare-mode -d 'mode describing what file the actual ui output will be compared to' -r
 complete -c x -n "__fish_x_using_subcommand test" -l pass -d 'force {check,build,run}-pass tests to this mode' -r
 complete -c x -n "__fish_x_using_subcommand test" -l run -d 'whether to execute run-* tests' -r
diff --git a/src/etc/completions/x.ps1 b/src/etc/completions/x.ps1
index 0c9b3828273..4fee3bc0a86 100644
--- a/src/etc/completions/x.ps1
+++ b/src/etc/completions/x.ps1
@@ -345,7 +345,7 @@ Register-ArgumentCompleter -Native -CommandName 'x' -ScriptBlock {
         'x;test' {
             [CompletionResult]::new('--test-args', '--test-args', [CompletionResultType]::ParameterName, 'extra arguments to be passed for the test tool being used (e.g. libtest, compiletest or rustdoc)')
             [CompletionResult]::new('--compiletest-rustc-args', '--compiletest-rustc-args', [CompletionResultType]::ParameterName, 'extra options to pass the compiler when running compiletest tests')
-            [CompletionResult]::new('--extra-checks', '--extra-checks', [CompletionResultType]::ParameterName, 'comma-separated list of other files types to check (accepts py, py:lint, py:fmt, shell, shell:lint, cpp, cpp:fmt, spellcheck)')
+            [CompletionResult]::new('--extra-checks', '--extra-checks', [CompletionResultType]::ParameterName, 'comma-separated list of other files types to check (accepts py, py:lint, py:fmt, shell, cpp, cpp:fmt, js, js:lint, js:typecheck, spellcheck)')
             [CompletionResult]::new('--compare-mode', '--compare-mode', [CompletionResultType]::ParameterName, 'mode describing what file the actual ui output will be compared to')
             [CompletionResult]::new('--pass', '--pass', [CompletionResultType]::ParameterName, 'force {check,build,run}-pass tests to this mode')
             [CompletionResult]::new('--run', '--run', [CompletionResultType]::ParameterName, 'whether to execute run-* tests')
diff --git a/src/etc/completions/x.py.fish b/src/etc/completions/x.py.fish
index 43ae7424e27..e2e6ae05ee0 100644
--- a/src/etc/completions/x.py.fish
+++ b/src/etc/completions/x.py.fish
@@ -299,7 +299,7 @@ complete -c x.py -n "__fish_x.py_using_subcommand doc" -l skip-std-check-if-no-d
 complete -c x.py -n "__fish_x.py_using_subcommand doc" -s h -l help -d 'Print help (see more with \'--help\')'
 complete -c x.py -n "__fish_x.py_using_subcommand test" -l test-args -d 'extra arguments to be passed for the test tool being used (e.g. libtest, compiletest or rustdoc)' -r
 complete -c x.py -n "__fish_x.py_using_subcommand test" -l compiletest-rustc-args -d 'extra options to pass the compiler when running compiletest tests' -r
-complete -c x.py -n "__fish_x.py_using_subcommand test" -l extra-checks -d 'comma-separated list of other files types to check (accepts py, py:lint, py:fmt, shell, shell:lint, cpp, cpp:fmt, spellcheck)' -r
+complete -c x.py -n "__fish_x.py_using_subcommand test" -l extra-checks -d 'comma-separated list of other files types to check (accepts py, py:lint, py:fmt, shell, cpp, cpp:fmt, js, js:lint, js:typecheck, spellcheck)' -r
 complete -c x.py -n "__fish_x.py_using_subcommand test" -l compare-mode -d 'mode describing what file the actual ui output will be compared to' -r
 complete -c x.py -n "__fish_x.py_using_subcommand test" -l pass -d 'force {check,build,run}-pass tests to this mode' -r
 complete -c x.py -n "__fish_x.py_using_subcommand test" -l run -d 'whether to execute run-* tests' -r
diff --git a/src/etc/completions/x.py.ps1 b/src/etc/completions/x.py.ps1
index 4311e383d64..ea3aacc21c7 100644
--- a/src/etc/completions/x.py.ps1
+++ b/src/etc/completions/x.py.ps1
@@ -345,7 +345,7 @@ Register-ArgumentCompleter -Native -CommandName 'x.py' -ScriptBlock {
         'x.py;test' {
             [CompletionResult]::new('--test-args', '--test-args', [CompletionResultType]::ParameterName, 'extra arguments to be passed for the test tool being used (e.g. libtest, compiletest or rustdoc)')
             [CompletionResult]::new('--compiletest-rustc-args', '--compiletest-rustc-args', [CompletionResultType]::ParameterName, 'extra options to pass the compiler when running compiletest tests')
-            [CompletionResult]::new('--extra-checks', '--extra-checks', [CompletionResultType]::ParameterName, 'comma-separated list of other files types to check (accepts py, py:lint, py:fmt, shell, shell:lint, cpp, cpp:fmt, spellcheck)')
+            [CompletionResult]::new('--extra-checks', '--extra-checks', [CompletionResultType]::ParameterName, 'comma-separated list of other files types to check (accepts py, py:lint, py:fmt, shell, cpp, cpp:fmt, js, js:lint, js:typecheck, spellcheck)')
             [CompletionResult]::new('--compare-mode', '--compare-mode', [CompletionResultType]::ParameterName, 'mode describing what file the actual ui output will be compared to')
             [CompletionResult]::new('--pass', '--pass', [CompletionResultType]::ParameterName, 'force {check,build,run}-pass tests to this mode')
             [CompletionResult]::new('--run', '--run', [CompletionResultType]::ParameterName, 'whether to execute run-* tests')
diff --git a/src/etc/completions/x.py.zsh b/src/etc/completions/x.py.zsh
index aff35b31e21..32e986ad141 100644
--- a/src/etc/completions/x.py.zsh
+++ b/src/etc/completions/x.py.zsh
@@ -345,7 +345,7 @@ _arguments "${_arguments_options[@]}" : \
 _arguments "${_arguments_options[@]}" : \
 '*--test-args=[extra arguments to be passed for the test tool being used (e.g. libtest, compiletest or rustdoc)]:ARGS:_default' \
 '*--compiletest-rustc-args=[extra options to pass the compiler when running compiletest tests]:ARGS:_default' \
-'--extra-checks=[comma-separated list of other files types to check (accepts py, py\:lint, py\:fmt, shell, shell\:lint, cpp, cpp\:fmt, spellcheck)]:EXTRA_CHECKS:_default' \
+'--extra-checks=[comma-separated list of other files types to check (accepts py, py\:lint, py\:fmt, shell, cpp, cpp\:fmt, js, js\:lint, js\:typecheck, spellcheck)]:EXTRA_CHECKS:_default' \
 '--compare-mode=[mode describing what file the actual ui output will be compared to]:COMPARE MODE:_default' \
 '--pass=[force {check,build,run}-pass tests to this mode]:check | build | run:_default' \
 '--run=[whether to execute run-* tests]:auto | always | never:_default' \
diff --git a/src/etc/completions/x.zsh b/src/etc/completions/x.zsh
index 28ad00f3a0d..65995553276 100644
--- a/src/etc/completions/x.zsh
+++ b/src/etc/completions/x.zsh
@@ -345,7 +345,7 @@ _arguments "${_arguments_options[@]}" : \
 _arguments "${_arguments_options[@]}" : \
 '*--test-args=[extra arguments to be passed for the test tool being used (e.g. libtest, compiletest or rustdoc)]:ARGS:_default' \
 '*--compiletest-rustc-args=[extra options to pass the compiler when running compiletest tests]:ARGS:_default' \
-'--extra-checks=[comma-separated list of other files types to check (accepts py, py\:lint, py\:fmt, shell, shell\:lint, cpp, cpp\:fmt, spellcheck)]:EXTRA_CHECKS:_default' \
+'--extra-checks=[comma-separated list of other files types to check (accepts py, py\:lint, py\:fmt, shell, cpp, cpp\:fmt, js, js\:lint, js\:typecheck, spellcheck)]:EXTRA_CHECKS:_default' \
 '--compare-mode=[mode describing what file the actual ui output will be compared to]:COMPARE MODE:_default' \
 '--pass=[force {check,build,run}-pass tests to this mode]:check | build | run:_default' \
 '--run=[whether to execute run-* tests]:auto | always | never:_default' \
diff --git a/src/tools/clippy/clippy_lints/src/macro_use.rs b/src/tools/clippy/clippy_lints/src/macro_use.rs
index c1a26c5a9c7..d1a54df988f 100644
--- a/src/tools/clippy/clippy_lints/src/macro_use.rs
+++ b/src/tools/clippy/clippy_lints/src/macro_use.rs
@@ -7,8 +7,9 @@ use rustc_hir::{self as hir, AmbigArg};
 use rustc_lint::{LateContext, LateLintPass, LintContext};
 use rustc_session::impl_lint_pass;
 use rustc_span::edition::Edition;
-use rustc_span::{Span, sym};
+use rustc_span::{Span};
 use std::collections::BTreeMap;
+use rustc_attr_data_structures::{AttributeKind, find_attr};
 
 declare_clippy_lint! {
     /// ### What it does
@@ -99,15 +100,14 @@ impl LateLintPass<'_> for MacroUseImports {
             && let hir::ItemKind::Use(path, _kind) = &item.kind
             && let hir_id = item.hir_id()
             && let attrs = cx.tcx.hir_attrs(hir_id)
-            && let Some(mac_attr) = attrs.iter().find(|attr| attr.has_name(sym::macro_use))
+            && let Some(mac_attr_span) = find_attr!(attrs, AttributeKind::MacroUse {span, ..} => *span)
             && let Some(Res::Def(DefKind::Mod, id)) = path.res.type_ns
             && !id.is_local()
         {
             for kid in cx.tcx.module_children(id) {
                 if let Res::Def(DefKind::Macro(_mac_type), mac_id) = kid.res {
-                    let span = mac_attr.span();
                     let def_path = cx.tcx.def_path_str(mac_id);
-                    self.imports.push((def_path, span, hir_id));
+                    self.imports.push((def_path, mac_attr_span, hir_id));
                 }
             }
         } else if item.span.from_expansion() {
diff --git a/src/tools/clippy/clippy_lints/src/unused_trait_names.rs b/src/tools/clippy/clippy_lints/src/unused_trait_names.rs
index 610cec7b8c8..b7a1d5b2123 100644
--- a/src/tools/clippy/clippy_lints/src/unused_trait_names.rs
+++ b/src/tools/clippy/clippy_lints/src/unused_trait_names.rs
@@ -65,7 +65,7 @@ impl<'tcx> LateLintPass<'tcx> for UnusedTraitNames {
             && ident.name != kw::Underscore
             // Only check traits
             && let Some(Res::Def(DefKind::Trait, _)) = path.res.type_ns
-            && cx.tcx.maybe_unused_trait_imports(()).contains(&item.owner_id.def_id)
+            && cx.tcx.resolutions(()).maybe_unused_trait_imports.contains(&item.owner_id.def_id)
             // Only check this import if it is visible to its module only (no pub, pub(crate), ...)
             && let module = cx.tcx.parent_module_from_def_id(item.owner_id.def_id)
             && cx.tcx.visibility(item.owner_id.def_id) == Visibility::Restricted(module.to_def_id())
diff --git a/src/tools/clippy/clippy_test_deps/Cargo.lock b/src/tools/clippy/clippy_test_deps/Cargo.lock
index a591dae3a1a..5be404f24e6 100644
--- a/src/tools/clippy/clippy_test_deps/Cargo.lock
+++ b/src/tools/clippy/clippy_test_deps/Cargo.lock
@@ -72,6 +72,7 @@ dependencies = [
  "futures",
  "if_chain",
  "itertools",
+ "libc",
  "parking_lot",
  "quote",
  "regex",
diff --git a/src/tools/clippy/clippy_test_deps/Cargo.toml b/src/tools/clippy/clippy_test_deps/Cargo.toml
index a23ffcaf2f9..fcedc5d4843 100644
--- a/src/tools/clippy/clippy_test_deps/Cargo.toml
+++ b/src/tools/clippy/clippy_test_deps/Cargo.toml
@@ -6,6 +6,7 @@ edition = "2021"
 # Add dependencies here to make them available in ui tests.
 
 [dependencies]
+libc = "0.2"
 regex = "1.5.5"
 serde = { version = "1.0.145", features = ["derive"] }
 if_chain = "1.0"
diff --git a/src/tools/clippy/tests/compile-test.rs b/src/tools/clippy/tests/compile-test.rs
index 57d623b2cfc..83f91ccaa7b 100644
--- a/src/tools/clippy/tests/compile-test.rs
+++ b/src/tools/clippy/tests/compile-test.rs
@@ -151,7 +151,31 @@ impl TestContext {
         defaults.set_custom(
             "dependencies",
             DependencyBuilder {
-                program: CommandBuilder::cargo(),
+                program: {
+                    let mut p = CommandBuilder::cargo();
+                    // If we run in bootstrap, we need to use the right compiler for building the
+                    // tests -- not the compiler that built clippy, but the compiler that got linked
+                    // into clippy. Just invoking TEST_RUSTC does not work because LD_LIBRARY_PATH
+                    // is set in a way that makes it pick the wrong sysroot. Sadly due to
+                    // <https://github.com/rust-lang/cargo/issues/4423> we cannot use RUSTFLAGS to
+                    // set `--sysroot`, so we need to use bootstrap's rustc wrapper. That wrapper
+                    // however has some staging logic that is hurting us here, so to work around
+                    // that we set both the "real" and "staging" rustc to TEST_RUSTC, including the
+                    // associated library paths.
+                    if let Some(rustc) = option_env!("TEST_RUSTC") {
+                        let libdir = option_env!("TEST_RUSTC_LIB").unwrap();
+                        let sysroot = option_env!("TEST_SYSROOT").unwrap();
+                        p.envs.push(("RUSTC_REAL".into(), Some(rustc.into())));
+                        p.envs.push(("RUSTC_REAL_LIBDIR".into(), Some(libdir.into())));
+                        p.envs.push(("RUSTC_SNAPSHOT".into(), Some(rustc.into())));
+                        p.envs.push(("RUSTC_SNAPSHOT_LIBDIR".into(), Some(libdir.into())));
+                        p.envs.push((
+                            "RUSTC_SYSROOT".into(),
+                            Some(sysroot.into()),
+                        ));
+                    }
+                    p
+                },
                 crate_manifest_path: Path::new("clippy_test_deps").join("Cargo.toml"),
                 build_std: None,
                 bless_lockfile: self.args.bless,
@@ -192,6 +216,9 @@ impl TestContext {
             let dep = format!("-Ldependency={}", Path::new(host_libs).join("deps").display());
             config.program.args.push(dep.into());
         }
+        if let Some(sysroot) = option_env!("TEST_SYSROOT") {
+            config.program.args.push(format!("--sysroot={sysroot}").into());
+        }
 
         config.program.program = profile_path.join(if cfg!(windows) {
             "clippy-driver.exe"
diff --git a/src/tools/clippy/tests/ui/auxiliary/proc_macro_derive.rs b/src/tools/clippy/tests/ui/auxiliary/proc_macro_derive.rs
index 5992d15935d..54650922871 100644
--- a/src/tools/clippy/tests/ui/auxiliary/proc_macro_derive.rs
+++ b/src/tools/clippy/tests/ui/auxiliary/proc_macro_derive.rs
@@ -16,7 +16,7 @@ pub fn derive(_: TokenStream) -> TokenStream {
     let output = quote! {
         // Should not trigger `useless_attribute`
         #[allow(dead_code)]
-        extern crate rustc_middle;
+        extern crate core;
     };
     output
 }
diff --git a/src/tools/clippy/tests/ui/cast_alignment.rs b/src/tools/clippy/tests/ui/cast_alignment.rs
index 5773ffddb91..ef667f5598a 100644
--- a/src/tools/clippy/tests/ui/cast_alignment.rs
+++ b/src/tools/clippy/tests/ui/cast_alignment.rs
@@ -1,6 +1,5 @@
 //! Test casts for alignment issues
 
-#![feature(rustc_private)]
 #![feature(core_intrinsics)]
 #![warn(clippy::cast_ptr_alignment)]
 #![allow(
@@ -10,8 +9,6 @@
     clippy::borrow_as_ptr
 )]
 
-extern crate libc;
-
 fn main() {
     /* These should be warned against */
 
diff --git a/src/tools/clippy/tests/ui/cast_alignment.stderr b/src/tools/clippy/tests/ui/cast_alignment.stderr
index 6d9a81f0ecf..ee4c3e9a77e 100644
--- a/src/tools/clippy/tests/ui/cast_alignment.stderr
+++ b/src/tools/clippy/tests/ui/cast_alignment.stderr
@@ -1,5 +1,5 @@
 error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u16`) (1 < 2 bytes)
-  --> tests/ui/cast_alignment.rs:19:5
+  --> tests/ui/cast_alignment.rs:16:5
    |
 LL |     (&1u8 as *const u8) as *const u16;
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -8,19 +8,19 @@ LL |     (&1u8 as *const u8) as *const u16;
    = help: to override `-D warnings` add `#[allow(clippy::cast_ptr_alignment)]`
 
 error: casting from `*mut u8` to a more-strictly-aligned pointer (`*mut u16`) (1 < 2 bytes)
-  --> tests/ui/cast_alignment.rs:22:5
+  --> tests/ui/cast_alignment.rs:19:5
    |
 LL |     (&mut 1u8 as *mut u8) as *mut u16;
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: casting from `*const u8` to a more-strictly-aligned pointer (`*const u16`) (1 < 2 bytes)
-  --> tests/ui/cast_alignment.rs:26:5
+  --> tests/ui/cast_alignment.rs:23:5
    |
 LL |     (&1u8 as *const u8).cast::<u16>();
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: casting from `*mut u8` to a more-strictly-aligned pointer (`*mut u16`) (1 < 2 bytes)
-  --> tests/ui/cast_alignment.rs:29:5
+  --> tests/ui/cast_alignment.rs:26:5
    |
 LL |     (&mut 1u8 as *mut u8).cast::<u16>();
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/src/tools/clippy/tests/ui/iter_over_hash_type.rs b/src/tools/clippy/tests/ui/iter_over_hash_type.rs
index 914cc9df0de..9a3e7033cd8 100644
--- a/src/tools/clippy/tests/ui/iter_over_hash_type.rs
+++ b/src/tools/clippy/tests/ui/iter_over_hash_type.rs
@@ -3,15 +3,18 @@
 #![warn(clippy::iter_over_hash_type)]
 use std::collections::{HashMap, HashSet};
 
-extern crate rustc_data_structures;
-
 extern crate proc_macros;
 
+// Ensure it also works via type aliases (this isn't really the Fx hasher but that does not matter).
+type FxBuildHasher = std::collections::hash_map::RandomState;
+type FxHashMap<K, V> = HashMap<K, V, FxBuildHasher>;
+type FxHashSet<K> = HashSet<K, FxBuildHasher>;
+
 fn main() {
     let mut hash_set = HashSet::<i32>::new();
     let mut hash_map = HashMap::<i32, i32>::new();
-    let mut fx_hash_map = rustc_data_structures::fx::FxHashMap::<i32, i32>::default();
-    let mut fx_hash_set = rustc_data_structures::fx::FxHashMap::<i32, i32>::default();
+    let mut fx_hash_map = FxHashMap::<i32, i32>::default();
+    let mut fx_hash_set = FxHashSet::<i32>::default();
     let vec = Vec::<i32>::new();
 
     // test hashset
diff --git a/src/tools/clippy/tests/ui/iter_over_hash_type.stderr b/src/tools/clippy/tests/ui/iter_over_hash_type.stderr
index 1bc6f4588d4..3356186547d 100644
--- a/src/tools/clippy/tests/ui/iter_over_hash_type.stderr
+++ b/src/tools/clippy/tests/ui/iter_over_hash_type.stderr
@@ -1,5 +1,5 @@
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:18:5
+  --> tests/ui/iter_over_hash_type.rs:21:5
    |
 LL | /     for x in &hash_set {
 LL | |
@@ -11,7 +11,7 @@ LL | |     }
    = help: to override `-D warnings` add `#[allow(clippy::iter_over_hash_type)]`
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:22:5
+  --> tests/ui/iter_over_hash_type.rs:25:5
    |
 LL | /     for x in hash_set.iter() {
 LL | |
@@ -20,7 +20,7 @@ LL | |     }
    | |_____^
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:26:5
+  --> tests/ui/iter_over_hash_type.rs:29:5
    |
 LL | /     for x in hash_set.clone() {
 LL | |
@@ -29,7 +29,7 @@ LL | |     }
    | |_____^
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:30:5
+  --> tests/ui/iter_over_hash_type.rs:33:5
    |
 LL | /     for x in hash_set.drain() {
 LL | |
@@ -38,7 +38,7 @@ LL | |     }
    | |_____^
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:36:5
+  --> tests/ui/iter_over_hash_type.rs:39:5
    |
 LL | /     for (x, y) in &hash_map {
 LL | |
@@ -47,7 +47,7 @@ LL | |     }
    | |_____^
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:40:5
+  --> tests/ui/iter_over_hash_type.rs:43:5
    |
 LL | /     for x in hash_map.keys() {
 LL | |
@@ -56,7 +56,7 @@ LL | |     }
    | |_____^
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:44:5
+  --> tests/ui/iter_over_hash_type.rs:47:5
    |
 LL | /     for x in hash_map.values() {
 LL | |
@@ -65,7 +65,7 @@ LL | |     }
    | |_____^
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:48:5
+  --> tests/ui/iter_over_hash_type.rs:51:5
    |
 LL | /     for x in hash_map.values_mut() {
 LL | |
@@ -74,7 +74,7 @@ LL | |     }
    | |_____^
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:52:5
+  --> tests/ui/iter_over_hash_type.rs:55:5
    |
 LL | /     for x in hash_map.iter() {
 LL | |
@@ -83,7 +83,7 @@ LL | |     }
    | |_____^
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:56:5
+  --> tests/ui/iter_over_hash_type.rs:59:5
    |
 LL | /     for x in hash_map.clone() {
 LL | |
@@ -92,7 +92,7 @@ LL | |     }
    | |_____^
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:60:5
+  --> tests/ui/iter_over_hash_type.rs:63:5
    |
 LL | /     for x in hash_map.drain() {
 LL | |
@@ -101,7 +101,7 @@ LL | |     }
    | |_____^
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:66:5
+  --> tests/ui/iter_over_hash_type.rs:69:5
    |
 LL | /     for x in fx_hash_set {
 LL | |
@@ -110,7 +110,7 @@ LL | |     }
    | |_____^
 
 error: iteration over unordered hash-based type
-  --> tests/ui/iter_over_hash_type.rs:70:5
+  --> tests/ui/iter_over_hash_type.rs:73:5
    |
 LL | /     for x in fx_hash_map {
 LL | |
diff --git a/src/tools/clippy/tests/ui/strlen_on_c_strings.fixed b/src/tools/clippy/tests/ui/strlen_on_c_strings.fixed
index 31ed1cf03a2..17c1b541f77 100644
--- a/src/tools/clippy/tests/ui/strlen_on_c_strings.fixed
+++ b/src/tools/clippy/tests/ui/strlen_on_c_strings.fixed
@@ -1,7 +1,5 @@
 #![warn(clippy::strlen_on_c_strings)]
 #![allow(dead_code, clippy::manual_c_str_literals)]
-#![feature(rustc_private)]
-extern crate libc;
 
 #[allow(unused)]
 use libc::strlen;
diff --git a/src/tools/clippy/tests/ui/strlen_on_c_strings.rs b/src/tools/clippy/tests/ui/strlen_on_c_strings.rs
index 0f3798c9fd8..c641422f5df 100644
--- a/src/tools/clippy/tests/ui/strlen_on_c_strings.rs
+++ b/src/tools/clippy/tests/ui/strlen_on_c_strings.rs
@@ -1,7 +1,5 @@
 #![warn(clippy::strlen_on_c_strings)]
 #![allow(dead_code, clippy::manual_c_str_literals)]
-#![feature(rustc_private)]
-extern crate libc;
 
 #[allow(unused)]
 use libc::strlen;
diff --git a/src/tools/clippy/tests/ui/strlen_on_c_strings.stderr b/src/tools/clippy/tests/ui/strlen_on_c_strings.stderr
index b8619fa2df3..84a93b99ee3 100644
--- a/src/tools/clippy/tests/ui/strlen_on_c_strings.stderr
+++ b/src/tools/clippy/tests/ui/strlen_on_c_strings.stderr
@@ -1,5 +1,5 @@
 error: using `libc::strlen` on a `CString` or `CStr` value
-  --> tests/ui/strlen_on_c_strings.rs:13:13
+  --> tests/ui/strlen_on_c_strings.rs:11:13
    |
 LL |     let _ = unsafe { libc::strlen(cstring.as_ptr()) };
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cstring.as_bytes().len()`
@@ -8,37 +8,37 @@ LL |     let _ = unsafe { libc::strlen(cstring.as_ptr()) };
    = help: to override `-D warnings` add `#[allow(clippy::strlen_on_c_strings)]`
 
 error: using `libc::strlen` on a `CString` or `CStr` value
-  --> tests/ui/strlen_on_c_strings.rs:18:13
+  --> tests/ui/strlen_on_c_strings.rs:16:13
    |
 LL |     let _ = unsafe { libc::strlen(cstr.as_ptr()) };
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cstr.to_bytes().len()`
 
 error: using `libc::strlen` on a `CString` or `CStr` value
-  --> tests/ui/strlen_on_c_strings.rs:21:13
+  --> tests/ui/strlen_on_c_strings.rs:19:13
    |
 LL |     let _ = unsafe { strlen(cstr.as_ptr()) };
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cstr.to_bytes().len()`
 
 error: using `libc::strlen` on a `CString` or `CStr` value
-  --> tests/ui/strlen_on_c_strings.rs:25:22
+  --> tests/ui/strlen_on_c_strings.rs:23:22
    |
 LL |     let _ = unsafe { strlen((*pcstr).as_ptr()) };
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(*pcstr).to_bytes().len()`
 
 error: using `libc::strlen` on a `CString` or `CStr` value
-  --> tests/ui/strlen_on_c_strings.rs:31:22
+  --> tests/ui/strlen_on_c_strings.rs:29:22
    |
 LL |     let _ = unsafe { strlen(unsafe_identity(cstr).as_ptr()) };
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unsafe_identity(cstr).to_bytes().len()`
 
 error: using `libc::strlen` on a `CString` or `CStr` value
-  --> tests/ui/strlen_on_c_strings.rs:33:13
+  --> tests/ui/strlen_on_c_strings.rs:31:13
    |
 LL |     let _ = unsafe { strlen(unsafe { unsafe_identity(cstr) }.as_ptr()) };
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unsafe { unsafe_identity(cstr) }.to_bytes().len()`
 
 error: using `libc::strlen` on a `CString` or `CStr` value
-  --> tests/ui/strlen_on_c_strings.rs:37:22
+  --> tests/ui/strlen_on_c_strings.rs:35:22
    |
 LL |     let _ = unsafe { strlen(f(cstr).as_ptr()) };
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f(cstr).to_bytes().len()`
diff --git a/src/tools/clippy/tests/ui/useless_attribute.fixed b/src/tools/clippy/tests/ui/useless_attribute.fixed
index a96c8f46f55..930bc1eaecf 100644
--- a/src/tools/clippy/tests/ui/useless_attribute.fixed
+++ b/src/tools/clippy/tests/ui/useless_attribute.fixed
@@ -13,7 +13,7 @@
 #[allow(unused_imports)]
 #[allow(unused_extern_crates)]
 #[macro_use]
-extern crate rustc_middle;
+extern crate regex as regex_crate;
 
 #[macro_use]
 extern crate proc_macro_derive;
diff --git a/src/tools/clippy/tests/ui/useless_attribute.rs b/src/tools/clippy/tests/ui/useless_attribute.rs
index b26410134bb..50fafd478e5 100644
--- a/src/tools/clippy/tests/ui/useless_attribute.rs
+++ b/src/tools/clippy/tests/ui/useless_attribute.rs
@@ -13,7 +13,7 @@
 #[allow(unused_imports)]
 #[allow(unused_extern_crates)]
 #[macro_use]
-extern crate rustc_middle;
+extern crate regex as regex_crate;
 
 #[macro_use]
 extern crate proc_macro_derive;
diff --git a/src/tools/compiletest/src/common.rs b/src/tools/compiletest/src/common.rs
index 12084fa0b15..aceae3e3a3b 100644
--- a/src/tools/compiletest/src/common.rs
+++ b/src/tools/compiletest/src/common.rs
@@ -57,8 +57,8 @@ impl TestMode {
 string_enum! {
     #[derive(Clone, Copy, PartialEq, Debug)]
     pub enum TestSuite {
-        Assembly => "assembly",
-        Codegen => "codegen",
+        AssemblyLlvm => "assembly-llvm",
+        CodegenLlvm => "codegen-llvm",
         CodegenUnits => "codegen-units",
         Coverage => "coverage",
         CoverageRunRustdoc => "coverage-run-rustdoc",
diff --git a/src/tools/compiletest/src/lib.rs b/src/tools/compiletest/src/lib.rs
index 41bed8ed8a0..c712185733c 100644
--- a/src/tools/compiletest/src/lib.rs
+++ b/src/tools/compiletest/src/lib.rs
@@ -31,7 +31,7 @@ use std::time::SystemTime;
 use std::{env, fs, vec};
 
 use build_helper::git::{get_git_modified_files, get_git_untracked_files};
-use camino::{Utf8Path, Utf8PathBuf};
+use camino::{Utf8Component, Utf8Path, Utf8PathBuf};
 use getopts::Options;
 use rayon::iter::{ParallelBridge, ParallelIterator};
 use tracing::debug;
@@ -799,6 +799,23 @@ fn collect_tests_from_dir(
         return Ok(TestCollector::new());
     }
 
+    let mut components = dir.components().rev();
+    if let Some(Utf8Component::Normal(last)) = components.next()
+        && let Some(("assembly" | "codegen", backend)) = last.split_once('-')
+        && let Some(Utf8Component::Normal(parent)) = components.next()
+        && parent == "tests"
+        && let Ok(backend) = CodegenBackend::try_from(backend)
+        && backend != cx.config.codegen_backend
+    {
+        // We ignore asm tests which don't match the current codegen backend.
+        warning!(
+            "Ignoring tests in `{dir}` because they don't match the configured codegen \
+             backend (`{}`)",
+            cx.config.codegen_backend.as_str(),
+        );
+        return Ok(TestCollector::new());
+    }
+
     // For run-make tests, a "test file" is actually a directory that contains an `rmake.rs`.
     if cx.config.mode == TestMode::RunMake {
         let mut collector = TestCollector::new();
diff --git a/src/tools/enzyme b/src/tools/enzyme
-Subproject b5098d515d5e1bd0f5470553bc0d18da9794ca8
+Subproject 2cccfba93c1650f26f1cf8be8aa875a7c1d23fb
diff --git a/src/tools/miri/CONTRIBUTING.md b/src/tools/miri/CONTRIBUTING.md
index fef7f807e93..637c0dd2fdf 100644
--- a/src/tools/miri/CONTRIBUTING.md
+++ b/src/tools/miri/CONTRIBUTING.md
@@ -13,16 +13,20 @@ for a list of Miri maintainers.
 
 [Rust Zulip]: https://rust-lang.zulipchat.com
 
-### Pull review process
+### PR review process
 
 When you get a review, please take care of the requested changes in new commits. Do not amend
 existing commits. Generally avoid force-pushing. The only time you should force push is when there
 is a conflict with the master branch (in that case you should rebase across master, not merge), and
 all the way at the end of the review process when the reviewer tells you that the PR is done and you
-should squash the commits. If you are unsure how to use `git rebase` to squash commits, use `./miri
-squash` which automates the process but leaves little room for customization. (All this is to work
-around the fact that Github is quite bad at dealing with force pushes and does not support `git
-range-diff`. Maybe one day Github will be good at git and then life can become easier.)
+should squash the commits. (All this is to work around the fact that Github is quite bad at
+dealing with force pushes and does not support `git range-diff`.)
+
+The recommended way to squash commits is to use `./miri squash`, which will make everything into a
+single commit. You will be asked for the commit message; please ensure it describes the entire PR.
+You can also use `git rebase` manually if you need more control (e.g. if there should be more than
+one commit at the end), but then please use `--keep-base` to ensure the PR remains based on the same
+upstream commit.
 
 Most PRs bounce back and forth between the reviewer and the author several times, so it is good to
 keep track of who is expected to take the next step. We are using the `S-waiting-for-review` and
@@ -348,6 +352,7 @@ https. Add the following to your `.gitconfig`:
 
 The following environment variables are relevant to `./miri`:
 
+* `CARGO` sets the binary used to execute Cargo; if none is specified, defaults to `cargo`.
 * `MIRI_AUTO_OPS` indicates whether the automatic execution of rustfmt, clippy and toolchain setup
   (as controlled by the `./auto-*` files) should be skipped. If it is set to `no`, they are skipped.
   This is used to allow automated IDE actions to avoid the auto ops.
diff --git a/src/tools/miri/Cargo.lock b/src/tools/miri/Cargo.lock
index aa6f059cec2..0af4181dc15 100644
--- a/src/tools/miri/Cargo.lock
+++ b/src/tools/miri/Cargo.lock
@@ -4,18 +4,18 @@ version = 4
 
 [[package]]
 name = "addr2line"
-version = "0.21.0"
+version = "0.24.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1"
 dependencies = [
  "gimli",
 ]
 
 [[package]]
-name = "adler"
-version = "1.0.2"
+name = "adler2"
+version = "2.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
 
 [[package]]
 name = "aes"
@@ -44,40 +44,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "710e8eae58854cdc1790fcb56cca04d712a17be849eeb81da2a724bf4bae2bc4"
 dependencies = [
  "anstyle",
- "unicode-width 0.2.0",
+ "unicode-width 0.2.1",
 ]
 
 [[package]]
 name = "anstyle"
-version = "1.0.10"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd"
 
 [[package]]
 name = "anyhow"
-version = "1.0.97"
+version = "1.0.98"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
+checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
 
 [[package]]
 name = "autocfg"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
 
 [[package]]
 name = "backtrace"
-version = "0.3.71"
+version = "0.3.75"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d"
+checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
 dependencies = [
  "addr2line",
- "cc",
  "cfg-if",
  "libc",
  "miniz_oxide",
  "object",
  "rustc-demangle",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -91,15 +91,15 @@ dependencies = [
 
 [[package]]
 name = "bitflags"
-version = "2.9.0"
+version = "2.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
 
 [[package]]
 name = "bstr"
-version = "1.11.3"
+version = "1.12.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0"
+checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4"
 dependencies = [
  "memchr",
  "regex-automata",
@@ -108,15 +108,15 @@ dependencies = [
 
 [[package]]
 name = "bumpalo"
-version = "3.17.0"
+version = "3.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
 
 [[package]]
 name = "camino"
-version = "1.1.9"
+version = "1.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
+checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab"
 dependencies = [
  "serde",
 ]
@@ -166,18 +166,18 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.2.17"
+version = "1.2.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a"
+checksum = "deec109607ca693028562ed836a5f1c4b8bd77755c4e132fc5ce11b0b6211ae7"
 dependencies = [
  "shlex",
 ]
 
 [[package]]
 name = "cfg-if"
-version = "1.0.0"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
 
 [[package]]
 name = "cfg_aliases"
@@ -187,35 +187,24 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
 
 [[package]]
 name = "chrono"
-version = "0.4.40"
+version = "0.4.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c"
+checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d"
 dependencies = [
  "num-traits",
 ]
 
 [[package]]
 name = "chrono-tz"
-version = "0.10.3"
+version = "0.10.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "efdce149c370f133a071ca8ef6ea340b7b88748ab0810097a9e2976eaa34b4f3"
+checksum = "a6139a8597ed92cf816dfb33f5dd6cf0bb93a6adc938f11039f371bc5bcd26c3"
 dependencies = [
  "chrono",
- "chrono-tz-build",
  "phf",
 ]
 
 [[package]]
-name = "chrono-tz-build"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f10f8c9340e31fc120ff885fcdb54a0b48e474bbd77cab557f0c30a3e569402"
-dependencies = [
- "parse-zoneinfo",
- "phf_codegen",
-]
-
-[[package]]
 name = "cipher"
 version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -227,27 +216,27 @@ dependencies = [
 
 [[package]]
 name = "color-eyre"
-version = "0.6.3"
+version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5"
+checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d"
 dependencies = [
  "backtrace",
  "color-spantrace",
  "eyre",
  "indenter",
  "once_cell",
- "owo-colors",
+ "owo-colors 4.2.2",
  "tracing-error",
 ]
 
 [[package]]
 name = "color-spantrace"
-version = "0.2.1"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2"
+checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427"
 dependencies = [
  "once_cell",
- "owo-colors",
+ "owo-colors 4.2.2",
  "tracing-core",
  "tracing-error",
 ]
@@ -263,6 +252,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "colored"
+version = "3.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e"
+dependencies = [
+ "windows-sys 0.59.0",
+]
+
+[[package]]
 name = "comma"
 version = "1.0.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -277,7 +275,7 @@ dependencies = [
  "encode_unicode",
  "libc",
  "once_cell",
- "unicode-width 0.2.0",
+ "unicode-width 0.2.1",
  "windows-sys 0.59.0",
 ]
 
@@ -333,7 +331,7 @@ dependencies = [
  "libc",
  "option-ext",
  "redox_users",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
@@ -344,12 +342,12 @@ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
 
 [[package]]
 name = "errno"
-version = "0.3.11"
+version = "0.3.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
+checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
 dependencies = [
  "libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
@@ -386,20 +384,20 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.15"
+version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
 dependencies = [
  "cfg-if",
  "libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi 0.11.1+wasi-snapshot-preview1",
 ]
 
 [[package]]
 name = "getrandom"
-version = "0.3.2"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
 dependencies = [
  "cfg-if",
  "libc",
@@ -409,9 +407,9 @@ dependencies = [
 
 [[package]]
 name = "gimli"
-version = "0.28.1"
+version = "0.31.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
+checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
 
 [[package]]
 name = "indenter"
@@ -428,7 +426,7 @@ dependencies = [
  "console",
  "number_prefix",
  "portable-atomic",
- "unicode-width 0.2.0",
+ "unicode-width 0.2.1",
  "web-time",
 ]
 
@@ -443,17 +441,16 @@ dependencies = [
 
 [[package]]
 name = "ipc-channel"
-version = "0.19.0"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb8251fb7bcd9ccd3725ed8deae9fe7db8e586495c9eb5b0c52e6233e5e75ea"
+checksum = "5b1c98b70019c830a1fc39cecfe1f60ff99c4122f0a189697c810c90ec545c14"
 dependencies = [
  "bincode",
  "crossbeam-channel",
  "fnv",
- "lazy_static",
  "libc",
  "mio",
- "rand 0.8.5",
+ "rand",
  "serde",
  "tempfile",
  "uuid",
@@ -490,15 +487,15 @@ checksum = "db13adb97ab515a3691f56e4dbab09283d0b86cb45abd991d8634a9d6f501760"
 
 [[package]]
 name = "libc"
-version = "0.2.171"
+version = "0.2.174"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
+checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
 
 [[package]]
 name = "libffi"
-version = "4.0.0"
+version = "4.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a9434b6fc77375fb624698d5f8c49d7e80b10d59eb1219afda27d1f824d4074"
+checksum = "e7681c6fab541f799a829e44a445a0666cf8d8a6cfebf89419e6aed52c604e87"
 dependencies = [
  "libc",
  "libffi-sys",
@@ -506,28 +503,28 @@ dependencies = [
 
 [[package]]
 name = "libffi-sys"
-version = "3.2.0"
+version = "3.3.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ead36a2496acfc8edd6cc32352110e9478ac5b9b5f5b9856ebd3d28019addb84"
+checksum = "7b0d828d367b4450ed08e7d510dc46636cd660055f50d67ac943bfe788767c29"
 dependencies = [
  "cc",
 ]
 
 [[package]]
 name = "libloading"
-version = "0.8.6"
+version = "0.8.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34"
+checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
 dependencies = [
  "cfg-if",
- "windows-targets",
+ "windows-targets 0.53.2",
 ]
 
 [[package]]
 name = "libredox"
-version = "0.1.3"
+version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638"
 dependencies = [
  "bitflags",
  "libc",
@@ -535,15 +532,15 @@ dependencies = [
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.9.3"
+version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413"
+checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
 
 [[package]]
 name = "lock_api"
-version = "0.4.12"
+version = "0.4.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17"
+checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -557,9 +554,9 @@ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
 
 [[package]]
 name = "measureme"
-version = "12.0.1"
+version = "12.0.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "570a507d8948a66a97f42cbbaf8a6bb9516a51017d4ee949502ad7a10a864395"
+checksum = "6ebd1ebda747ae161a4a377bf93f87e18d46faad2331cc0c7d25b84b1d445f49"
 dependencies = [
  "log",
  "memmap2",
@@ -571,9 +568,9 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.7.4"
+version = "2.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
 
 [[package]]
 name = "memmap2"
@@ -586,23 +583,22 @@ dependencies = [
 
 [[package]]
 name = "miniz_oxide"
-version = "0.7.4"
+version = "0.8.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
 dependencies = [
- "adler",
+ "adler2",
 ]
 
 [[package]]
 name = "mio"
-version = "1.0.3"
+version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
+checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
 dependencies = [
  "libc",
- "log",
- "wasi 0.11.0+wasi-snapshot-preview1",
- "windows-sys 0.52.0",
+ "wasi 0.11.1+wasi-snapshot-preview1",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -614,16 +610,16 @@ dependencies = [
  "capstone",
  "chrono",
  "chrono-tz",
- "colored",
+ "colored 3.0.0",
  "directories",
- "getrandom 0.3.2",
+ "getrandom 0.3.3",
  "ipc-channel",
  "libc",
  "libffi",
  "libloading",
  "measureme",
  "nix",
- "rand 0.9.0",
+ "rand",
  "regex",
  "rustc_version",
  "serde",
@@ -663,9 +659,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
 
 [[package]]
 name = "object"
-version = "0.32.2"
+version = "0.36.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441"
+checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
 dependencies = [
  "memchr",
 ]
@@ -689,6 +685,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f"
 
 [[package]]
+name = "owo-colors"
+version = "4.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48dd4f4a2c8405440fd0462561f0e5806bd0f77e86f51c761481bdd4018b545e"
+
+[[package]]
 name = "pad"
 version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -699,9 +701,9 @@ dependencies = [
 
 [[package]]
 name = "parking_lot"
-version = "0.12.3"
+version = "0.12.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
+checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13"
 dependencies = [
  "lock_api",
  "parking_lot_core",
@@ -709,24 +711,15 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.10"
+version = "0.9.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8"
+checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5"
 dependencies = [
  "cfg-if",
  "libc",
  "redox_syscall",
  "smallvec",
- "windows-targets",
-]
-
-[[package]]
-name = "parse-zoneinfo"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24"
-dependencies = [
- "regex",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -740,38 +733,18 @@ dependencies = [
 
 [[package]]
 name = "phf"
-version = "0.11.3"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
+checksum = "913273894cec178f401a31ec4b656318d95473527be05c0752cc41cdc32be8b7"
 dependencies = [
  "phf_shared",
 ]
 
 [[package]]
-name = "phf_codegen"
-version = "0.11.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
-dependencies = [
- "phf_generator",
- "phf_shared",
-]
-
-[[package]]
-name = "phf_generator"
-version = "0.11.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
-dependencies = [
- "phf_shared",
- "rand 0.8.5",
-]
-
-[[package]]
 name = "phf_shared"
-version = "0.11.3"
+version = "0.12.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
+checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981"
 dependencies = [
  "siphasher",
 ]
@@ -784,9 +757,9 @@ checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
 
 [[package]]
 name = "portable-atomic"
-version = "1.11.0"
+version = "1.11.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "350e9b48cbc6b0e028b0473b114454c6316e57336ee184ceab6e53f72c178b3e"
+checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
 
 [[package]]
 name = "ppv-lite86"
@@ -803,15 +776,15 @@ version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "abec3fb083c10660b3854367697da94c674e9e82aa7511014dc958beeb7215e9"
 dependencies = [
- "owo-colors",
+ "owo-colors 3.5.0",
  "pad",
 ]
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.94"
+version = "1.0.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
+checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
 dependencies = [
  "unicode-ident",
 ]
@@ -827,40 +800,18 @@ dependencies = [
 
 [[package]]
 name = "r-efi"
-version = "5.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
-
-[[package]]
-name = "rand"
-version = "0.8.5"
+version = "5.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
-dependencies = [
- "libc",
- "rand_chacha 0.3.1",
- "rand_core 0.6.4",
-]
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
 
 [[package]]
 name = "rand"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
-dependencies = [
- "rand_chacha 0.9.0",
- "rand_core 0.9.3",
- "zerocopy",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.3.1"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97"
 dependencies = [
- "ppv-lite86",
- "rand_core 0.6.4",
+ "rand_chacha",
+ "rand_core",
 ]
 
 [[package]]
@@ -870,16 +821,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
 dependencies = [
  "ppv-lite86",
- "rand_core 0.9.3",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
-dependencies = [
- "getrandom 0.2.15",
+ "rand_core",
 ]
 
 [[package]]
@@ -888,14 +830,14 @@ version = "0.9.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
 dependencies = [
- "getrandom 0.3.2",
+ "getrandom 0.3.3",
 ]
 
 [[package]]
 name = "redox_syscall"
-version = "0.5.10"
+version = "0.5.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b8c0c260b63a8219631167be35e6a988e9554dbd323f8bd08439c8ed1302bd1"
+checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6"
 dependencies = [
  "bitflags",
 ]
@@ -906,7 +848,7 @@ version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
 dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
  "libredox",
  "thiserror 2.0.12",
 ]
@@ -942,9 +884,9 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
 
 [[package]]
 name = "rustc-demangle"
-version = "0.1.24"
+version = "0.1.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
+checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f"
 
 [[package]]
 name = "rustc-hash"
@@ -975,18 +917,24 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "1.0.5"
+version = "1.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
+checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
 dependencies = [
  "bitflags",
  "errno",
  "libc",
  "linux-raw-sys",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
+name = "rustversion"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d"
+
+[[package]]
 name = "ryu"
 version = "1.0.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1029,9 +977,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.140"
+version = "1.0.141"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3"
 dependencies = [
  "itoa",
  "memchr",
@@ -1062,25 +1010,26 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
 
 [[package]]
 name = "smallvec"
-version = "1.14.0"
+version = "1.15.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
 
 [[package]]
 name = "spanned"
-version = "0.3.0"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "86af297923fbcfd107c20a189a6e9c872160df71a7190ae4a7a6c5dce4b2feb6"
+checksum = "c92d4b0c055fde758f086eb4a6e73410247df8a3837fd606d2caeeaf72aa566d"
 dependencies = [
+ "anyhow",
  "bstr",
  "color-eyre",
 ]
 
 [[package]]
 name = "syn"
-version = "2.0.100"
+version = "2.0.104"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
+checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1089,12 +1038,12 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.19.1"
+version = "3.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
+checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
 dependencies = [
  "fastrand",
- "getrandom 0.3.2",
+ "getrandom 0.3.3",
  "once_cell",
  "rustix",
  "windows-sys 0.59.0",
@@ -1142,12 +1091,11 @@ dependencies = [
 
 [[package]]
 name = "thread_local"
-version = "1.1.8"
+version = "1.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
 dependencies = [
  "cfg-if",
- "once_cell",
 ]
 
 [[package]]
@@ -1172,9 +1120,9 @@ dependencies = [
 
 [[package]]
 name = "tracing-core"
-version = "0.1.33"
+version = "0.1.34"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c"
+checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
 dependencies = [
  "once_cell",
  "valuable",
@@ -1209,9 +1157,9 @@ checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
 
 [[package]]
 name = "ui_test"
-version = "0.29.2"
+version = "0.30.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1211b1111c752c73b33073d2958072be08825fd97c9ab4d83444da361a06634b"
+checksum = "b56a6897cc4bb6f8daf1939b0b39cd9645856997f46f4d0b3e3cb7122dfe9251"
 dependencies = [
  "annotate-snippets",
  "anyhow",
@@ -1219,7 +1167,7 @@ dependencies = [
  "cargo-platform",
  "cargo_metadata",
  "color-eyre",
- "colored",
+ "colored 2.2.0",
  "comma",
  "crossbeam-channel",
  "indicatif",
@@ -1247,17 +1195,19 @@ checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
 
 [[package]]
 name = "unicode-width"
-version = "0.2.0"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd"
+checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c"
 
 [[package]]
 name = "uuid"
-version = "1.16.0"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "458f7a779bf54acc9f347480ac654f68407d3aab21269a6e3c9f922acd9e2da9"
+checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d"
 dependencies = [
- "getrandom 0.3.2",
+ "getrandom 0.3.3",
+ "js-sys",
+ "wasm-bindgen",
 ]
 
 [[package]]
@@ -1274,9 +1224,9 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
 
 [[package]]
 name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+version = "0.11.1+wasi-snapshot-preview1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
 
 [[package]]
 name = "wasi"
@@ -1295,6 +1245,7 @@ checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5"
 dependencies = [
  "cfg-if",
  "once_cell",
+ "rustversion",
  "wasm-bindgen-macro",
 ]
 
@@ -1361,7 +1312,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6"
 dependencies = [
  "windows-core",
- "windows-targets",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -1374,7 +1325,7 @@ dependencies = [
  "windows-interface",
  "windows-result",
  "windows-strings",
- "windows-targets",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -1405,7 +1356,7 @@ version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -1415,25 +1366,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
 dependencies = [
  "windows-result",
- "windows-targets",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
 name = "windows-sys"
-version = "0.52.0"
+version = "0.59.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
 name = "windows-sys"
-version = "0.59.0"
+version = "0.60.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.53.2",
 ]
 
 [[package]]
@@ -1442,14 +1393,30 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_gnullvm",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm 0.52.6",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.53.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef"
+dependencies = [
+ "windows_aarch64_gnullvm 0.53.0",
+ "windows_aarch64_msvc 0.53.0",
+ "windows_i686_gnu 0.53.0",
+ "windows_i686_gnullvm 0.53.0",
+ "windows_i686_msvc 0.53.0",
+ "windows_x86_64_gnu 0.53.0",
+ "windows_x86_64_gnullvm 0.53.0",
+ "windows_x86_64_msvc 0.53.0",
 ]
 
 [[package]]
@@ -1459,48 +1426,96 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
 [[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
+
+[[package]]
 name = "windows_aarch64_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
+
+[[package]]
 name = "windows_i686_gnu"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
 
 [[package]]
+name = "windows_i686_gnu"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
+
+[[package]]
 name = "windows_i686_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
 [[package]]
+name = "windows_i686_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
+
+[[package]]
 name = "windows_x86_64_gnu"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
 [[package]]
+name = "windows_x86_64_gnu"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
+
+[[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
 [[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
+name = "windows_x86_64_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
+
+[[package]]
 name = "wit-bindgen-rt"
 version = "0.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1511,18 +1526,18 @@ dependencies = [
 
 [[package]]
 name = "zerocopy"
-version = "0.8.24"
+version = "0.8.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879"
+checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f"
 dependencies = [
  "zerocopy-derive",
 ]
 
 [[package]]
 name = "zerocopy-derive"
-version = "0.8.24"
+version = "0.8.26"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be"
+checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
 dependencies = [
  "proc-macro2",
  "quote",
diff --git a/src/tools/miri/Cargo.toml b/src/tools/miri/Cargo.toml
index 75476d7923c..d293af5cea2 100644
--- a/src/tools/miri/Cargo.toml
+++ b/src/tools/miri/Cargo.toml
@@ -38,18 +38,19 @@ features = ['unprefixed_malloc_on_supported_platforms']
 
 [target.'cfg(unix)'.dependencies]
 libc = "0.2"
-libffi = "4.0.0"
-libloading = "0.8"
+# native-lib dependencies
+libffi = { version = "4.0.0", optional = true }
+libloading = { version = "0.8", optional = true }
+serde = { version = "1.0.219", features = ["derive"], optional = true }
 
 [target.'cfg(target_os = "linux")'.dependencies]
-nix = { version = "0.30.1", features = ["mman", "ptrace", "signal"] }
-ipc-channel = "0.19.0"
-serde = { version = "1.0.219", features = ["derive"] }
-capstone = "0.13"
+nix = { version = "0.30.1", features = ["mman", "ptrace", "signal"], optional = true }
+ipc-channel = { version = "0.20.0", optional = true }
+capstone = { version = "0.13", optional = true }
 
 [dev-dependencies]
-ui_test = "0.29.1"
-colored = "2"
+ui_test = "0.30.2"
+colored = "3"
 rustc_version = "0.4"
 regex = "1.5.5"
 tempfile = "3"
@@ -64,11 +65,12 @@ name = "ui"
 harness = false
 
 [features]
-default = ["stack-cache"]
+default = ["stack-cache", "native-lib"]
 genmc = []
 stack-cache = []
 stack-cache-consistency-check = ["stack-cache"]
 tracing = ["serde_json"]
+native-lib = ["dep:libffi", "dep:libloading", "dep:capstone", "dep:ipc-channel", "dep:nix", "dep:serde"]
 
 [lints.rust.unexpected_cfgs]
 level = "warn"
diff --git a/src/tools/miri/README.md b/src/tools/miri/README.md
index 7816ce1ac56..7ccd27d7b83 100644
--- a/src/tools/miri/README.md
+++ b/src/tools/miri/README.md
@@ -286,11 +286,6 @@ environment variable. We first document the most relevant and most commonly used
   specific circumstances, but Miri's behavior will also be more stable across versions and targets.
   This is equivalent to `-Zmiri-fixed-schedule -Zmiri-compare-exchange-weak-failure-rate=0.0
   -Zmiri-address-reuse-cross-thread-rate=0.0 -Zmiri-disable-weak-memory-emulation`.
-* `-Zmiri-deterministic-floats` makes Miri's floating-point behavior fully deterministic. This means
-  that operations will always return the preferred NaN, imprecise operations will not have any
-  random error applied to them, and `min`/`max` as "maybe fused" multiply-add all behave
-  deterministically. Note that Miri still uses host floats for some operations, so behavior can
-  still differ depending on the host target and setup.
 * `-Zmiri-disable-isolation` disables host isolation. As a consequence,
   the program has access to host resources such as environment variables, file
   systems, and randomness.
@@ -324,6 +319,8 @@ environment variable. We first document the most relevant and most commonly used
   Can be used without a value; in that case the range defaults to `0..64`.
 * `-Zmiri-many-seeds-keep-going` tells Miri to really try all the seeds in the given range, even if
   a failing seed has already been found. This is useful to determine which fraction of seeds fails.
+* `-Zmiri-no-extra-rounding-error` stops Miri from adding extra rounding errors to float operations
+  that do not have a guaranteed precision.
 * `-Zmiri-num-cpus` states the number of available CPUs to be reported by miri. By default, the
   number of available CPUs is `1`. Note that this flag does not affect how miri handles threads in
   any way.
@@ -376,6 +373,12 @@ to Miri failing to detect cases of undefined behavior in a program.
   will always fail and `0.0` means it will never fail. Note that setting it to
   `1.0` will likely cause hangs, since it means programs using
   `compare_exchange_weak` cannot make progress.
+* `-Zmiri-deterministic-floats` makes Miri's floating-point behavior fully deterministic. This means
+  that operations will always return the preferred NaN, imprecise operations will not have any
+  random error applied to them, and `min`/`max` and "maybe fused" multiply-add all behave
+  deterministically. Note that Miri still uses host floats for some operations, so behavior can
+  still differ depending on the host target and setup. See `-Zmiri-no-extra-rounding-error` for
+  a flag that specifically only disables the random error.
 * `-Zmiri-disable-alignment-check` disables checking pointer alignment, so you
   can focus on other failures, but it means Miri can miss bugs in your program.
   Using this flag is **unsound**.
diff --git a/src/tools/miri/cargo-miri/Cargo.lock b/src/tools/miri/cargo-miri/Cargo.lock
index d37f8750bde..b3f5dafab64 100644
--- a/src/tools/miri/cargo-miri/Cargo.lock
+++ b/src/tools/miri/cargo-miri/Cargo.lock
@@ -3,31 +3,28 @@
 version = 4
 
 [[package]]
-name = "aho-corasick"
-version = "1.1.3"
+name = "anyhow"
+version = "1.0.98"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
-dependencies = [
- "memchr",
-]
+checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
 
 [[package]]
-name = "anyhow"
-version = "1.0.97"
+name = "autocfg"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
 
 [[package]]
 name = "bitflags"
-version = "2.9.0"
+version = "2.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
 
 [[package]]
 name = "camino"
-version = "1.1.9"
+version = "1.1.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3"
+checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab"
 dependencies = [
  "serde",
 ]
@@ -47,21 +44,38 @@ dependencies = [
 
 [[package]]
 name = "cargo-platform"
-version = "0.1.9"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea"
+checksum = "84982c6c0ae343635a3a4ee6dedef965513735c8b183caa7289fa6e27399ebd4"
 dependencies = [
  "serde",
 ]
 
 [[package]]
+name = "cargo-util-schemas"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7dc1a6f7b5651af85774ae5a34b4e8be397d9cf4bc063b7e6dbd99a841837830"
+dependencies = [
+ "semver",
+ "serde",
+ "serde-untagged",
+ "serde-value",
+ "thiserror",
+ "toml",
+ "unicode-xid",
+ "url",
+]
+
+[[package]]
 name = "cargo_metadata"
-version = "0.19.2"
+version = "0.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba"
+checksum = "5cfca2aaa699835ba88faf58a06342a314a950d2b9686165e038286c30316868"
 dependencies = [
  "camino",
  "cargo-platform",
+ "cargo-util-schemas",
  "semver",
  "serde",
  "serde_json",
@@ -70,9 +84,9 @@ dependencies = [
 
 [[package]]
 name = "cfg-if"
-version = "1.0.0"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
 
 [[package]]
 name = "directories"
@@ -92,17 +106,44 @@ dependencies = [
  "libc",
  "option-ext",
  "redox_users",
- "windows-sys",
+ "windows-sys 0.60.2",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "erased-serde"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7"
+dependencies = [
+ "serde",
+ "typeid",
 ]
 
 [[package]]
 name = "errno"
-version = "0.3.11"
+version = "0.3.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
+checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
 dependencies = [
  "libc",
- "windows-sys",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
@@ -112,21 +153,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
 
 [[package]]
+name = "form_urlencoded"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
 name = "getrandom"
-version = "0.2.15"
+version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
 dependencies = [
  "cfg-if",
  "libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi 0.11.1+wasi-snapshot-preview1",
 ]
 
 [[package]]
 name = "getrandom"
-version = "0.3.2"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
 dependencies = [
  "cfg-if",
  "libc",
@@ -135,6 +185,129 @@ dependencies = [
 ]
 
 [[package]]
+name = "hashbrown"
+version = "0.15.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5"
+
+[[package]]
+name = "icu_collections"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
+dependencies = [
+ "displaydoc",
+ "potential_utf",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locale_core"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
+
+[[package]]
+name = "icu_properties"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
+dependencies = [
+ "displaydoc",
+ "icu_collections",
+ "icu_locale_core",
+ "icu_properties_data",
+ "icu_provider",
+ "potential_utf",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
+
+[[package]]
+name = "icu_provider"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"
+dependencies = [
+ "displaydoc",
+ "icu_locale_core",
+ "stable_deref_trait",
+ "tinystr",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "idna"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
+dependencies = [
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
+dependencies = [
+ "equivalent",
+ "hashbrown",
+]
+
+[[package]]
 name = "itoa"
 version = "1.0.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -142,15 +315,15 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
 
 [[package]]
 name = "libc"
-version = "0.2.171"
+version = "0.2.174"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
+checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
 
 [[package]]
 name = "libredox"
-version = "0.1.3"
+version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638"
 dependencies = [
  "bitflags",
  "libc",
@@ -158,15 +331,30 @@ dependencies = [
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.9.3"
+version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413"
+checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
+
+[[package]]
+name = "litemap"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
 
 [[package]]
 name = "memchr"
-version = "2.7.4"
+version = "2.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
 
 [[package]]
 name = "once_cell"
@@ -181,10 +369,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
 
 [[package]]
+name = "ordered-float"
+version = "2.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+
+[[package]]
+name = "potential_utf"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
+dependencies = [
+ "zerovec",
+]
+
+[[package]]
 name = "proc-macro2"
-version = "1.0.94"
+version = "1.0.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
+checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
 dependencies = [
  "unicode-ident",
 ]
@@ -200,9 +412,9 @@ dependencies = [
 
 [[package]]
 name = "r-efi"
-version = "5.2.0"
+version = "5.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
 
 [[package]]
 name = "redox_users"
@@ -210,50 +422,21 @@ version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
 dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
  "libredox",
  "thiserror",
 ]
 
 [[package]]
-name = "regex"
-version = "1.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-automata",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
-
-[[package]]
 name = "rustc-build-sysroot"
-version = "0.5.8"
+version = "0.5.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16d115ad7e26e0d1337f64ae6598f758194696afc2e9f34c8a6f24582529c3dc"
+checksum = "fdb13874a0e55baf4ac3d49d38206aecb31a55b75d6c4d04fd850b53942c8cc8"
 dependencies = [
  "anyhow",
- "regex",
  "rustc_version",
  "tempfile",
+ "toml",
  "walkdir",
 ]
 
@@ -274,15 +457,15 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "1.0.5"
+version = "1.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
+checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
 dependencies = [
  "bitflags",
  "errno",
  "libc",
  "linux-raw-sys",
- "windows-sys",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
@@ -319,6 +502,27 @@ dependencies = [
 ]
 
 [[package]]
+name = "serde-untagged"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "299d9c19d7d466db4ab10addd5703e4c615dec2a5a16dbbafe191045e87ee66e"
+dependencies = [
+ "erased-serde",
+ "serde",
+ "typeid",
+]
+
+[[package]]
+name = "serde-value"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
+dependencies = [
+ "ordered-float",
+ "serde",
+]
+
+[[package]]
 name = "serde_derive"
 version = "1.0.219"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -331,9 +535,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.140"
+version = "1.0.141"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3"
 dependencies = [
  "itoa",
  "memchr",
@@ -342,10 +546,31 @@ dependencies = [
 ]
 
 [[package]]
+name = "serde_spanned"
+version = "0.6.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "smallvec"
+version = "1.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+
+[[package]]
 name = "syn"
-version = "2.0.100"
+version = "2.0.104"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
+checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -353,16 +578,27 @@ dependencies = [
 ]
 
 [[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
 name = "tempfile"
-version = "3.19.1"
+version = "3.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
+checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
 dependencies = [
  "fastrand",
- "getrandom 0.3.2",
+ "getrandom 0.3.3",
  "once_cell",
  "rustix",
- "windows-sys",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -386,12 +622,93 @@ dependencies = [
 ]
 
 [[package]]
+name = "tinystr"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.22.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
+dependencies = [
+ "indexmap",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_write",
+ "winnow",
+]
+
+[[package]]
+name = "toml_write"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
+
+[[package]]
+name = "typeid"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
+
+[[package]]
 name = "unicode-ident"
 version = "1.0.18"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
 
 [[package]]
+name = "unicode-xid"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
+
+[[package]]
+name = "url"
+version = "2.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+]
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
+[[package]]
 name = "walkdir"
 version = "2.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -403,9 +720,9 @@ dependencies = [
 
 [[package]]
 name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+version = "0.11.1+wasi-snapshot-preview1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
 
 [[package]]
 name = "wasi"
@@ -422,7 +739,7 @@ version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
 dependencies = [
- "windows-sys",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -431,7 +748,16 @@ version = "0.59.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets 0.53.2",
 ]
 
 [[package]]
@@ -440,14 +766,30 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_gnullvm",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm 0.52.6",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.53.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef"
+dependencies = [
+ "windows_aarch64_gnullvm 0.53.0",
+ "windows_aarch64_msvc 0.53.0",
+ "windows_i686_gnu 0.53.0",
+ "windows_i686_gnullvm 0.53.0",
+ "windows_i686_msvc 0.53.0",
+ "windows_x86_64_gnu 0.53.0",
+ "windows_x86_64_gnullvm 0.53.0",
+ "windows_x86_64_msvc 0.53.0",
 ]
 
 [[package]]
@@ -457,48 +799,105 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
 [[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
+
+[[package]]
 name = "windows_aarch64_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
+
+[[package]]
 name = "windows_i686_gnu"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
 
 [[package]]
+name = "windows_i686_gnu"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
+
+[[package]]
 name = "windows_i686_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
 [[package]]
+name = "windows_i686_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
+
+[[package]]
 name = "windows_x86_64_gnu"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
 [[package]]
+name = "windows_x86_64_gnu"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
+
+[[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
 [[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
+name = "windows_x86_64_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
+
+[[package]]
+name = "winnow"
+version = "0.7.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
 name = "wit-bindgen-rt"
 version = "0.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -506,3 +905,87 @@ checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1"
 dependencies = [
  "bitflags",
 ]
+
+[[package]]
+name = "writeable"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
+
+[[package]]
+name = "yoke"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
+dependencies = [
+ "serde",
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerotrie"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
diff --git a/src/tools/miri/cargo-miri/Cargo.toml b/src/tools/miri/cargo-miri/Cargo.toml
index e08733959cc..77cb1df8e74 100644
--- a/src/tools/miri/cargo-miri/Cargo.toml
+++ b/src/tools/miri/cargo-miri/Cargo.toml
@@ -17,7 +17,7 @@ doctest = false # and no doc tests
 directories = "6"
 rustc_version = "0.4"
 serde_json = "1.0.40"
-cargo_metadata = "0.19"
+cargo_metadata = "0.21"
 rustc-build-sysroot = "0.5.8"
 
 # Enable some feature flags that dev-dependencies need but dependencies
diff --git a/src/tools/miri/cargo-miri/src/util.rs b/src/tools/miri/cargo-miri/src/util.rs
index 43b2a1b6173..82c6a929357 100644
--- a/src/tools/miri/cargo-miri/src/util.rs
+++ b/src/tools/miri/cargo-miri/src/util.rs
@@ -129,7 +129,8 @@ pub fn exec(mut cmd: Command) -> ! {
     // On non-Unix imitate POSIX exec as closely as we can
     #[cfg(not(unix))]
     {
-        let exit_status = cmd.status().expect("failed to run command");
+        let exit_status =
+            cmd.status().unwrap_or_else(|err| panic!("failed to run `{cmd:?}`:\n{err}"));
         std::process::exit(exit_status.code().unwrap_or(-1))
     }
     // On Unix targets, actually exec.
@@ -138,8 +139,8 @@ pub fn exec(mut cmd: Command) -> ! {
     #[cfg(unix)]
     {
         use std::os::unix::process::CommandExt;
-        let error = cmd.exec();
-        panic!("failed to run command: {error}")
+        let err = cmd.exec();
+        panic!("failed to run `{cmd:?}`:\n{err}")
     }
 }
 
diff --git a/src/tools/miri/etc/rust_analyzer_helix.toml b/src/tools/miri/etc/rust_analyzer_helix.toml
index 9bfb09120d8..91e4070478c 100644
--- a/src/tools/miri/etc/rust_analyzer_helix.toml
+++ b/src/tools/miri/etc/rust_analyzer_helix.toml
@@ -26,5 +26,6 @@ invocationStrategy = "once"
 overrideCommand = [
     "./miri",
     "check",
+    "--no-default-features",
     "--message-format=json",
 ]
diff --git a/src/tools/miri/etc/rust_analyzer_vscode.json b/src/tools/miri/etc/rust_analyzer_vscode.json
index c646953e92b..6917c6a1fd8 100644
--- a/src/tools/miri/etc/rust_analyzer_vscode.json
+++ b/src/tools/miri/etc/rust_analyzer_vscode.json
@@ -20,6 +20,7 @@
     "rust-analyzer.cargo.buildScripts.overrideCommand": [
         "./miri",
         "check",
+        "--no-default-features",
         "--message-format=json",
     ],
 }
diff --git a/src/tools/miri/miri b/src/tools/miri/miri
index 549998ae44a..a5f2bb1550a 100755
--- a/src/tools/miri/miri
+++ b/src/tools/miri/miri
@@ -15,8 +15,9 @@ if [ -n "$MIRI_IN_RA" ]; then
   CARGO_FLAGS+=("--message-format=json" "-Zroot-dir=$ROOT_DIR")
   TARGET_DIR="$ROOT_DIR"/target
 fi
+
 # Run cargo.
-cargo $TOOLCHAIN build --manifest-path "$ROOT_DIR"/miri-script/Cargo.toml \
+${CARGO:-cargo} $TOOLCHAIN build --manifest-path "$ROOT_DIR"/miri-script/Cargo.toml \
   --target-dir "$TARGET_DIR" "${CARGO_FLAGS[@]}" || \
   ( echo "Failed to build miri-script. Is the 'stable' toolchain installed?"; exit 1 )
 # Instead of doing just `cargo run --manifest-path .. $@`, we invoke miri-script binary directly.
diff --git a/src/tools/miri/miri-script/Cargo.lock b/src/tools/miri/miri-script/Cargo.lock
index 3494a241ec5..a049bfcbccd 100644
--- a/src/tools/miri/miri-script/Cargo.lock
+++ b/src/tools/miri/miri-script/Cargo.lock
@@ -4,9 +4,9 @@ version = 4
 
 [[package]]
 name = "anstream"
-version = "0.6.18"
+version = "0.6.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
+checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933"
 dependencies = [
  "anstyle",
  "anstyle-parse",
@@ -19,62 +19,62 @@ dependencies = [
 
 [[package]]
 name = "anstyle"
-version = "1.0.10"
+version = "1.0.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd"
 
 [[package]]
 name = "anstyle-parse"
-version = "0.2.6"
+version = "0.2.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
+checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
 dependencies = [
  "utf8parse",
 ]
 
 [[package]]
 name = "anstyle-query"
-version = "1.1.2"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
+checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9"
 dependencies = [
- "windows-sys",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
 name = "anstyle-wincon"
-version = "3.0.7"
+version = "3.0.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e"
+checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882"
 dependencies = [
  "anstyle",
- "once_cell",
- "windows-sys",
+ "once_cell_polyfill",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
 name = "anyhow"
-version = "1.0.97"
+version = "1.0.98"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f"
+checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
 
 [[package]]
 name = "bitflags"
-version = "2.9.0"
+version = "2.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
 
 [[package]]
 name = "cfg-if"
-version = "1.0.0"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
 
 [[package]]
 name = "clap"
-version = "4.5.35"
+version = "4.5.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8aa86934b44c19c50f87cc2790e19f54f7a67aedb64101c2e1a2e5ecfb73944"
+checksum = "be92d32e80243a54711e5d7ce823c35c41c9d929dc4ab58e1276f625841aadf9"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -82,9 +82,9 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.5.35"
+version = "4.5.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2414dbb2dd0695280da6ea9261e327479e9d37b0630f6b53ba2a11c60c679fd9"
+checksum = "707eab41e9622f9139419d573eca0900137718000c517d47da73045f54331c3d"
 dependencies = [
  "anstream",
  "anstyle",
@@ -94,9 +94,9 @@ dependencies = [
 
 [[package]]
 name = "clap_derive"
-version = "4.5.32"
+version = "4.5.41"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09176aae279615badda0765c0c0b3f6ed53f4709118af73cf4655d85d1530cd7"
+checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491"
 dependencies = [
  "heck",
  "proc-macro2",
@@ -106,15 +106,15 @@ dependencies = [
 
 [[package]]
 name = "clap_lex"
-version = "0.7.4"
+version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6"
+checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675"
 
 [[package]]
 name = "colorchoice"
-version = "1.0.3"
+version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
+checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
 
 [[package]]
 name = "directories"
@@ -134,7 +134,7 @@ dependencies = [
  "libc",
  "option-ext",
  "redox_users",
- "windows-sys",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
@@ -150,19 +150,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
 
 [[package]]
-name = "env_home"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe"
-
-[[package]]
 name = "errno"
-version = "0.3.11"
+version = "0.3.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
+checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
 dependencies = [
  "libc",
- "windows-sys",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
@@ -173,20 +167,20 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
 
 [[package]]
 name = "getrandom"
-version = "0.2.15"
+version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
 dependencies = [
  "cfg-if",
  "libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi 0.11.1+wasi-snapshot-preview1",
 ]
 
 [[package]]
 name = "getrandom"
-version = "0.3.2"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
 dependencies = [
  "cfg-if",
  "libc",
@@ -223,15 +217,15 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
 
 [[package]]
 name = "libc"
-version = "0.2.171"
+version = "0.2.174"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
+checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
 
 [[package]]
 name = "libredox"
-version = "0.1.3"
+version = "0.1.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638"
 dependencies = [
  "bitflags",
  "libc",
@@ -239,21 +233,15 @@ dependencies = [
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.9.3"
+version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413"
+checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
 
 [[package]]
 name = "memchr"
-version = "2.7.4"
+version = "2.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
 
 [[package]]
 name = "miri-script"
@@ -272,7 +260,6 @@ dependencies = [
  "shell-words",
  "tempfile",
  "walkdir",
- "which",
  "xshell",
 ]
 
@@ -283,6 +270,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
 
 [[package]]
+name = "once_cell_polyfill"
+version = "1.70.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad"
+
+[[package]]
 name = "option-ext"
 version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -296,9 +289,9 @@ checksum = "a6e819bbd49d5939f682638fa54826bf1650abddcd65d000923de8ad63cc7d15"
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.94"
+version = "1.0.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
+checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
 dependencies = [
  "unicode-ident",
 ]
@@ -314,9 +307,9 @@ dependencies = [
 
 [[package]]
 name = "r-efi"
-version = "5.2.0"
+version = "5.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
 
 [[package]]
 name = "redox_users"
@@ -324,7 +317,7 @@ version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
 dependencies = [
- "getrandom 0.2.15",
+ "getrandom 0.2.16",
  "libredox",
  "thiserror",
 ]
@@ -340,28 +333,15 @@ dependencies = [
 
 [[package]]
 name = "rustix"
-version = "0.38.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
-dependencies = [
- "bitflags",
- "errno",
- "libc",
- "linux-raw-sys 0.4.15",
- "windows-sys",
-]
-
-[[package]]
-name = "rustix"
-version = "1.0.5"
+version = "1.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
+checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
 dependencies = [
  "bitflags",
  "errno",
  "libc",
- "linux-raw-sys 0.9.3",
- "windows-sys",
+ "linux-raw-sys",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
@@ -407,9 +387,9 @@ dependencies = [
 
 [[package]]
 name = "serde_json"
-version = "1.0.140"
+version = "1.0.141"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
+checksum = "30b9eff21ebe718216c6ec64e1d9ac57087aad11efc64e32002bce4a0d4c03d3"
 dependencies = [
  "itoa",
  "memchr",
@@ -431,9 +411,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
 
 [[package]]
 name = "syn"
-version = "2.0.100"
+version = "2.0.104"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
+checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -442,15 +422,15 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.19.1"
+version = "3.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
+checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
 dependencies = [
  "fastrand",
- "getrandom 0.3.2",
+ "getrandom 0.3.3",
  "once_cell",
- "rustix 1.0.5",
- "windows-sys",
+ "rustix",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -497,9 +477,9 @@ dependencies = [
 
 [[package]]
 name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+version = "0.11.1+wasi-snapshot-preview1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
 
 [[package]]
 name = "wasi"
@@ -511,24 +491,12 @@ dependencies = [
 ]
 
 [[package]]
-name = "which"
-version = "7.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2774c861e1f072b3aadc02f8ba886c26ad6321567ecc294c935434cad06f1283"
-dependencies = [
- "either",
- "env_home",
- "rustix 0.38.44",
- "winsafe",
-]
-
-[[package]]
 name = "winapi-util"
 version = "0.1.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
 dependencies = [
- "windows-sys",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -537,7 +505,16 @@ version = "0.59.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets 0.53.2",
 ]
 
 [[package]]
@@ -546,14 +523,30 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_gnullvm",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm 0.52.6",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.53.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef"
+dependencies = [
+ "windows_aarch64_gnullvm 0.53.0",
+ "windows_aarch64_msvc 0.53.0",
+ "windows_i686_gnu 0.53.0",
+ "windows_i686_gnullvm 0.53.0",
+ "windows_i686_msvc 0.53.0",
+ "windows_x86_64_gnu 0.53.0",
+ "windows_x86_64_gnullvm 0.53.0",
+ "windows_x86_64_msvc 0.53.0",
 ]
 
 [[package]]
@@ -563,52 +556,94 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
 [[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
+
+[[package]]
 name = "windows_aarch64_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
+
+[[package]]
 name = "windows_i686_gnu"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
 
 [[package]]
+name = "windows_i686_gnu"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
+
+[[package]]
 name = "windows_i686_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
 [[package]]
+name = "windows_i686_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
+
+[[package]]
 name = "windows_x86_64_gnu"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
 [[package]]
+name = "windows_x86_64_gnu"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
+
+[[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
 [[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
-name = "winsafe"
-version = "0.0.19"
+name = "windows_x86_64_msvc"
+version = "0.53.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
+checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
 
 [[package]]
 name = "wit-bindgen-rt"
diff --git a/src/tools/miri/miri-script/Cargo.toml b/src/tools/miri/miri-script/Cargo.toml
index 9240788d6bc..b3f82cd1d50 100644
--- a/src/tools/miri/miri-script/Cargo.toml
+++ b/src/tools/miri/miri-script/Cargo.toml
@@ -14,7 +14,6 @@ rust-version = "1.85"
 # This is needed to make this package build on stable when the parent package uses unstable cargo features.
 
 [dependencies]
-which = "7"
 walkdir = "2.3"
 itertools = "0.14"
 path_macro = "1.0"
diff --git a/src/tools/miri/miri-script/src/commands.rs b/src/tools/miri/miri-script/src/commands.rs
index e6ebdf54e38..9aaad9ca04a 100644
--- a/src/tools/miri/miri-script/src/commands.rs
+++ b/src/tools/miri/miri-script/src/commands.rs
@@ -198,9 +198,6 @@ impl Command {
     }
 
     fn toolchain(flags: Vec<String>) -> Result<()> {
-        // Make sure rustup-toolchain-install-master is installed.
-        which::which("rustup-toolchain-install-master")
-            .context("Please install rustup-toolchain-install-master by running 'cargo install rustup-toolchain-install-master'")?;
         let sh = Shell::new()?;
         sh.change_dir(miri_dir()?);
         let new_commit = sh.read_file("rust-version")?.trim().to_owned();
@@ -227,7 +224,9 @@ impl Command {
         // Install and setup new toolchain.
         cmd!(sh, "rustup toolchain uninstall miri").run()?;
 
-        cmd!(sh, "rustup-toolchain-install-master -n miri -c cargo -c rust-src -c rustc-dev -c llvm-tools -c rustfmt -c clippy {flags...} -- {new_commit}").run()?;
+        cmd!(sh, "rustup-toolchain-install-master -n miri -c cargo -c rust-src -c rustc-dev -c llvm-tools -c rustfmt -c clippy {flags...} -- {new_commit}")
+            .run()
+            .context("Failed to run rustup-toolchain-install-master. If it is not installed, run 'cargo install rustup-toolchain-install-master'.")?;
         cmd!(sh, "rustup override set miri").run()?;
         // Cleanup.
         cmd!(sh, "cargo clean").run()?;
diff --git a/src/tools/miri/miri-script/src/main.rs b/src/tools/miri/miri-script/src/main.rs
index 673d658cf1d..e41df662ca2 100644
--- a/src/tools/miri/miri-script/src/main.rs
+++ b/src/tools/miri/miri-script/src/main.rs
@@ -75,7 +75,7 @@ pub enum Command {
     ///
     /// Also respects MIRIFLAGS environment variable.
     Run {
-        /// Build the program with the dependencies declared in `test_dependencies/Cargo.toml`.
+        /// Build the program with the dependencies declared in `tests/deps/Cargo.toml`.
         #[arg(long)]
         dep: bool,
         /// Show build progress.
diff --git a/src/tools/miri/miri-script/src/util.rs b/src/tools/miri/miri-script/src/util.rs
index c100cf195ba..6121096f823 100644
--- a/src/tools/miri/miri-script/src/util.rs
+++ b/src/tools/miri/miri-script/src/util.rs
@@ -38,6 +38,8 @@ pub struct MiriEnv {
     pub miri_dir: PathBuf,
     /// active_toolchain is passed as `+toolchain` argument to cargo/rustc invocations.
     toolchain: String,
+    /// The cargo binary to use.
+    cargo_bin: String,
     /// Extra flags to pass to cargo.
     cargo_extra_flags: Vec<String>,
     /// The rustc sysroot
@@ -106,6 +108,9 @@ impl MiriEnv {
             sh.set_var("PATH", new_path);
         }
 
+        // Get the cargo binary to use, if one is set.
+        let cargo_bin = std::env::var("CARGO").unwrap_or_else(|_| "cargo".to_string());
+
         // Get extra flags for cargo.
         let cargo_extra_flags = std::env::var("CARGO_EXTRA_FLAGS").unwrap_or_default();
         let mut cargo_extra_flags = flagsplit(&cargo_extra_flags);
@@ -119,7 +124,7 @@ impl MiriEnv {
         // Also set `-Zroot-dir` for cargo, to print diagnostics relative to the miri dir.
         cargo_extra_flags.push(format!("-Zroot-dir={}", miri_dir.display()));
 
-        Ok(MiriEnv { miri_dir, toolchain, sh, sysroot, cargo_extra_flags, libdir })
+        Ok(MiriEnv { miri_dir, toolchain, sh, sysroot, cargo_bin, cargo_extra_flags, libdir })
     }
 
     /// Make sure the `features` you pass here exist for the specified `crate_dir`. For example, the
@@ -130,12 +135,12 @@ impl MiriEnv {
         cmd: &str,
         features: &[String],
     ) -> Cmd<'_> {
-        let MiriEnv { toolchain, cargo_extra_flags, .. } = self;
+        let MiriEnv { toolchain, cargo_extra_flags, cargo_bin, .. } = self;
         let manifest_path = path!(self.miri_dir / crate_dir.as_ref() / "Cargo.toml");
         let features = features_to_args(features);
         cmd!(
             self.sh,
-            "cargo +{toolchain} {cmd} {cargo_extra_flags...} --manifest-path {manifest_path} {features...}"
+            "{cargo_bin} +{toolchain} {cmd} {cargo_extra_flags...} --manifest-path {manifest_path} {features...}"
         )
     }
 
@@ -147,12 +152,12 @@ impl MiriEnv {
         features: &[String],
         args: impl IntoIterator<Item = impl AsRef<OsStr>>,
     ) -> Result<()> {
-        let MiriEnv { sysroot, toolchain, cargo_extra_flags, .. } = self;
+        let MiriEnv { sysroot, toolchain, cargo_extra_flags, cargo_bin, .. } = self;
         let path = path!(self.miri_dir / crate_dir.as_ref());
         let features = features_to_args(features);
         // Install binaries to the miri toolchain's `sysroot` so they do not interact with other toolchains.
         // (Not using `cargo_cmd` as `install` is special and doesn't use `--manifest-path`.)
-        cmd!(self.sh, "cargo +{toolchain} install {cargo_extra_flags...} --path {path} --force --root {sysroot} {features...} {args...}").run()?;
+        cmd!(self.sh, "{cargo_bin} +{toolchain} install {cargo_extra_flags...} --path {path} --force --root {sysroot} {features...} {args...}").run()?;
         Ok(())
     }
 
diff --git a/src/tools/miri/rust-version b/src/tools/miri/rust-version
index 67f27e7aa2c..d734ec333a5 100644
--- a/src/tools/miri/rust-version
+++ b/src/tools/miri/rust-version
@@ -1 +1 @@
-7f2065a4bae1faed5bab928c670964eafbf43b55
+6707bf0f59485cf054ac1095725df43220e4be20
diff --git a/src/tools/miri/src/alloc/alloc_bytes.rs b/src/tools/miri/src/alloc/alloc_bytes.rs
index 2a253952b27..5d00d3eafcb 100644
--- a/src/tools/miri/src/alloc/alloc_bytes.rs
+++ b/src/tools/miri/src/alloc/alloc_bytes.rs
@@ -1,20 +1,18 @@
 use std::alloc::Layout;
 use std::borrow::Cow;
+use std::cell::RefCell;
+use std::rc::Rc;
 use std::{alloc, slice};
-#[cfg(target_os = "linux")]
-use std::{cell::RefCell, rc::Rc};
 
 use rustc_abi::{Align, Size};
 use rustc_middle::mir::interpret::AllocBytes;
 
-#[cfg(target_os = "linux")]
 use crate::alloc::isolated_alloc::IsolatedAlloc;
 use crate::helpers::ToU64 as _;
 
 #[derive(Clone, Debug)]
 pub enum MiriAllocParams {
     Global,
-    #[cfg(target_os = "linux")]
     Isolated(Rc<RefCell<IsolatedAlloc>>),
 }
 
@@ -56,7 +54,6 @@ impl Drop for MiriAllocBytes {
         unsafe {
             match self.params.clone() {
                 MiriAllocParams::Global => alloc::dealloc(self.ptr, alloc_layout),
-                #[cfg(target_os = "linux")]
                 MiriAllocParams::Isolated(alloc) =>
                     alloc.borrow_mut().dealloc(self.ptr, alloc_layout),
             }
@@ -123,7 +120,6 @@ impl AllocBytes for MiriAllocBytes {
         let alloc_fn = |layout, params: &MiriAllocParams| unsafe {
             match params {
                 MiriAllocParams::Global => alloc::alloc(layout),
-                #[cfg(target_os = "linux")]
                 MiriAllocParams::Isolated(alloc) => alloc.borrow_mut().alloc(layout),
             }
         };
@@ -144,7 +140,6 @@ impl AllocBytes for MiriAllocBytes {
         let alloc_fn = |layout, params: &MiriAllocParams| unsafe {
             match params {
                 MiriAllocParams::Global => alloc::alloc_zeroed(layout),
-                #[cfg(target_os = "linux")]
                 MiriAllocParams::Isolated(alloc) => alloc.borrow_mut().alloc_zeroed(layout),
             }
         };
diff --git a/src/tools/miri/src/alloc/isolated_alloc.rs b/src/tools/miri/src/alloc/isolated_alloc.rs
index 7b2f1a3eebf..1745727b16b 100644
--- a/src/tools/miri/src/alloc/isolated_alloc.rs
+++ b/src/tools/miri/src/alloc/isolated_alloc.rs
@@ -1,7 +1,6 @@
 use std::alloc::Layout;
 use std::ptr::NonNull;
 
-use nix::sys::mman;
 use rustc_index::bit_set::DenseBitSet;
 
 /// How many bytes of memory each bit in the bitset represents.
@@ -44,6 +43,10 @@ impl IsolatedAlloc {
         }
     }
 
+    pub fn page_size(&self) -> usize {
+        self.page_size
+    }
+
     /// For simplicity, we serve small allocations in multiples of COMPRESSION_FACTOR
     /// bytes with at least that alignment.
     #[inline]
@@ -302,50 +305,11 @@ impl IsolatedAlloc {
         }
     }
 
-    /// Returns a list of page addresses managed by the allocator.
-    pub fn pages(&self) -> impl Iterator<Item = usize> {
-        let pages = self.page_ptrs.iter().map(|p| p.expose_provenance().get());
-        pages.chain(self.huge_ptrs.iter().flat_map(|(ptr, size)| {
-            (0..size / self.page_size)
-                .map(|i| ptr.expose_provenance().get().strict_add(i * self.page_size))
-        }))
-    }
-
-    /// Protects all owned memory as `PROT_NONE`, preventing accesses.
-    ///
-    /// SAFETY: Accessing memory after this point will result in a segfault
-    /// unless it is first unprotected.
-    pub unsafe fn start_ffi(&mut self) -> Result<(), nix::errno::Errno> {
-        let prot = mman::ProtFlags::PROT_NONE;
-        unsafe { self.mprotect(prot) }
-    }
-
-    /// Deprotects all owned memory by setting it to RW. Erroring here is very
-    /// likely unrecoverable, so it may panic if applying those permissions
-    /// fails.
-    pub fn end_ffi(&mut self) {
-        let prot = mman::ProtFlags::PROT_READ | mman::ProtFlags::PROT_WRITE;
-        unsafe {
-            self.mprotect(prot).unwrap();
-        }
-    }
-
-    /// Applies `prot` to every page managed by the allocator.
-    ///
-    /// SAFETY: Accessing memory in violation of the protection flags will
-    /// trigger a segfault.
-    unsafe fn mprotect(&mut self, prot: mman::ProtFlags) -> Result<(), nix::errno::Errno> {
-        for &pg in &self.page_ptrs {
-            unsafe {
-                mman::mprotect(pg.cast(), self.page_size, prot)?;
-            }
-        }
-        for &(hpg, size) in &self.huge_ptrs {
-            unsafe {
-                mman::mprotect(hpg.cast(), size.next_multiple_of(self.page_size), prot)?;
-            }
-        }
-        Ok(())
+    /// Returns a list of page ranges managed by the allocator, given in terms of pointers
+    /// and size (in bytes).
+    pub fn pages(&self) -> impl Iterator<Item = (NonNull<u8>, usize)> {
+        let pages = self.page_ptrs.iter().map(|&p| (p, self.page_size));
+        pages.chain(self.huge_ptrs.iter().copied())
     }
 }
 
diff --git a/src/tools/miri/src/alloc/mod.rs b/src/tools/miri/src/alloc/mod.rs
index 3be885920d2..35158f50a8f 100644
--- a/src/tools/miri/src/alloc/mod.rs
+++ b/src/tools/miri/src/alloc/mod.rs
@@ -1,5 +1,31 @@
 mod alloc_bytes;
-#[cfg(target_os = "linux")]
+#[cfg(all(unix, feature = "native-lib"))]
 pub mod isolated_alloc;
+#[cfg(not(all(unix, feature = "native-lib")))]
+pub mod isolated_alloc {
+    use std::alloc::Layout;
+
+    /// Stub allocator to avoid `cfg`s in the rest of Miri.
+    #[derive(Debug)]
+    pub struct IsolatedAlloc(!);
+
+    impl IsolatedAlloc {
+        pub fn new() -> Self {
+            unreachable!()
+        }
+
+        pub unsafe fn alloc(&mut self, _layout: Layout) -> *mut u8 {
+            match self.0 {}
+        }
+
+        pub unsafe fn alloc_zeroed(&mut self, _layout: Layout) -> *mut u8 {
+            match self.0 {}
+        }
+
+        pub unsafe fn dealloc(&mut self, _ptr: *mut u8, _layout: Layout) {
+            match self.0 {}
+        }
+    }
+}
 
 pub use self::alloc_bytes::{MiriAllocBytes, MiriAllocParams};
diff --git a/src/tools/miri/src/alloc_addresses/mod.rs b/src/tools/miri/src/alloc_addresses/mod.rs
index 10339928ac2..334503d2994 100644
--- a/src/tools/miri/src/alloc_addresses/mod.rs
+++ b/src/tools/miri/src/alloc_addresses/mod.rs
@@ -116,14 +116,6 @@ trait EvalContextExtPriv<'tcx>: crate::MiriInterpCxExt<'tcx> {
         let this = self.eval_context_ref();
         let info = this.get_alloc_info(alloc_id);
 
-        // Miri's address assignment leaks state across thread boundaries, which is incompatible
-        // with GenMC execution. So we instead let GenMC assign addresses to allocations.
-        if let Some(genmc_ctx) = this.machine.data_race.as_genmc_ref() {
-            let addr = genmc_ctx.handle_alloc(&this.machine, info.size, info.align, memory_kind)?;
-            return interp_ok(addr);
-        }
-
-        let mut rng = this.machine.rng.borrow_mut();
         // This is either called immediately after allocation (and then cached), or when
         // adjusting `tcx` pointers (which never get freed). So assert that we are looking
         // at a live allocation. This also ensures that we never re-assign an address to an
@@ -131,6 +123,19 @@ trait EvalContextExtPriv<'tcx>: crate::MiriInterpCxExt<'tcx> {
         // information was removed.
         assert!(!matches!(info.kind, AllocKind::Dead));
 
+        // TypeId allocations always have a "base address" of 0 (i.e., the relative offset is the
+        // hash fragment and therefore equal to the actual integer value).
+        if matches!(info.kind, AllocKind::TypeId) {
+            return interp_ok(0);
+        }
+
+        // Miri's address assignment leaks state across thread boundaries, which is incompatible
+        // with GenMC execution. So we instead let GenMC assign addresses to allocations.
+        if let Some(genmc_ctx) = this.machine.data_race.as_genmc_ref() {
+            let addr = genmc_ctx.handle_alloc(&this.machine, info.size, info.align, memory_kind)?;
+            return interp_ok(addr);
+        }
+
         // This allocation does not have a base address yet, pick or reuse one.
         if !this.machine.native_lib.is_empty() {
             // In native lib mode, we use the "real" address of the bytes for this allocation.
@@ -157,7 +162,7 @@ trait EvalContextExtPriv<'tcx>: crate::MiriInterpCxExt<'tcx> {
                         this.get_alloc_bytes_unchecked_raw(alloc_id)?
                     }
                 }
-                AllocKind::Function | AllocKind::Virtual => {
+                AllocKind::Function | AllocKind::VTable => {
                     // Allocate some dummy memory to get a unique address for this function/vtable.
                     let alloc_bytes = MiriAllocBytes::from_bytes(
                         &[0u8; 1],
@@ -169,12 +174,13 @@ trait EvalContextExtPriv<'tcx>: crate::MiriInterpCxExt<'tcx> {
                     std::mem::forget(alloc_bytes);
                     ptr
                 }
-                AllocKind::Dead => unreachable!(),
+                AllocKind::TypeId | AllocKind::Dead => unreachable!(),
             };
             // We don't have to expose this pointer yet, we do that in `prepare_for_native_call`.
             return interp_ok(base_ptr.addr().to_u64());
         }
         // We are not in native lib mode, so we control the addresses ourselves.
+        let mut rng = this.machine.rng.borrow_mut();
         if let Some((reuse_addr, clock)) = global_state.reuse.take_addr(
             &mut *rng,
             info.size,
@@ -295,21 +301,25 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
                 // Store address in cache.
                 global_state.base_addr.try_insert(alloc_id, base_addr).unwrap();
 
-                // Also maintain the opposite mapping in `int_to_ptr_map`, ensuring we keep it sorted.
-                // We have a fast-path for the common case that this address is bigger than all previous ones.
-                let pos = if global_state
-                    .int_to_ptr_map
-                    .last()
-                    .is_some_and(|(last_addr, _)| *last_addr < base_addr)
-                {
-                    global_state.int_to_ptr_map.len()
-                } else {
-                    global_state
+                // Also maintain the opposite mapping in `int_to_ptr_map`, ensuring we keep it
+                // sorted. We have a fast-path for the common case that this address is bigger than
+                // all previous ones. We skip this for allocations at address 0; those can't be
+                // real, they must be TypeId "fake allocations".
+                if base_addr != 0 {
+                    let pos = if global_state
                         .int_to_ptr_map
-                        .binary_search_by_key(&base_addr, |(addr, _)| *addr)
-                        .unwrap_err()
-                };
-                global_state.int_to_ptr_map.insert(pos, (base_addr, alloc_id));
+                        .last()
+                        .is_some_and(|(last_addr, _)| *last_addr < base_addr)
+                    {
+                        global_state.int_to_ptr_map.len()
+                    } else {
+                        global_state
+                            .int_to_ptr_map
+                            .binary_search_by_key(&base_addr, |(addr, _)| *addr)
+                            .unwrap_err()
+                    };
+                    global_state.int_to_ptr_map.insert(pos, (base_addr, alloc_id));
+                }
 
                 interp_ok(base_addr)
             }
diff --git a/src/tools/miri/src/bin/miri.rs b/src/tools/miri/src/bin/miri.rs
index 61cebedf081..89fa980ff64 100644
--- a/src/tools/miri/src/bin/miri.rs
+++ b/src/tools/miri/src/bin/miri.rs
@@ -335,9 +335,10 @@ impl rustc_driver::Callbacks for MiriBeRustCompilerCalls {
 fn exit(exit_code: i32) -> ! {
     // Drop the tracing guard before exiting, so tracing calls are flushed correctly.
     deinit_loggers();
-    // Make sure the supervisor knows about the code code.
-    #[cfg(target_os = "linux")]
+    // Make sure the supervisor knows about the exit code.
+    #[cfg(all(unix, feature = "native-lib"))]
     miri::native_lib::register_retcode_sv(exit_code);
+    // Actually exit.
     std::process::exit(exit_code);
 }
 
@@ -561,6 +562,8 @@ fn main() {
             miri_config.force_intrinsic_fallback = true;
         } else if arg == "-Zmiri-deterministic-floats" {
             miri_config.float_nondet = false;
+        } else if arg == "-Zmiri-no-extra-rounding-error" {
+            miri_config.float_rounding_error = false;
         } else if arg == "-Zmiri-strict-provenance" {
             miri_config.provenance_mode = ProvenanceMode::Strict;
         } else if arg == "-Zmiri-permissive-provenance" {
@@ -754,7 +757,7 @@ fn main() {
     debug!("crate arguments: {:?}", miri_config.args);
     if !miri_config.native_lib.is_empty() && miri_config.native_lib_enable_tracing {
         // SAFETY: No other threads are running
-        #[cfg(target_os = "linux")]
+        #[cfg(all(unix, feature = "native-lib"))]
         if unsafe { miri::native_lib::init_sv() }.is_err() {
             eprintln!(
                 "warning: The native-lib tracer could not be started. Is this an x86 Linux system, and does Miri have permissions to ptrace?\n\
diff --git a/src/tools/miri/src/borrow_tracker/stacked_borrows/mod.rs b/src/tools/miri/src/borrow_tracker/stacked_borrows/mod.rs
index e834fdffdd1..2977efaae04 100644
--- a/src/tools/miri/src/borrow_tracker/stacked_borrows/mod.rs
+++ b/src/tools/miri/src/borrow_tracker/stacked_borrows/mod.rs
@@ -650,7 +650,7 @@ trait EvalContextPrivExt<'tcx, 'ecx>: crate::MiriInterpCxExt<'tcx> {
                         dcx.log_protector();
                     }
                 },
-                AllocKind::Function | AllocKind::Virtual | AllocKind::Dead => {
+                AllocKind::Function | AllocKind::VTable | AllocKind::TypeId | AllocKind::Dead => {
                     // No stacked borrows on these allocations.
                 }
             }
@@ -1021,7 +1021,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
                 trace!("Stacked Borrows tag {tag:?} exposed in {alloc_id:?}");
                 alloc_extra.borrow_tracker_sb().borrow_mut().exposed_tags.insert(tag);
             }
-            AllocKind::Function | AllocKind::Virtual | AllocKind::Dead => {
+            AllocKind::Function | AllocKind::VTable | AllocKind::TypeId | AllocKind::Dead => {
                 // No stacked borrows on these allocations.
             }
         }
diff --git a/src/tools/miri/src/borrow_tracker/tree_borrows/mod.rs b/src/tools/miri/src/borrow_tracker/tree_borrows/mod.rs
index aa92f8a8c30..ad2a67160f4 100644
--- a/src/tools/miri/src/borrow_tracker/tree_borrows/mod.rs
+++ b/src/tools/miri/src/borrow_tracker/tree_borrows/mod.rs
@@ -673,7 +673,7 @@ pub trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
                 trace!("Tree Borrows tag {tag:?} exposed in {alloc_id:?}");
                 alloc_extra.borrow_tracker_tb().borrow_mut().expose_tag(tag);
             }
-            AllocKind::Function | AllocKind::Virtual | AllocKind::Dead => {
+            AllocKind::Function | AllocKind::VTable | AllocKind::TypeId | AllocKind::Dead => {
                 // No tree borrows on these allocations.
             }
         }
diff --git a/src/tools/miri/src/eval.rs b/src/tools/miri/src/eval.rs
index be6404f64e8..3c80e60b772 100644
--- a/src/tools/miri/src/eval.rs
+++ b/src/tools/miri/src/eval.rs
@@ -170,6 +170,8 @@ pub struct MiriConfig {
     pub force_intrinsic_fallback: bool,
     /// Whether floating-point operations can behave non-deterministically.
     pub float_nondet: bool,
+    /// Whether floating-point operations can have a non-deterministic rounding error.
+    pub float_rounding_error: bool,
 }
 
 impl Default for MiriConfig {
@@ -211,6 +213,7 @@ impl Default for MiriConfig {
             fixed_scheduling: false,
             force_intrinsic_fallback: false,
             float_nondet: true,
+            float_rounding_error: true,
         }
     }
 }
diff --git a/src/tools/miri/src/lib.rs b/src/tools/miri/src/lib.rs
index a591d21071d..ae70257653c 100644
--- a/src/tools/miri/src/lib.rs
+++ b/src/tools/miri/src/lib.rs
@@ -1,3 +1,4 @@
+#![feature(abort_unwind)]
 #![feature(cfg_select)]
 #![feature(rustc_private)]
 #![feature(float_gamma)]
@@ -97,7 +98,7 @@ pub use rustc_const_eval::interpret::{self, AllocMap, Provenance as _};
 use rustc_middle::{bug, span_bug};
 use tracing::{info, trace};
 
-#[cfg(target_os = "linux")]
+#[cfg(all(unix, feature = "native-lib"))]
 pub mod native_lib {
     pub use crate::shims::{init_sv, register_retcode_sv};
 }
diff --git a/src/tools/miri/src/machine.rs b/src/tools/miri/src/machine.rs
index f309e34c75b..ce33c870b4b 100644
--- a/src/tools/miri/src/machine.rs
+++ b/src/tools/miri/src/machine.rs
@@ -530,7 +530,6 @@ pub struct MiriMachine<'tcx> {
     pub(crate) rng: RefCell<StdRng>,
 
     /// The allocator used for the machine's `AllocBytes` in native-libs mode.
-    #[cfg(target_os = "linux")]
     pub(crate) allocator: Option<Rc<RefCell<crate::alloc::isolated_alloc::IsolatedAlloc>>>,
 
     /// The allocation IDs to report when they are being allocated
@@ -554,9 +553,9 @@ pub struct MiriMachine<'tcx> {
     pub(crate) basic_block_count: u64,
 
     /// Handle of the optional shared object file for native functions.
-    #[cfg(unix)]
+    #[cfg(all(unix, feature = "native-lib"))]
     pub native_lib: Vec<(libloading::Library, std::path::PathBuf)>,
-    #[cfg(not(unix))]
+    #[cfg(not(all(unix, feature = "native-lib")))]
     pub native_lib: Vec<!>,
 
     /// Run a garbage collector for BorTags every N basic blocks.
@@ -603,7 +602,7 @@ pub struct MiriMachine<'tcx> {
     /// Remembers whether we already warned about an extern type with Stacked Borrows.
     pub(crate) sb_extern_type_warned: Cell<bool>,
     /// Remember whether we already warned about sharing memory with a native call.
-    #[cfg(unix)]
+    #[allow(unused)]
     pub(crate) native_call_mem_warned: Cell<bool>,
     /// Remembers which shims have already shown the warning about erroring in isolation.
     pub(crate) reject_in_isolation_warned: RefCell<FxHashSet<String>>,
@@ -618,6 +617,8 @@ pub struct MiriMachine<'tcx> {
 
     /// Whether floating-point operations can behave non-deterministically.
     pub float_nondet: bool,
+    /// Whether floating-point operations can have a non-deterministic rounding error.
+    pub float_rounding_error: bool,
 }
 
 impl<'tcx> MiriMachine<'tcx> {
@@ -718,7 +719,6 @@ impl<'tcx> MiriMachine<'tcx> {
             local_crates,
             extern_statics: FxHashMap::default(),
             rng: RefCell::new(rng),
-            #[cfg(target_os = "linux")]
             allocator: if !config.native_lib.is_empty() {
                 Some(Rc::new(RefCell::new(crate::alloc::isolated_alloc::IsolatedAlloc::new())))
             } else { None },
@@ -730,7 +730,7 @@ impl<'tcx> MiriMachine<'tcx> {
             report_progress: config.report_progress,
             basic_block_count: 0,
             monotonic_clock: MonotonicClock::new(config.isolated_op == IsolatedOp::Allow),
-            #[cfg(unix)]
+            #[cfg(all(unix, feature = "native-lib"))]
             native_lib: config.native_lib.iter().map(|lib_file_path| {
                 let host_triple = rustc_session::config::host_tuple();
                 let target_triple = tcx.sess.opts.target_triple.tuple();
@@ -752,9 +752,9 @@ impl<'tcx> MiriMachine<'tcx> {
                     lib_file_path.clone(),
                 )
             }).collect(),
-            #[cfg(not(unix))]
+            #[cfg(not(all(unix, feature = "native-lib")))]
             native_lib: config.native_lib.iter().map(|_| {
-                panic!("calling functions from native libraries via FFI is only supported on Unix")
+                panic!("calling functions from native libraries via FFI is not supported in this build of Miri")
             }).collect(),
             gc_interval: config.gc_interval,
             since_gc: 0,
@@ -771,13 +771,13 @@ impl<'tcx> MiriMachine<'tcx> {
             pthread_rwlock_sanity: Cell::new(false),
             pthread_condvar_sanity: Cell::new(false),
             sb_extern_type_warned: Cell::new(false),
-            #[cfg(unix)]
             native_call_mem_warned: Cell::new(false),
             reject_in_isolation_warned: Default::default(),
             int2ptr_warned: Default::default(),
             mangle_internal_symbol_cache: Default::default(),
             force_intrinsic_fallback: config.force_intrinsic_fallback,
             float_nondet: config.float_nondet,
+            float_rounding_error: config.float_rounding_error,
         }
     }
 
@@ -924,7 +924,6 @@ impl VisitProvenance for MiriMachine<'_> {
             backtrace_style: _,
             local_crates: _,
             rng: _,
-            #[cfg(target_os = "linux")]
             allocator: _,
             tracked_alloc_ids: _,
             track_alloc_accesses: _,
@@ -949,13 +948,13 @@ impl VisitProvenance for MiriMachine<'_> {
             pthread_rwlock_sanity: _,
             pthread_condvar_sanity: _,
             sb_extern_type_warned: _,
-            #[cfg(unix)]
             native_call_mem_warned: _,
             reject_in_isolation_warned: _,
             int2ptr_warned: _,
             mangle_internal_symbol_cache: _,
             force_intrinsic_fallback: _,
             float_nondet: _,
+            float_rounding_error: _,
         } = self;
 
         threads.visit_provenance(visit);
@@ -1817,13 +1816,10 @@ impl<'tcx> Machine<'tcx> for MiriMachine<'tcx> {
     fn get_default_alloc_params(&self) -> <Self::Bytes as AllocBytes>::AllocParams {
         use crate::alloc::MiriAllocParams;
 
-        #[cfg(target_os = "linux")]
         match &self.allocator {
             Some(alloc) => MiriAllocParams::Isolated(alloc.clone()),
             None => MiriAllocParams::Global,
         }
-        #[cfg(not(target_os = "linux"))]
-        MiriAllocParams::Global
     }
 
     fn enter_trace_span(span: impl FnOnce() -> tracing::Span) -> impl EnteredTraceSpan {
diff --git a/src/tools/miri/src/math.rs b/src/tools/miri/src/math.rs
index cf16a5676d6..e9e5a1070c9 100644
--- a/src/tools/miri/src/math.rs
+++ b/src/tools/miri/src/math.rs
@@ -15,7 +15,7 @@ pub(crate) fn apply_random_float_error<F: rustc_apfloat::Float>(
     val: F,
     err_scale: i32,
 ) -> F {
-    if !ecx.machine.float_nondet {
+    if !ecx.machine.float_nondet || !ecx.machine.float_rounding_error {
         return val;
     }
 
diff --git a/src/tools/miri/src/shims/foreign_items.rs b/src/tools/miri/src/shims/foreign_items.rs
index 9ddba8c2b48..94cda57658a 100644
--- a/src/tools/miri/src/shims/foreign_items.rs
+++ b/src/tools/miri/src/shims/foreign_items.rs
@@ -237,7 +237,7 @@ trait EvalContextExtPriv<'tcx>: crate::MiriInterpCxExt<'tcx> {
         let this = self.eval_context_mut();
 
         // First deal with any external C functions in linked .so file.
-        #[cfg(unix)]
+        #[cfg(all(unix, feature = "native-lib"))]
         if !this.machine.native_lib.is_empty() {
             use crate::shims::native_lib::EvalContextExt as _;
             // An Ok(false) here means that the function being called was not exported
diff --git a/src/tools/miri/src/shims/mod.rs b/src/tools/miri/src/shims/mod.rs
index 75540f6f150..2a7709829ee 100644
--- a/src/tools/miri/src/shims/mod.rs
+++ b/src/tools/miri/src/shims/mod.rs
@@ -4,7 +4,7 @@ mod aarch64;
 mod alloc;
 mod backtrace;
 mod files;
-#[cfg(unix)]
+#[cfg(all(unix, feature = "native-lib"))]
 mod native_lib;
 mod unix;
 mod wasi;
@@ -23,7 +23,7 @@ pub mod tls;
 pub mod unwind;
 
 pub use self::files::FdTable;
-#[cfg(target_os = "linux")]
+#[cfg(all(unix, feature = "native-lib"))]
 pub use self::native_lib::trace::{init_sv, register_retcode_sv};
 pub use self::unix::{DirTable, EpollInterestTable};
 
diff --git a/src/tools/miri/src/shims/native_lib/mod.rs b/src/tools/miri/src/shims/native_lib/mod.rs
index fb7b1df41a4..2827ed997a7 100644
--- a/src/tools/miri/src/shims/native_lib/mod.rs
+++ b/src/tools/miri/src/shims/native_lib/mod.rs
@@ -8,6 +8,7 @@ use rustc_abi::{BackendRepr, HasDataLayout, Size};
 use rustc_middle::mir::interpret::Pointer;
 use rustc_middle::ty::{self as ty, IntTy, UintTy};
 use rustc_span::Symbol;
+use serde::{Deserialize, Serialize};
 
 #[cfg_attr(
     not(all(
@@ -23,18 +24,14 @@ use crate::*;
 
 /// The final results of an FFI trace, containing every relevant event detected
 /// by the tracer.
-#[allow(dead_code)]
-#[cfg_attr(target_os = "linux", derive(serde::Serialize, serde::Deserialize))]
-#[derive(Debug)]
+#[derive(Serialize, Deserialize, Debug)]
 pub struct MemEvents {
     /// An list of memory accesses that occurred, in the order they occurred in.
     pub acc_events: Vec<AccessEvent>,
 }
 
 /// A single memory access.
-#[allow(dead_code)]
-#[cfg_attr(target_os = "linux", derive(serde::Serialize, serde::Deserialize))]
-#[derive(Clone, Debug)]
+#[derive(Serialize, Deserialize, Clone, Debug)]
 pub enum AccessEvent {
     /// A read occurred on this memory range.
     Read(AccessRange),
@@ -56,9 +53,7 @@ impl AccessEvent {
 }
 
 /// The memory touched by a given access.
-#[allow(dead_code)]
-#[cfg_attr(target_os = "linux", derive(serde::Serialize, serde::Deserialize))]
-#[derive(Clone, Debug)]
+#[derive(Serialize, Deserialize, Clone, Debug)]
 pub struct AccessRange {
     /// The base address in memory where an access occurred.
     pub addr: usize,
diff --git a/src/tools/miri/src/shims/native_lib/trace/child.rs b/src/tools/miri/src/shims/native_lib/trace/child.rs
index de26cb0fe55..b998ba822dd 100644
--- a/src/tools/miri/src/shims/native_lib/trace/child.rs
+++ b/src/tools/miri/src/shims/native_lib/trace/child.rs
@@ -1,8 +1,9 @@
 use std::cell::RefCell;
+use std::ptr::NonNull;
 use std::rc::Rc;
 
 use ipc_channel::ipc;
-use nix::sys::{ptrace, signal};
+use nix::sys::{mman, ptrace, signal};
 use nix::unistd;
 use rustc_const_eval::interpret::InterpResult;
 
@@ -44,6 +45,16 @@ impl Supervisor {
         SUPERVISOR.lock().unwrap().is_some()
     }
 
+    unsafe fn protect_pages(
+        pages: impl Iterator<Item = (NonNull<u8>, usize)>,
+        prot: mman::ProtFlags,
+    ) -> Result<(), nix::errno::Errno> {
+        for (pg, sz) in pages {
+            unsafe { mman::mprotect(pg.cast(), sz, prot)? };
+        }
+        Ok(())
+    }
+
     /// Performs an arbitrary FFI call, enabling tracing from the supervisor.
     /// As this locks the supervisor via a mutex, no other threads may enter FFI
     /// until this function returns.
@@ -60,47 +71,67 @@ impl Supervisor {
 
         // Get pointers to all the pages the supervisor must allow accesses in
         // and prepare the callback stack.
-        let page_ptrs = alloc.borrow().pages().collect();
+        let alloc = alloc.borrow();
+        let page_size = alloc.page_size();
+        let page_ptrs = alloc
+            .pages()
+            .flat_map(|(pg, sz)| {
+                // Convert (page, size) pair into list of pages.
+                let start = pg.expose_provenance().get();
+                (0..sz.strict_div(alloc.page_size()))
+                    .map(move |i| start.strict_add(i.strict_mul(page_size)))
+            })
+            .collect();
         let raw_stack_ptr: *mut [u8; CALLBACK_STACK_SIZE] =
             Box::leak(Box::new([0u8; CALLBACK_STACK_SIZE])).as_mut_ptr().cast();
         let stack_ptr = raw_stack_ptr.expose_provenance();
         let start_info = StartFfiInfo { page_ptrs, stack_ptr };
 
-        // SAFETY: We do not access machine memory past this point until the
-        // supervisor is ready to allow it.
-        unsafe {
-            if alloc.borrow_mut().start_ffi().is_err() {
-                // Don't mess up unwinding by maybe leaving the memory partly protected
-                alloc.borrow_mut().end_ffi();
-                panic!("Cannot protect memory for FFI call!");
+        // Unwinding might be messed up due to partly protected memory, so let's abort if something
+        // breaks inside here.
+        let res = std::panic::abort_unwind(|| {
+            // SAFETY: We do not access machine memory past this point until the
+            // supervisor is ready to allow it.
+            // FIXME: this is sketchy, as technically the memory is still in the Rust Abstract Machine,
+            // and the compiler would be allowed to reorder accesses below this block...
+            unsafe {
+                Self::protect_pages(alloc.pages(), mman::ProtFlags::PROT_NONE).unwrap();
             }
-        }
 
-        // Send over the info.
-        // NB: if we do not wait to receive a blank confirmation response, it is
-        // possible that the supervisor is alerted of the SIGSTOP *before* it has
-        // actually received the start_info, thus deadlocking! This way, we can
-        // enforce an ordering for these events.
-        sv.message_tx.send(TraceRequest::StartFfi(start_info)).unwrap();
-        sv.confirm_rx.recv().unwrap();
-        // We need to be stopped for the supervisor to be able to make certain
-        // modifications to our memory - simply waiting on the recv() doesn't
-        // count.
-        signal::raise(signal::SIGSTOP).unwrap();
-
-        let res = f();
-
-        // We can't use IPC channels here to signal that FFI mode has ended,
-        // since they might allocate memory which could get us stuck in a SIGTRAP
-        // with no easy way out! While this could be worked around, it is much
-        // simpler and more robust to simply use the signals which are left for
-        // arbitrary usage. Since this will block until we are continued by the
-        // supervisor, we can assume past this point that everything is back to
-        // normal.
-        signal::raise(signal::SIGUSR1).unwrap();
-
-        // This is safe! It just sets memory to normal expected permissions.
-        alloc.borrow_mut().end_ffi();
+            // Send over the info.
+            // NB: if we do not wait to receive a blank confirmation response, it is
+            // possible that the supervisor is alerted of the SIGSTOP *before* it has
+            // actually received the start_info, thus deadlocking! This way, we can
+            // enforce an ordering for these events.
+            sv.message_tx.send(TraceRequest::StartFfi(start_info)).unwrap();
+            sv.confirm_rx.recv().unwrap();
+            // We need to be stopped for the supervisor to be able to make certain
+            // modifications to our memory - simply waiting on the recv() doesn't
+            // count.
+            signal::raise(signal::SIGSTOP).unwrap();
+
+            let res = f();
+
+            // We can't use IPC channels here to signal that FFI mode has ended,
+            // since they might allocate memory which could get us stuck in a SIGTRAP
+            // with no easy way out! While this could be worked around, it is much
+            // simpler and more robust to simply use the signals which are left for
+            // arbitrary usage. Since this will block until we are continued by the
+            // supervisor, we can assume past this point that everything is back to
+            // normal.
+            signal::raise(signal::SIGUSR1).unwrap();
+
+            // SAFETY: We set memory back to normal, so this is safe.
+            unsafe {
+                Self::protect_pages(
+                    alloc.pages(),
+                    mman::ProtFlags::PROT_READ | mman::ProtFlags::PROT_WRITE,
+                )
+                .unwrap();
+            }
+
+            res
+        });
 
         // SAFETY: Caller upholds that this pointer was allocated as a box with
         // this type.
diff --git a/src/tools/miri/src/shims/native_lib/trace/messages.rs b/src/tools/miri/src/shims/native_lib/trace/messages.rs
index 1f9df556b57..bef6cc1b2f3 100644
--- a/src/tools/miri/src/shims/native_lib/trace/messages.rs
+++ b/src/tools/miri/src/shims/native_lib/trace/messages.rs
@@ -45,8 +45,7 @@ pub enum TraceRequest {
 /// Information needed to begin tracing.
 #[derive(serde::Serialize, serde::Deserialize, Debug, Clone)]
 pub struct StartFfiInfo {
-    /// A vector of page addresses. These should have been automatically obtained
-    /// with `IsolatedAlloc::pages` and prepared with `IsolatedAlloc::start_ffi`.
+    /// A vector of page addresses that store the miri heap which is accessible from C.
     pub page_ptrs: Vec<usize>,
     /// The address of an allocation that can serve as a temporary stack.
     /// This should be a leaked `Box<[u8; CALLBACK_STACK_SIZE]>` cast to an int.
diff --git a/src/tools/miri/test_dependencies/Cargo.lock b/src/tools/miri/tests/deps/Cargo.lock
index 276c518e74f..4b783ebdc4e 100644
--- a/src/tools/miri/test_dependencies/Cargo.lock
+++ b/src/tools/miri/tests/deps/Cargo.lock
@@ -13,15 +13,15 @@ dependencies = [
 
 [[package]]
 name = "adler2"
-version = "2.0.0"
+version = "2.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
 
 [[package]]
 name = "backtrace"
-version = "0.3.74"
+version = "0.3.75"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a"
+checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002"
 dependencies = [
  "addr2line",
  "cfg-if",
@@ -29,20 +29,20 @@ dependencies = [
  "miniz_oxide",
  "object",
  "rustc-demangle",
- "windows-targets",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
 name = "bitflags"
-version = "2.9.0"
+version = "2.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd"
+checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967"
 
 [[package]]
 name = "bumpalo"
-version = "3.17.0"
+version = "3.19.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf"
+checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
 
 [[package]]
 name = "bytes"
@@ -52,18 +52,18 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
 
 [[package]]
 name = "cfg-if"
-version = "1.0.0"
+version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
 
 [[package]]
 name = "errno"
-version = "0.3.11"
+version = "0.3.13"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "976dd42dc7e85965fe702eb8164f21f450704bdde31faefd6471dba214cb594e"
+checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad"
 dependencies = [
  "libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
@@ -85,22 +85,22 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.15"
+version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
 dependencies = [
  "cfg-if",
  "js-sys",
  "libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
+ "wasi 0.11.1+wasi-snapshot-preview1",
  "wasm-bindgen",
 ]
 
 [[package]]
 name = "getrandom"
-version = "0.3.2"
+version = "0.3.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0"
+checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
 dependencies = [
  "cfg-if",
  "libc",
@@ -116,9 +116,20 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f"
 
 [[package]]
 name = "hermit-abi"
-version = "0.3.9"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
+
+[[package]]
+name = "io-uring"
+version = "0.7.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
+checksum = "b86e202f00093dcba4275d4636b93ef9dd75d025ae560d2521b45ea28ab49013"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "libc",
+]
 
 [[package]]
 name = "js-sys"
@@ -132,15 +143,15 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.171"
+version = "0.2.174"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
+checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.9.3"
+version = "0.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe7db12097d22ec582439daf8618b8fdd1a7bef6270e9af3b1ebcd30893cf413"
+checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12"
 
 [[package]]
 name = "log"
@@ -150,28 +161,28 @@ checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
 
 [[package]]
 name = "memchr"
-version = "2.7.4"
+version = "2.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
+checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.8.8"
+version = "0.8.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a"
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
 dependencies = [
  "adler2",
 ]
 
 [[package]]
 name = "mio"
-version = "1.0.3"
+version = "1.0.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd"
+checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
 dependencies = [
  "libc",
- "wasi 0.11.0+wasi-snapshot-preview1",
- "windows-sys 0.52.0",
+ "wasi 0.11.1+wasi-snapshot-preview1",
+ "windows-sys 0.59.0",
 ]
 
 [[package]]
@@ -180,21 +191,21 @@ version = "0.1.0"
 dependencies = [
  "cfg-if",
  "getrandom 0.1.16",
- "getrandom 0.2.15",
- "getrandom 0.3.2",
+ "getrandom 0.2.16",
+ "getrandom 0.3.3",
  "libc",
  "num_cpus",
  "page_size",
  "tempfile",
  "tokio",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
 name = "num_cpus"
-version = "1.16.0"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
 dependencies = [
  "hermit-abi",
  "libc",
@@ -233,9 +244,9 @@ checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.94"
+version = "1.0.95"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
+checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
 dependencies = [
  "unicode-ident",
 ]
@@ -251,43 +262,49 @@ dependencies = [
 
 [[package]]
 name = "r-efi"
-version = "5.2.0"
+version = "5.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
 
 [[package]]
 name = "rustc-demangle"
-version = "0.1.24"
+version = "0.1.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
+checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f"
 
 [[package]]
 name = "rustix"
-version = "1.0.5"
+version = "1.0.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d97817398dd4bb2e6da002002db259209759911da105da92bec29ccb12cf58bf"
+checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8"
 dependencies = [
  "bitflags",
  "errno",
  "libc",
  "linux-raw-sys",
- "windows-sys 0.59.0",
+ "windows-sys 0.60.2",
 ]
 
 [[package]]
 name = "signal-hook-registry"
-version = "1.4.2"
+version = "1.4.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1"
+checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410"
 dependencies = [
  "libc",
 ]
 
 [[package]]
+name = "slab"
+version = "0.4.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d"
+
+[[package]]
 name = "socket2"
-version = "0.5.9"
+version = "0.5.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef"
+checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
 dependencies = [
  "libc",
  "windows-sys 0.52.0",
@@ -295,9 +312,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.100"
+version = "2.0.104"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
+checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -306,12 +323,12 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.19.1"
+version = "3.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf"
+checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
 dependencies = [
  "fastrand",
- "getrandom 0.3.2",
+ "getrandom 0.3.3",
  "once_cell",
  "rustix",
  "windows-sys 0.59.0",
@@ -319,16 +336,18 @@ dependencies = [
 
 [[package]]
 name = "tokio"
-version = "1.44.2"
+version = "1.46.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48"
+checksum = "0cc3a2344dafbe23a245241fe8b09735b521110d30fcefbbd5feb1797ca35d17"
 dependencies = [
  "backtrace",
  "bytes",
+ "io-uring",
  "libc",
  "mio",
  "pin-project-lite",
  "signal-hook-registry",
+ "slab",
  "socket2",
  "tokio-macros",
  "windows-sys 0.52.0",
@@ -359,9 +378,9 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
 
 [[package]]
 name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+version = "0.11.1+wasi-snapshot-preview1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
 
 [[package]]
 name = "wasi"
@@ -457,7 +476,7 @@ version = "0.52.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.52.6",
 ]
 
 [[package]]
@@ -466,7 +485,16 @@ version = "0.59.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets 0.53.2",
 ]
 
 [[package]]
@@ -475,14 +503,30 @@ version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_gnullvm",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm 0.52.6",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.53.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef"
+dependencies = [
+ "windows_aarch64_gnullvm 0.53.0",
+ "windows_aarch64_msvc 0.53.0",
+ "windows_i686_gnu 0.53.0",
+ "windows_i686_gnullvm 0.53.0",
+ "windows_i686_msvc 0.53.0",
+ "windows_x86_64_gnu 0.53.0",
+ "windows_x86_64_gnullvm 0.53.0",
+ "windows_x86_64_msvc 0.53.0",
 ]
 
 [[package]]
@@ -492,48 +536,96 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
 
 [[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764"
+
+[[package]]
 name = "windows_aarch64_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c"
+
+[[package]]
 name = "windows_i686_gnu"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
 
 [[package]]
+name = "windows_i686_gnu"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3"
+
+[[package]]
 name = "windows_i686_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
 
 [[package]]
+name = "windows_i686_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d"
+
+[[package]]
 name = "windows_x86_64_gnu"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
 
 [[package]]
+name = "windows_x86_64_gnu"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba"
+
+[[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
 
 [[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.52.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 
 [[package]]
+name = "windows_x86_64_msvc"
+version = "0.53.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
+
+[[package]]
 name = "wit-bindgen-rt"
 version = "0.39.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/src/tools/miri/test_dependencies/Cargo.toml b/src/tools/miri/tests/deps/Cargo.toml
index 35555723f5d..d85723f0915 100644
--- a/src/tools/miri/test_dependencies/Cargo.toml
+++ b/src/tools/miri/tests/deps/Cargo.toml
@@ -25,7 +25,7 @@ page_size = "0.6"
 tokio = { version = "1", features = ["macros", "rt-multi-thread", "time", "net", "fs", "sync", "signal", "io-util"] }
 
 [target.'cfg(windows)'.dependencies]
-windows-sys = { version = "0.59", features = [
+windows-sys = { version = "0.60", features = [
     "Win32_Foundation",
     "Win32_System_Threading",
     "Win32_Storage_FileSystem",
diff --git a/src/tools/miri/test_dependencies/src/main.rs b/src/tools/miri/tests/deps/src/main.rs
index f328e4d9d04..f328e4d9d04 100644
--- a/src/tools/miri/test_dependencies/src/main.rs
+++ b/src/tools/miri/tests/deps/src/main.rs
diff --git a/src/tools/miri/tests/pass/fn_align.rs b/src/tools/miri/tests/pass/fn_align.rs
index 28f92995880..9752d033458 100644
--- a/src/tools/miri/tests/pass/fn_align.rs
+++ b/src/tools/miri/tests/pass/fn_align.rs
@@ -1,15 +1,19 @@
 //@compile-flags: -Zmin-function-alignment=8
+
+// FIXME(rust-lang/rust#82232, rust-lang/rust#143834): temporarily renamed to mitigate `#[align]`
+// nameres ambiguity
+#![feature(rustc_attrs)]
 #![feature(fn_align)]
 
 // When a function uses `align(N)`, the function address should be a multiple of `N`.
 
-#[align(256)]
+#[rustc_align(256)]
 fn foo() {}
 
-#[align(16)]
+#[rustc_align(16)]
 fn bar() {}
 
-#[align(4)]
+#[rustc_align(4)]
 fn baz() {}
 
 fn main() {
diff --git a/src/tools/miri/tests/pass/intrinsics/portable-simd.rs b/src/tools/miri/tests/pass/intrinsics/portable-simd.rs
index 726d4c01cc3..e2cd08733af 100644
--- a/src/tools/miri/tests/pass/intrinsics/portable-simd.rs
+++ b/src/tools/miri/tests/pass/intrinsics/portable-simd.rs
@@ -349,12 +349,15 @@ fn simd_mask() {
     // Non-power-of-2 multi-byte mask.
     #[repr(simd, packed)]
     #[allow(non_camel_case_types)]
-    #[derive(Copy, Clone, Debug, PartialEq)]
+    #[derive(Copy, Clone)]
     struct i32x10([i32; 10]);
     impl i32x10 {
         fn splat(x: i32) -> Self {
             Self([x; 10])
         }
+        fn into_array(self) -> [i32; 10] {
+            unsafe { std::mem::transmute(self) }
+        }
     }
     unsafe {
         let mask = i32x10([!0, !0, 0, !0, 0, 0, !0, 0, !0, 0]);
@@ -377,19 +380,22 @@ fn simd_mask() {
             i32x10::splat(!0), // yes
             i32x10::splat(0),  // no
         );
-        assert_eq!(selected1, mask);
-        assert_eq!(selected2, mask);
+        assert_eq!(selected1.into_array(), mask.into_array());
+        assert_eq!(selected2.into_array(), mask.into_array());
     }
 
     // Test for a mask where the next multiple of 8 is not a power of two.
     #[repr(simd, packed)]
     #[allow(non_camel_case_types)]
-    #[derive(Copy, Clone, Debug, PartialEq)]
+    #[derive(Copy, Clone)]
     struct i32x20([i32; 20]);
     impl i32x20 {
         fn splat(x: i32) -> Self {
             Self([x; 20])
         }
+        fn into_array(self) -> [i32; 20] {
+            unsafe { std::mem::transmute(self) }
+        }
     }
     unsafe {
         let mask = i32x20([!0, !0, 0, !0, 0, 0, !0, 0, !0, 0, 0, 0, 0, !0, !0, !0, !0, !0, !0, !0]);
@@ -419,8 +425,8 @@ fn simd_mask() {
             i32x20::splat(!0), // yes
             i32x20::splat(0),  // no
         );
-        assert_eq!(selected1, mask);
-        assert_eq!(selected2, mask);
+        assert_eq!(selected1.into_array(), mask.into_array());
+        assert_eq!(selected2.into_array(), mask.into_array());
     }
 }
 
@@ -708,12 +714,12 @@ fn simd_ops_non_pow2() {
     let x = SimdPacked([1u32; 3]);
     let y = SimdPacked([2u32; 3]);
     let z = unsafe { intrinsics::simd_add(x, y) };
-    assert_eq!({ z.0 }, [3u32; 3]);
+    assert_eq!(unsafe { *(&raw const z).cast::<[u32; 3]>() }, [3u32; 3]);
 
     let x = SimdPadded([1u32; 3]);
     let y = SimdPadded([2u32; 3]);
     let z = unsafe { intrinsics::simd_add(x, y) };
-    assert_eq!(z.0, [3u32; 3]);
+    assert_eq!(unsafe { *(&raw const z).cast::<[u32; 3]>() }, [3u32; 3]);
 }
 
 fn main() {
diff --git a/src/tools/miri/tests/ui.rs b/src/tools/miri/tests/ui.rs
index 43f855d57dd..cb915b11b67 100644
--- a/src/tools/miri/tests/ui.rs
+++ b/src/tools/miri/tests/ui.rs
@@ -13,7 +13,8 @@ use ui_test::custom_flags::edition::Edition;
 use ui_test::dependencies::DependencyBuilder;
 use ui_test::per_test_config::TestConfig;
 use ui_test::spanned::Spanned;
-use ui_test::{CommandBuilder, Config, Format, Match, ignore_output_conflict, status_emitter};
+use ui_test::status_emitter::StatusEmitter;
+use ui_test::{CommandBuilder, Config, Match, ignore_output_conflict};
 
 #[derive(Copy, Clone, Debug)]
 enum Mode {
@@ -141,7 +142,7 @@ fn miri_config(
                     envs: vec![("RUSTFLAGS".into(), None)],
                     ..CommandBuilder::cargo()
                 },
-                crate_manifest_path: Path::new("test_dependencies").join("Cargo.toml"),
+                crate_manifest_path: Path::new("tests/deps").join("Cargo.toml"),
                 build_std: None,
                 bless_lockfile: bless,
             },
@@ -216,10 +217,7 @@ fn run_tests(
         // This could be used to overwrite the `Config` on a per-test basis.
         |_, _| {},
         // No GHA output as that would also show in the main rustc repo.
-        match args.format {
-            Format::Terse => status_emitter::Text::quiet(),
-            Format::Pretty => status_emitter::Text::verbose(),
-        },
+        Box::<dyn StatusEmitter>::from(args.format),
     )
 }
 
@@ -335,7 +333,7 @@ fn main() -> Result<()> {
     ui(Mode::Panic, "tests/panic", &target, WithDependencies, tmpdir.path())?;
     ui(Mode::Fail, "tests/fail", &target, WithoutDependencies, tmpdir.path())?;
     ui(Mode::Fail, "tests/fail-dep", &target, WithDependencies, tmpdir.path())?;
-    if cfg!(unix) && target == host {
+    if cfg!(all(unix, feature = "native-lib")) && target == host {
         ui(Mode::Pass, "tests/native-lib/pass", &target, WithoutDependencies, tmpdir.path())?;
         ui(Mode::Fail, "tests/native-lib/fail", &target, WithoutDependencies, tmpdir.path())?;
     }
diff --git a/src/tools/miri/triagebot.toml b/src/tools/miri/triagebot.toml
index 60e80c3f673..a0ce9f80024 100644
--- a/src/tools/miri/triagebot.toml
+++ b/src/tools/miri/triagebot.toml
@@ -16,7 +16,13 @@ allow-unauthenticated = [
 # Enables assigning users to issues and PRs.
 [assign]
 warn_non_default_branch = true
-contributing_url = "https://github.com/rust-lang/miri/blob/master/CONTRIBUTING.md"
+contributing_url = "https://github.com/rust-lang/miri/blob/master/CONTRIBUTING.md#pr-review-process"
+[assign.custom_welcome_messages]
+welcome-message = "(unused)"
+welcome-message-no-reviewer = """
+Thank you for contributing to Miri!
+Please remember to not force-push to the PR branch except when you need to rebase due to a conflict or when the reviewer asks you for it.
+"""
 
 [no-merges]
 exclude_titles = ["Rustup"]
@@ -38,6 +44,12 @@ remove = []
 add = ["S-waiting-on-author"]
 unless = ["S-blocked", "S-waiting-on-team", "S-waiting-on-review"]
 
+[autolabel."S-waiting-on-review"]
+new_pr = true
+
+[autolabel."S-waiting-on-author"]
+new_draft = true
+
 # Automatically close and reopen PRs made by bots to run CI on them
 [bot-pull-requests]
 
diff --git a/src/tools/opt-dist/src/environment.rs b/src/tools/opt-dist/src/environment.rs
index d41dc80e6b2..2cae0785f33 100644
--- a/src/tools/opt-dist/src/environment.rs
+++ b/src/tools/opt-dist/src/environment.rs
@@ -28,6 +28,8 @@ pub struct Environment {
     run_tests: bool,
     fast_try_build: bool,
     build_llvm: bool,
+    #[builder(default)]
+    stage0_root: Option<Utf8PathBuf>,
 }
 
 impl Environment {
@@ -48,7 +50,7 @@ impl Environment {
     }
 
     pub fn build_artifacts(&self) -> Utf8PathBuf {
-        self.build_root().join("build").join(&self.host_tuple)
+        self.build_root().join(&self.host_tuple)
     }
 
     pub fn artifact_dir(&self) -> Utf8PathBuf {
@@ -56,17 +58,11 @@ impl Environment {
     }
 
     pub fn cargo_stage_0(&self) -> Utf8PathBuf {
-        self.build_artifacts()
-            .join("stage0")
-            .join("bin")
-            .join(format!("cargo{}", executable_extension()))
+        self.stage0().join("bin").join(format!("cargo{}", executable_extension()))
     }
 
     pub fn rustc_stage_0(&self) -> Utf8PathBuf {
-        self.build_artifacts()
-            .join("stage0")
-            .join("bin")
-            .join(format!("rustc{}", executable_extension()))
+        self.stage0().join("bin").join(format!("rustc{}", executable_extension()))
     }
 
     pub fn rustc_stage_2(&self) -> Utf8PathBuf {
@@ -116,6 +112,10 @@ impl Environment {
     pub fn build_llvm(&self) -> bool {
         self.build_llvm
     }
+
+    pub fn stage0(&self) -> Utf8PathBuf {
+        self.stage0_root.clone().unwrap_or_else(|| self.build_artifacts().join("stage0"))
+    }
 }
 
 /// What is the extension of binary executables on this platform?
diff --git a/src/tools/opt-dist/src/exec.rs b/src/tools/opt-dist/src/exec.rs
index 56eff2ca2a7..a8d4c93d160 100644
--- a/src/tools/opt-dist/src/exec.rs
+++ b/src/tools/opt-dist/src/exec.rs
@@ -99,7 +99,7 @@ pub struct Bootstrap {
 
 impl Bootstrap {
     pub fn build(env: &Environment) -> Self {
-        let metrics_path = env.build_root().join("build").join("metrics.json");
+        let metrics_path = env.build_root().join("metrics.json");
         let cmd = cmd(&[
             env.python_binary(),
             env.checkout_path().join("x.py").as_str(),
@@ -119,7 +119,7 @@ impl Bootstrap {
     }
 
     pub fn dist(env: &Environment, dist_args: &[String]) -> Self {
-        let metrics_path = env.build_root().join("build").join("metrics.json");
+        let metrics_path = env.build_root().join("metrics.json");
         let args = dist_args.iter().map(|arg| arg.as_str()).collect::<Vec<_>>();
         let cmd = cmd(&args).env("RUST_BACKTRACE", "full");
         let mut cmd = add_shared_x_flags(env, cmd);
diff --git a/src/tools/opt-dist/src/main.rs b/src/tools/opt-dist/src/main.rs
index 7857f196626..19706b4a4f0 100644
--- a/src/tools/opt-dist/src/main.rs
+++ b/src/tools/opt-dist/src/main.rs
@@ -62,7 +62,7 @@ enum EnvironmentCmd {
         python: String,
 
         /// Directory where artifacts (like PGO profiles or rustc-perf) of this workflow
-        /// will be stored.
+        /// will be stored. Relative to `checkout_dir`
         #[arg(long, default_value = "opt-artifacts")]
         artifact_dir: Utf8PathBuf,
 
@@ -102,6 +102,15 @@ enum EnvironmentCmd {
         /// Will be LLVM built during the run?
         #[arg(long, default_value_t = true, action(clap::ArgAction::Set))]
         build_llvm: bool,
+
+        /// Set build artifacts dir. Relative to `checkout_dir`, should point to the directory set
+        /// in bootstrap.toml via `build.build-dir` option
+        #[arg(long, default_value = "build")]
+        build_dir: Utf8PathBuf,
+
+        /// Path to custom stage0 root
+        #[arg(long)]
+        stage0_root: Option<Utf8PathBuf>,
     },
     /// Perform an optimized build on Linux CI, from inside Docker.
     LinuxCi {
@@ -138,14 +147,16 @@ fn create_environment(args: Args) -> anyhow::Result<(Environment, Vec<String>)>
             shared,
             run_tests,
             build_llvm,
+            build_dir,
+            stage0_root,
         } => {
             let env = EnvironmentBuilder::default()
                 .host_tuple(target_triple)
                 .python_binary(python)
                 .checkout_dir(checkout_dir.clone())
                 .host_llvm_dir(llvm_dir)
-                .artifact_dir(artifact_dir)
-                .build_dir(checkout_dir)
+                .artifact_dir(checkout_dir.join(artifact_dir))
+                .build_dir(checkout_dir.join(build_dir))
                 .prebuilt_rustc_perf(rustc_perf_checkout_dir)
                 .shared_llvm(llvm_shared)
                 .use_bolt(use_bolt)
@@ -154,6 +165,7 @@ fn create_environment(args: Args) -> anyhow::Result<(Environment, Vec<String>)>
                 .run_tests(run_tests)
                 .fast_try_build(is_fast_try_build)
                 .build_llvm(build_llvm)
+                .stage0_root(stage0_root)
                 .build()?;
 
             (env, shared.build_args)
@@ -171,7 +183,7 @@ fn create_environment(args: Args) -> anyhow::Result<(Environment, Vec<String>)>
                 .checkout_dir(checkout_dir.clone())
                 .host_llvm_dir(Utf8PathBuf::from("/rustroot"))
                 .artifact_dir(Utf8PathBuf::from("/tmp/tmp-multistage/opt-artifacts"))
-                .build_dir(checkout_dir.join("obj"))
+                .build_dir(checkout_dir.join("obj").join("build"))
                 .shared_llvm(true)
                 // FIXME: Enable bolt for aarch64 once it's fixed upstream. Broken as of December 2024.
                 .use_bolt(!is_aarch64)
@@ -194,7 +206,7 @@ fn create_environment(args: Args) -> anyhow::Result<(Environment, Vec<String>)>
                 .checkout_dir(checkout_dir.clone())
                 .host_llvm_dir(checkout_dir.join("citools").join("clang-rust"))
                 .artifact_dir(checkout_dir.join("opt-artifacts"))
-                .build_dir(checkout_dir)
+                .build_dir(checkout_dir.join("build"))
                 .shared_llvm(false)
                 .use_bolt(false)
                 .skipped_tests(vec![])
diff --git a/src/tools/opt-dist/src/tests.rs b/src/tools/opt-dist/src/tests.rs
index 2d2aab86eda..c9a21fc6fb2 100644
--- a/src/tools/opt-dist/src/tests.rs
+++ b/src/tools/opt-dist/src/tests.rs
@@ -13,7 +13,7 @@ pub fn run_tests(env: &Environment) -> anyhow::Result<()> {
     // and then use that extracted rustc as a stage0 compiler.
     // Then we run a subset of tests using that compiler, to have a basic smoke test which checks
     // whether the optimization pipeline hasn't broken something.
-    let build_dir = env.build_root().join("build");
+    let build_dir = env.build_root();
     let dist_dir = build_dir.join("dist");
     let unpacked_dist_dir = build_dir.join("unpacked-dist");
     std::fs::create_dir_all(&unpacked_dist_dir)?;
@@ -100,8 +100,8 @@ llvm-config = "{llvm_config}"
             env.host_tuple(),
             "--stage",
             "0",
-            "tests/assembly",
-            "tests/codegen",
+            "tests/assembly-llvm",
+            "tests/codegen-llvm",
             "tests/codegen-units",
             "tests/incremental",
             "tests/mir-opt",
diff --git a/src/tools/run-make-support/src/external_deps/rustc.rs b/src/tools/run-make-support/src/external_deps/rustc.rs
index 1ea549ca7ea..08ba1388dc1 100644
--- a/src/tools/run-make-support/src/external_deps/rustc.rs
+++ b/src/tools/run-make-support/src/external_deps/rustc.rs
@@ -52,13 +52,20 @@ impl Rustc {
     // `rustc` invocation constructor methods
 
     /// Construct a new `rustc` invocation. This will automatically set the library
-    /// search path as `-L cwd()` and also the compilation target.
+    /// search path as `-L cwd()`, configure the compilation target and enable
+    /// dynamic linkage by default on musl hosts.
     /// Use [`bare_rustc`] to avoid this.
     #[track_caller]
     pub fn new() -> Self {
         let mut cmd = setup_common();
         cmd.arg("-L").arg(cwd());
 
+        // FIXME: On musl hosts, we currently default to static linkage, while
+        // for running run-make tests, we rely on dynamic linkage by default
+        if std::env::var("IS_MUSL_HOST").is_ok_and(|i| i == "1") {
+            cmd.arg("-Ctarget-feature=-crt-static");
+        }
+
         // Automatically default to cross-compilation
         Self { cmd, target: Some(target()) }
     }
diff --git a/src/tools/rust-analyzer/Cargo.lock b/src/tools/rust-analyzer/Cargo.lock
index e55cd80943d..c471234bbe3 100644
--- a/src/tools/rust-analyzer/Cargo.lock
+++ b/src/tools/rust-analyzer/Cargo.lock
@@ -1268,7 +1268,7 @@ dependencies = [
  "expect-test",
  "intern",
  "parser",
- "ra-ap-rustc_lexer",
+ "ra-ap-rustc_lexer 0.122.0",
  "rustc-hash 2.1.1",
  "smallvec",
  "span",
@@ -1504,7 +1504,7 @@ dependencies = [
  "drop_bomb",
  "edition",
  "expect-test",
- "ra-ap-rustc_lexer",
+ "ra-ap-rustc_lexer 0.122.0",
  "rustc-literal-escaper",
  "stdx",
  "tracing",
@@ -1614,7 +1614,7 @@ dependencies = [
  "object",
  "paths",
  "proc-macro-test",
- "ra-ap-rustc_lexer",
+ "ra-ap-rustc_lexer 0.122.0",
  "span",
  "syntax-bridge",
  "tt",
@@ -1756,9 +1756,9 @@ dependencies = [
 
 [[package]]
 name = "ra-ap-rustc_abi"
-version = "0.121.0"
+version = "0.122.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ee51482d1c9d3e538acda8cce723db8eea1a81540544bf362bf4c3d841b2329"
+checksum = "fb01e1fec578003c85481c1cad4ff8cd8195b07c2dc85ae3f716108507ae15d5"
 dependencies = [
  "bitflags 2.9.1",
  "ra-ap-rustc_hashes",
@@ -1768,18 +1768,18 @@ dependencies = [
 
 [[package]]
 name = "ra-ap-rustc_hashes"
-version = "0.121.0"
+version = "0.122.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19c8f1e0c28e24e1b4c55dc08058c6c9829df2204497d4034259f491d348c204"
+checksum = "e0ec056e72a472ffef8761ce96ece6c626eb07368c09d0105b6df30d27d07673"
 dependencies = [
  "rustc-stable-hash",
 ]
 
 [[package]]
 name = "ra-ap-rustc_index"
-version = "0.121.0"
+version = "0.122.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f33f429cec6b92fa2c7243883279fb29dd233fdc3e94099aff32aa91aa87f50"
+checksum = "0fcdd1001db0295e59052e9f53aeda588bbe81e362534f4687d41bd44777b5a7"
 dependencies = [
  "ra-ap-rustc_index_macros",
  "smallvec",
@@ -1787,9 +1787,9 @@ dependencies = [
 
 [[package]]
 name = "ra-ap-rustc_index_macros"
-version = "0.121.0"
+version = "0.122.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9b55910dbe1fe7ef34bdc1d1bcb41e99b377eb680ea58a1218d95d6b4152257"
+checksum = "728d64dd98e25530b32e3f7c7c1e844e52722b269360daa1cdeba9dff9727a26"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1808,20 +1808,31 @@ dependencies = [
 ]
 
 [[package]]
+name = "ra-ap-rustc_lexer"
+version = "0.122.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "415f0821f512608d825b3215489a6a6a2c18ed9f0045953d514e7ec23d4b90ab"
+dependencies = [
+ "memchr",
+ "unicode-properties",
+ "unicode-xid",
+]
+
+[[package]]
 name = "ra-ap-rustc_parse_format"
 version = "0.121.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "81057891bc2063ad9e353f29462fbc47a0f5072560af34428ae9313aaa5e9d97"
 dependencies = [
- "ra-ap-rustc_lexer",
+ "ra-ap-rustc_lexer 0.121.0",
  "rustc-literal-escaper",
 ]
 
 [[package]]
 name = "ra-ap-rustc_pattern_analysis"
-version = "0.121.0"
+version = "0.122.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe21a3542980d56d2435e96c2720773cac1c63fd4db666417e414729da192eb3"
+checksum = "4657fcfdfe06e2a02ec8180d4e7c95aecf4811ba50367e363d1a2300b7623284"
 dependencies = [
  "ra-ap-rustc_index",
  "rustc-hash 2.1.1",
@@ -2581,7 +2592,7 @@ version = "0.0.0"
 dependencies = [
  "arrayvec",
  "intern",
- "ra-ap-rustc_lexer",
+ "ra-ap-rustc_lexer 0.122.0",
  "stdx",
  "text-size",
 ]
diff --git a/src/tools/rust-analyzer/Cargo.toml b/src/tools/rust-analyzer/Cargo.toml
index 41fa06a76a7..700c116ec18 100644
--- a/src/tools/rust-analyzer/Cargo.toml
+++ b/src/tools/rust-analyzer/Cargo.toml
@@ -89,11 +89,11 @@ vfs-notify = { path = "./crates/vfs-notify", version = "0.0.0" }
 vfs = { path = "./crates/vfs", version = "0.0.0" }
 edition = { path = "./crates/edition", version = "0.0.0" }
 
-ra-ap-rustc_lexer = { version = "0.121", default-features = false }
+ra-ap-rustc_lexer = { version = "0.122", default-features = false }
 ra-ap-rustc_parse_format = { version = "0.121", default-features = false }
-ra-ap-rustc_index = { version = "0.121", default-features = false }
-ra-ap-rustc_abi = { version = "0.121", default-features = false }
-ra-ap-rustc_pattern_analysis = { version = "0.121", default-features = false }
+ra-ap-rustc_index = { version = "0.122", default-features = false }
+ra-ap-rustc_abi = { version = "0.122", default-features = false }
+ra-ap-rustc_pattern_analysis = { version = "0.122", default-features = false }
 
 # local crates that aren't published to crates.io. These should not have versions.
 
diff --git a/src/tools/rust-analyzer/crates/cfg/src/cfg_expr.rs b/src/tools/rust-analyzer/crates/cfg/src/cfg_expr.rs
index 0ec082dfa7f..aed00aa9fc4 100644
--- a/src/tools/rust-analyzer/crates/cfg/src/cfg_expr.rs
+++ b/src/tools/rust-analyzer/crates/cfg/src/cfg_expr.rs
@@ -68,6 +68,11 @@ impl CfgExpr {
         next_cfg_expr(&mut tt.iter()).unwrap_or(CfgExpr::Invalid)
     }
 
+    #[cfg(feature = "tt")]
+    pub fn parse_from_iter<S: Copy>(tt: &mut tt::iter::TtIter<'_, S>) -> CfgExpr {
+        next_cfg_expr(tt).unwrap_or(CfgExpr::Invalid)
+    }
+
     /// Fold the cfg by querying all basic `Atom` and `KeyValue` predicates.
     pub fn fold(&self, query: &dyn Fn(&CfgAtom) -> bool) -> Option<bool> {
         match self {
@@ -96,7 +101,14 @@ fn next_cfg_expr<S: Copy>(it: &mut tt::iter::TtIter<'_, S>) -> Option<CfgExpr> {
     };
 
     let ret = match it.peek() {
-        Some(TtElement::Leaf(tt::Leaf::Punct(punct))) if punct.char == '=' => {
+        Some(TtElement::Leaf(tt::Leaf::Punct(punct)))
+            // Don't consume on e.g. `=>`.
+            if punct.char == '='
+                && (punct.spacing == tt::Spacing::Alone
+                    || it.remaining().flat_tokens().get(1).is_none_or(|peek2| {
+                        !matches!(peek2, tt::TokenTree::Leaf(tt::Leaf::Punct(_)))
+                    })) =>
+        {
             match it.remaining().flat_tokens().get(1) {
                 Some(tt::TokenTree::Leaf(tt::Leaf::Literal(literal))) => {
                     it.next();
diff --git a/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs b/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs
index 1c3af47d522..eeaf865338b 100644
--- a/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs
+++ b/src/tools/rust-analyzer/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs
@@ -550,3 +550,51 @@ fn main() { "\"hello\""; }
 "##]],
     );
 }
+
+#[test]
+fn cfg_select() {
+    check(
+        r#"
+#[rustc_builtin_macro]
+pub macro cfg_select($($tt:tt)*) {}
+
+cfg_select! {
+    false => { fn false_1() {} }
+    any(false, true) => { fn true_1() {} }
+}
+
+cfg_select! {
+    false => { fn false_2() {} }
+    _ => { fn true_2() {} }
+}
+
+cfg_select! {
+    false => { fn false_3() {} }
+}
+
+cfg_select! {
+    false
+}
+
+cfg_select! {
+    false =>
+}
+
+    "#,
+        expect![[r#"
+#[rustc_builtin_macro]
+pub macro cfg_select($($tt:tt)*) {}
+
+fn true_1() {}
+
+fn true_2() {}
+
+/* error: none of the predicates in this `cfg_select` evaluated to true */
+
+/* error: expected `=>` after cfg expression */
+
+/* error: expected a token tree after `=>` */
+
+    "#]],
+    );
+}
diff --git a/src/tools/rust-analyzer/crates/hir-expand/src/builtin/fn_macro.rs b/src/tools/rust-analyzer/crates/hir-expand/src/builtin/fn_macro.rs
index 60fbc660652..4a9af01091f 100644
--- a/src/tools/rust-analyzer/crates/hir-expand/src/builtin/fn_macro.rs
+++ b/src/tools/rust-analyzer/crates/hir-expand/src/builtin/fn_macro.rs
@@ -127,6 +127,7 @@ register_builtin! {
     (asm, Asm) => asm_expand,
     (global_asm, GlobalAsm) => global_asm_expand,
     (naked_asm, NakedAsm) => naked_asm_expand,
+    (cfg_select, CfgSelect) => cfg_select_expand,
     (cfg, Cfg) => cfg_expand,
     (core_panic, CorePanic) => panic_expand,
     (std_panic, StdPanic) => panic_expand,
@@ -355,6 +356,71 @@ fn naked_asm_expand(
     ExpandResult::ok(expanded)
 }
 
+fn cfg_select_expand(
+    db: &dyn ExpandDatabase,
+    id: MacroCallId,
+    tt: &tt::TopSubtree,
+    span: Span,
+) -> ExpandResult<tt::TopSubtree> {
+    let loc = db.lookup_intern_macro_call(id);
+    let cfg_options = loc.krate.cfg_options(db);
+
+    let mut iter = tt.iter();
+    let mut expand_to = None;
+    while let Some(next) = iter.peek() {
+        let active = if let tt::TtElement::Leaf(tt::Leaf::Ident(ident)) = next
+            && ident.sym == sym::underscore
+        {
+            iter.next();
+            true
+        } else {
+            cfg_options.check(&CfgExpr::parse_from_iter(&mut iter)) != Some(false)
+        };
+        match iter.expect_glued_punct() {
+            Ok(it) if it.len() == 2 && it[0].char == '=' && it[1].char == '>' => {}
+            _ => {
+                let err_span = iter.peek().map(|it| it.first_span()).unwrap_or(span);
+                return ExpandResult::new(
+                    tt::TopSubtree::empty(tt::DelimSpan::from_single(span)),
+                    ExpandError::other(err_span, "expected `=>` after cfg expression"),
+                );
+            }
+        }
+        let expand_to_if_active = match iter.next() {
+            Some(tt::TtElement::Subtree(_, tt)) => tt.remaining(),
+            _ => {
+                let err_span = iter.peek().map(|it| it.first_span()).unwrap_or(span);
+                return ExpandResult::new(
+                    tt::TopSubtree::empty(tt::DelimSpan::from_single(span)),
+                    ExpandError::other(err_span, "expected a token tree after `=>`"),
+                );
+            }
+        };
+
+        if expand_to.is_none() && active {
+            expand_to = Some(expand_to_if_active);
+        }
+    }
+    match expand_to {
+        Some(expand_to) => {
+            let mut builder = tt::TopSubtreeBuilder::new(tt::Delimiter {
+                kind: tt::DelimiterKind::Invisible,
+                open: span,
+                close: span,
+            });
+            builder.extend_with_tt(expand_to);
+            ExpandResult::ok(builder.build())
+        }
+        None => ExpandResult::new(
+            tt::TopSubtree::empty(tt::DelimSpan::from_single(span)),
+            ExpandError::other(
+                span,
+                "none of the predicates in this `cfg_select` evaluated to true",
+            ),
+        ),
+    }
+}
+
 fn cfg_expand(
     db: &dyn ExpandDatabase,
     id: MacroCallId,
diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_deref.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_deref.rs
index c7b97dcd231..55a09c5d775 100644
--- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_deref.rs
+++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_deref.rs
@@ -10,7 +10,7 @@ use syntax::{
 use crate::{
     AssistId,
     assist_context::{AssistContext, Assists, SourceChangeBuilder},
-    utils::generate_trait_impl_text,
+    utils::generate_trait_impl_text_intransitive,
 };
 
 // Assist: generate_deref
@@ -150,7 +150,7 @@ fn generate_edit(
         ),
     };
     let strukt_adt = ast::Adt::Struct(strukt);
-    let deref_impl = generate_trait_impl_text(
+    let deref_impl = generate_trait_impl_text_intransitive(
         &strukt_adt,
         &trait_path.display(db, edition).to_string(),
         &impl_code,
@@ -228,6 +228,28 @@ impl core::ops::Deref for B {
     }
 
     #[test]
+    fn test_generate_record_deref_with_generic() {
+        check_assist(
+            generate_deref,
+            r#"
+//- minicore: deref
+struct A<T>($0T);
+"#,
+            r#"
+struct A<T>(T);
+
+impl<T> core::ops::Deref for A<T> {
+    type Target = T;
+
+    fn deref(&self) -> &Self::Target {
+        &self.0
+    }
+}
+"#,
+        );
+    }
+
+    #[test]
     fn test_generate_record_deref_short_path() {
         check_assist(
             generate_deref,
diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_mut_trait_impl.rs b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_mut_trait_impl.rs
index 4ddab2cfad0..dc26ec79a74 100644
--- a/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_mut_trait_impl.rs
+++ b/src/tools/rust-analyzer/crates/ide-assists/src/handlers/generate_mut_trait_impl.rs
@@ -134,6 +134,9 @@ fn get_trait_mut(apply_trait: &hir::Trait, famous: FamousDefs<'_, '_>) -> Option
     if trait_ == famous.core_borrow_Borrow().as_ref() {
         return Some("BorrowMut");
     }
+    if trait_ == famous.core_ops_Deref().as_ref() {
+        return Some("DerefMut");
+    }
     None
 }
 
@@ -142,6 +145,7 @@ fn process_method_name(name: ast::Name) -> Option<(ast::Name, &'static str)> {
         "index" => "index_mut",
         "as_ref" => "as_mut",
         "borrow" => "borrow_mut",
+        "deref" => "deref_mut",
         _ => return None,
     };
     Some((name, new_name))
@@ -260,6 +264,39 @@ impl core::convert::AsRef<i32> for Foo {
 }
 "#,
         );
+
+        check_assist(
+            generate_mut_trait_impl,
+            r#"
+//- minicore: deref
+struct Foo(i32);
+
+impl core::ops::Deref$0 for Foo {
+    type Target = i32;
+
+    fn deref(&self) -> &Self::Target {
+        &self.0
+    }
+}
+"#,
+            r#"
+struct Foo(i32);
+
+$0impl core::ops::DerefMut for Foo {
+    fn deref_mut(&mut self) -> &mut Self::Target {
+        &mut self.0
+    }
+}
+
+impl core::ops::Deref for Foo {
+    type Target = i32;
+
+    fn deref(&self) -> &Self::Target {
+        &self.0
+    }
+}
+"#,
+        );
     }
 
     #[test]
diff --git a/src/tools/rust-analyzer/crates/ide-assists/src/utils.rs b/src/tools/rust-analyzer/crates/ide-assists/src/utils.rs
index 2c8cb6e4d91..fbce1d31eae 100644
--- a/src/tools/rust-analyzer/crates/ide-assists/src/utils.rs
+++ b/src/tools/rust-analyzer/crates/ide-assists/src/utils.rs
@@ -567,6 +567,7 @@ pub(crate) fn generate_impl_text(adt: &ast::Adt, code: &str) -> String {
 ///
 /// This is useful for traits like `PartialEq`, since `impl<T> PartialEq for U<T>` often requires `T: PartialEq`.
 // FIXME: migrate remaining uses to `generate_trait_impl`
+#[allow(dead_code)]
 pub(crate) fn generate_trait_impl_text(adt: &ast::Adt, trait_text: &str, code: &str) -> String {
     generate_impl_text_inner(adt, Some(trait_text), true, code)
 }
diff --git a/src/tools/rust-analyzer/crates/ide-db/src/search.rs b/src/tools/rust-analyzer/crates/ide-db/src/search.rs
index 4efb83ba323..9cf0bcf9190 100644
--- a/src/tools/rust-analyzer/crates/ide-db/src/search.rs
+++ b/src/tools/rust-analyzer/crates/ide-db/src/search.rs
@@ -531,7 +531,7 @@ impl<'a> FindUsages<'a> {
         node.token_at_offset(offset)
             .find(|it| {
                 // `name` is stripped of raw ident prefix. See the comment on name retrieval below.
-                it.text().trim_start_matches("r#") == name
+                it.text().trim_start_matches('\'').trim_start_matches("r#") == name
             })
             .into_iter()
             .flat_map(move |token| {
@@ -938,7 +938,12 @@ impl<'a> FindUsages<'a> {
                     })
                 };
                 // We need to search without the `r#`, hence `as_str` access.
-                self.def.name(sema.db).or_else(self_kw_refs).map(|it| it.as_str().to_smolstr())
+                // We strip `'` from lifetimes and labels as otherwise they may not match with raw-escaped ones,
+                // e.g. if we search `'foo` we won't find `'r#foo`.
+                self.def
+                    .name(sema.db)
+                    .or_else(self_kw_refs)
+                    .map(|it| it.as_str().trim_start_matches('\'').to_smolstr())
             }
         };
         let name = match &name {
diff --git a/src/tools/rust-analyzer/crates/ide/src/folding_ranges.rs b/src/tools/rust-analyzer/crates/ide/src/folding_ranges.rs
index c081796d078..698fd147789 100755
--- a/src/tools/rust-analyzer/crates/ide/src/folding_ranges.rs
+++ b/src/tools/rust-analyzer/crates/ide/src/folding_ranges.rs
@@ -48,7 +48,6 @@ pub(crate) fn folding_ranges(file: &SourceFile) -> Vec<Fold> {
     let mut res = vec![];
     let mut visited_comments = FxHashSet::default();
     let mut visited_nodes = FxHashSet::default();
-    let mut merged_fn_bodies = FxHashSet::default();
 
     // regions can be nested, here is a LIFO buffer
     let mut region_starts: Vec<TextSize> = vec![];
@@ -73,7 +72,7 @@ pub(crate) fn folding_ranges(file: &SourceFile) -> Vec<Fold> {
                                 continue;
                             }
 
-                            if let Some(body) = fn_node.body() {
+                            if fn_node.body().is_some() {
                                 res.push(Fold {
                                     range: TextRange::new(
                                         node.text_range().start(),
@@ -81,7 +80,6 @@ pub(crate) fn folding_ranges(file: &SourceFile) -> Vec<Fold> {
                                     ),
                                     kind: FoldKind::Function,
                                 });
-                                merged_fn_bodies.insert(body.syntax().text_range());
                                 continue;
                             }
                         }
diff --git a/src/tools/rust-analyzer/crates/ide/src/references.rs b/src/tools/rust-analyzer/crates/ide/src/references.rs
index fe874bc99b4..86b88a17c75 100644
--- a/src/tools/rust-analyzer/crates/ide/src/references.rs
+++ b/src/tools/rust-analyzer/crates/ide/src/references.rs
@@ -3088,4 +3088,42 @@ fn main() {
             "#]],
         );
     }
+
+    #[test]
+    fn raw_labels_and_lifetimes() {
+        check(
+            r#"
+fn foo<'r#fn>(s: &'r#fn str) {
+    let _a: &'r#fn str = s;
+    let _b: &'r#fn str;
+    'r#break$0: {
+        break 'r#break;
+    }
+}
+        "#,
+            expect![[r#"
+                'r#break Label FileId(0) 87..96 87..95
+
+                FileId(0) 113..121
+            "#]],
+        );
+        check(
+            r#"
+fn foo<'r#fn$0>(s: &'r#fn str) {
+    let _a: &'r#fn str = s;
+    let _b: &'r#fn str;
+    'r#break: {
+        break 'r#break;
+    }
+}
+        "#,
+            expect![[r#"
+                'r#fn LifetimeParam FileId(0) 7..12
+
+                FileId(0) 18..23
+                FileId(0) 44..49
+                FileId(0) 72..77
+            "#]],
+        );
+    }
 }
diff --git a/src/tools/rust-analyzer/crates/intern/src/symbol/symbols.rs b/src/tools/rust-analyzer/crates/intern/src/symbol/symbols.rs
index 1ccd20c25e9..4780743c4d9 100644
--- a/src/tools/rust-analyzer/crates/intern/src/symbol/symbols.rs
+++ b/src/tools/rust-analyzer/crates/intern/src/symbol/symbols.rs
@@ -156,6 +156,7 @@ define_symbols! {
     cfg_attr,
     cfg_eval,
     cfg,
+    cfg_select,
     char,
     clone,
     Clone,
diff --git a/src/tools/rust-analyzer/crates/tt/src/iter.rs b/src/tools/rust-analyzer/crates/tt/src/iter.rs
index 3246156f1cb..2e89d762a0e 100644
--- a/src/tools/rust-analyzer/crates/tt/src/iter.rs
+++ b/src/tools/rust-analyzer/crates/tt/src/iter.rs
@@ -217,6 +217,17 @@ pub enum TtElement<'a, S> {
     Subtree(&'a Subtree<S>, TtIter<'a, S>),
 }
 
+impl<S: Copy + fmt::Debug> fmt::Debug for TtElement<'_, S> {
+    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+        match self {
+            Self::Leaf(leaf) => f.debug_tuple("Leaf").field(leaf).finish(),
+            Self::Subtree(subtree, inner) => {
+                f.debug_tuple("Subtree").field(subtree).field(inner).finish()
+            }
+        }
+    }
+}
+
 impl<S: Copy> TtElement<'_, S> {
     #[inline]
     pub fn first_span(&self) -> S {
diff --git a/src/tools/rust-analyzer/rust-version b/src/tools/rust-analyzer/rust-version
index 57ff326ce5a..c2b1c151b83 100644
--- a/src/tools/rust-analyzer/rust-version
+++ b/src/tools/rust-analyzer/rust-version
@@ -1 +1 @@
-a9fb6103b05c6ad6eee6bed4c0bb5a2e8e1024c6
+e05ab47e6c418fb2b9faa2eae9a7e70c65c98eaa
diff --git a/src/tools/rustdoc-gui-test/src/main.rs b/src/tools/rustdoc-gui-test/src/main.rs
index 5b86bea8932..42feae8c208 100644
--- a/src/tools/rustdoc-gui-test/src/main.rs
+++ b/src/tools/rustdoc-gui-test/src/main.rs
@@ -65,10 +65,8 @@ fn main() -> Result<(), ()> {
         }
     }
 
-    // FIXME(binarycat): once we get package.json in version control, this should be updated to install via that instead
-    let local_node_modules =
-        npm::install_one(&config.out_dir, &config.npm, "browser-ui-test", "0.21.1")
-            .expect("unable to install browser-ui-test");
+    let local_node_modules = npm::install(&config.rust_src, &config.out_dir, &config.npm)
+        .expect("unable to install browser-ui-test");
 
     let mut command = Command::new(&config.nodejs);
 
diff --git a/src/tools/tidy/src/ext_tool_checks.rs b/src/tools/tidy/src/ext_tool_checks.rs
index 381ea44fd46..911d4daae5c 100644
--- a/src/tools/tidy/src/ext_tool_checks.rs
+++ b/src/tools/tidy/src/ext_tool_checks.rs
@@ -25,6 +25,8 @@ use std::{fmt, fs, io};
 
 use crate::CiInfo;
 
+mod rustdoc_js;
+
 const MIN_PY_REV: (u32, u32) = (3, 9);
 const MIN_PY_REV_STR: &str = "≥3.9";
 
@@ -46,12 +48,23 @@ pub fn check(
     root_path: &Path,
     outdir: &Path,
     ci_info: &CiInfo,
+    librustdoc_path: &Path,
+    tools_path: &Path,
     bless: bool,
     extra_checks: Option<&str>,
     pos_args: &[String],
     bad: &mut bool,
 ) {
-    if let Err(e) = check_impl(root_path, outdir, ci_info, bless, extra_checks, pos_args) {
+    if let Err(e) = check_impl(
+        root_path,
+        outdir,
+        ci_info,
+        librustdoc_path,
+        tools_path,
+        bless,
+        extra_checks,
+        pos_args,
+    ) {
         tidy_error!(bad, "{e}");
     }
 }
@@ -60,6 +73,8 @@ fn check_impl(
     root_path: &Path,
     outdir: &Path,
     ci_info: &CiInfo,
+    librustdoc_path: &Path,
+    tools_path: &Path,
     bless: bool,
     extra_checks: Option<&str>,
     pos_args: &[String],
@@ -108,6 +123,8 @@ fn check_impl(
     let shell_lint = extra_check!(Shell, Lint);
     let cpp_fmt = extra_check!(Cpp, Fmt);
     let spellcheck = extra_check!(Spellcheck, None);
+    let js_lint = extra_check!(Js, Lint);
+    let js_typecheck = extra_check!(Js, Typecheck);
 
     let mut py_path = None;
 
@@ -275,6 +292,19 @@ fn check_impl(
         spellcheck_runner(&args)?;
     }
 
+    if js_lint || js_typecheck {
+        rustdoc_js::npm_install(root_path, outdir)?;
+    }
+
+    if js_lint {
+        rustdoc_js::lint(outdir, librustdoc_path, tools_path)?;
+        rustdoc_js::es_check(outdir, librustdoc_path)?;
+    }
+
+    if js_typecheck {
+        rustdoc_js::typecheck(outdir, librustdoc_path)?;
+    }
+
     Ok(())
 }
 
@@ -697,6 +727,7 @@ impl ExtraCheckArg {
             ExtraCheckLang::Py => ".py",
             ExtraCheckLang::Cpp => ".cpp",
             ExtraCheckLang::Shell => ".sh",
+            ExtraCheckLang::Js => ".js",
             ExtraCheckLang::Spellcheck => {
                 return !crate::files_modified(ci_info, |s| {
                     SPELLCHECK_DIRS.iter().any(|dir| Path::new(s).starts_with(dir))
@@ -717,6 +748,7 @@ impl ExtraCheckArg {
             ExtraCheckLang::Cpp => &[Fmt],
             ExtraCheckLang::Shell => &[Lint],
             ExtraCheckLang::Spellcheck => &[],
+            ExtraCheckLang::Js => &[Lint, Typecheck],
         };
         supported_kinds.contains(&kind)
     }
@@ -757,6 +789,7 @@ enum ExtraCheckLang {
     Shell,
     Cpp,
     Spellcheck,
+    Js,
 }
 
 impl FromStr for ExtraCheckLang {
@@ -768,6 +801,7 @@ impl FromStr for ExtraCheckLang {
             "shell" => Self::Shell,
             "cpp" => Self::Cpp,
             "spellcheck" => Self::Spellcheck,
+            "js" => Self::Js,
             _ => return Err(ExtraCheckParseError::UnknownLang(s.to_string())),
         })
     }
@@ -777,6 +811,7 @@ impl FromStr for ExtraCheckLang {
 enum ExtraCheckKind {
     Lint,
     Fmt,
+    Typecheck,
     /// Never parsed, but used as a placeholder for
     /// langs that never have a specific kind.
     None,
@@ -789,6 +824,7 @@ impl FromStr for ExtraCheckKind {
         Ok(match s {
             "lint" => Self::Lint,
             "fmt" => Self::Fmt,
+            "typecheck" => Self::Typecheck,
             _ => return Err(ExtraCheckParseError::UnknownKind(s.to_string())),
         })
     }
diff --git a/src/tools/tidy/src/ext_tool_checks/rustdoc_js.rs b/src/tools/tidy/src/ext_tool_checks/rustdoc_js.rs
new file mode 100644
index 00000000000..c1a62cedd33
--- /dev/null
+++ b/src/tools/tidy/src/ext_tool_checks/rustdoc_js.rs
@@ -0,0 +1,114 @@
+//! Tidy check to ensure that rustdoc templates didn't forget a `{# #}` to strip extra whitespace
+//! characters.
+
+use std::ffi::OsStr;
+use std::io;
+use std::path::{Path, PathBuf};
+use std::process::{Child, Command};
+
+use build_helper::npm;
+use ignore::DirEntry;
+
+use crate::walk::walk_no_read;
+
+fn node_module_bin(outdir: &Path, name: &str) -> PathBuf {
+    outdir.join("node_modules/.bin").join(name)
+}
+
+fn spawn_cmd(cmd: &mut Command) -> Result<Child, io::Error> {
+    cmd.spawn().map_err(|err| {
+        eprintln!("unable to run {cmd:?} due to {err:?}");
+        err
+    })
+}
+
+/// install all js dependencies from package.json.
+pub(super) fn npm_install(root_path: &Path, outdir: &Path) -> Result<(), super::Error> {
+    // FIXME(lolbinarycat): make this obey build.npm bootstrap option
+    npm::install(root_path, outdir, Path::new("npm"))?;
+    Ok(())
+}
+
+fn rustdoc_js_files(librustdoc_path: &Path) -> Vec<PathBuf> {
+    let mut files = Vec::new();
+    walk_no_read(
+        &[&librustdoc_path.join("html/static/js")],
+        |path, is_dir| is_dir || path.extension().is_none_or(|ext| ext != OsStr::new("js")),
+        &mut |path: &DirEntry| {
+            files.push(path.path().into());
+        },
+    );
+    return files;
+}
+
+fn run_eslint(outdir: &Path, args: &[PathBuf], config_folder: PathBuf) -> Result<(), super::Error> {
+    let mut child = spawn_cmd(
+        Command::new(node_module_bin(outdir, "eslint"))
+            .arg("-c")
+            .arg(config_folder.join(".eslintrc.js"))
+            .args(args),
+    )?;
+    match child.wait() {
+        Ok(exit_status) => {
+            if exit_status.success() {
+                return Ok(());
+            }
+            Err(super::Error::FailedCheck("eslint command failed"))
+        }
+        Err(error) => Err(super::Error::Generic(format!("eslint command failed: {error:?}"))),
+    }
+}
+
+pub(super) fn lint(
+    outdir: &Path,
+    librustdoc_path: &Path,
+    tools_path: &Path,
+) -> Result<(), super::Error> {
+    let files_to_check = rustdoc_js_files(librustdoc_path);
+    println!("Running eslint on rustdoc JS files");
+    run_eslint(outdir, &files_to_check, librustdoc_path.join("html/static"))?;
+
+    run_eslint(outdir, &[tools_path.join("rustdoc-js/tester.js")], tools_path.join("rustdoc-js"))?;
+    run_eslint(
+        outdir,
+        &[tools_path.join("rustdoc-gui/tester.js")],
+        tools_path.join("rustdoc-gui"),
+    )?;
+    Ok(())
+}
+
+pub(super) fn typecheck(outdir: &Path, librustdoc_path: &Path) -> Result<(), super::Error> {
+    // use npx to ensure correct version
+    let mut child = spawn_cmd(
+        Command::new(node_module_bin(outdir, "tsc"))
+            .arg("-p")
+            .arg(librustdoc_path.join("html/static/js/tsconfig.json")),
+    )?;
+    match child.wait() {
+        Ok(exit_status) => {
+            if exit_status.success() {
+                return Ok(());
+            }
+            Err(super::Error::FailedCheck("tsc command failed"))
+        }
+        Err(error) => Err(super::Error::Generic(format!("tsc command failed: {error:?}"))),
+    }
+}
+
+pub(super) fn es_check(outdir: &Path, librustdoc_path: &Path) -> Result<(), super::Error> {
+    let files_to_check = rustdoc_js_files(librustdoc_path);
+    let mut cmd = Command::new(node_module_bin(outdir, "es-check"));
+    cmd.arg("es2019");
+    for f in files_to_check {
+        cmd.arg(f);
+    }
+    match spawn_cmd(&mut cmd)?.wait() {
+        Ok(exit_status) => {
+            if exit_status.success() {
+                return Ok(());
+            }
+            Err(super::Error::FailedCheck("es-check command failed"))
+        }
+        Err(error) => Err(super::Error::Generic(format!("es-check command failed: {error:?}"))),
+    }
+}
diff --git a/src/tools/tidy/src/issues.txt b/src/tools/tidy/src/issues.txt
index 77414bec82d..ee06707415f 100644
--- a/src/tools/tidy/src/issues.txt
+++ b/src/tools/tidy/src/issues.txt
@@ -1364,1230 +1364,6 @@ ui/infinite/issue-41731-infinite-macro-println.rs
 ui/intrinsics/issue-28575.rs
 ui/intrinsics/issue-84297-reifying-copy.rs
 ui/invalid/issue-114435-layout-type-err.rs
-ui/issues/auxiliary/issue-11224.rs
-ui/issues/auxiliary/issue-11508.rs
-ui/issues/auxiliary/issue-11529.rs
-ui/issues/auxiliary/issue-11680.rs
-ui/issues/auxiliary/issue-12612-1.rs
-ui/issues/auxiliary/issue-12612-2.rs
-ui/issues/auxiliary/issue-12660-aux.rs
-ui/issues/auxiliary/issue-13507.rs
-ui/issues/auxiliary/issue-13620-1.rs
-ui/issues/auxiliary/issue-13620-2.rs
-ui/issues/auxiliary/issue-14344-1.rs
-ui/issues/auxiliary/issue-14344-2.rs
-ui/issues/auxiliary/issue-14422.rs
-ui/issues/auxiliary/issue-15562.rs
-ui/issues/auxiliary/issue-16643.rs
-ui/issues/auxiliary/issue-16725.rs
-ui/issues/auxiliary/issue-17662.rs
-ui/issues/auxiliary/issue-18501.rs
-ui/issues/auxiliary/issue-18514.rs
-ui/issues/auxiliary/issue-18711.rs
-ui/issues/auxiliary/issue-18913-1.rs
-ui/issues/auxiliary/issue-18913-2.rs
-ui/issues/auxiliary/issue-19293.rs
-ui/issues/auxiliary/issue-20389.rs
-ui/issues/auxiliary/issue-21202.rs
-ui/issues/auxiliary/issue-2170-lib.rs
-ui/issues/auxiliary/issue-2316-a.rs
-ui/issues/auxiliary/issue-2316-b.rs
-ui/issues/auxiliary/issue-2380.rs
-ui/issues/auxiliary/issue-2414-a.rs
-ui/issues/auxiliary/issue-2414-b.rs
-ui/issues/auxiliary/issue-2472-b.rs
-ui/issues/auxiliary/issue-25185-1.rs
-ui/issues/auxiliary/issue-25185-2.rs
-ui/issues/auxiliary/issue-2526.rs
-ui/issues/auxiliary/issue-25467.rs
-ui/issues/auxiliary/issue-2631-a.rs
-ui/issues/auxiliary/issue-2723-a.rs
-ui/issues/auxiliary/issue-29265.rs
-ui/issues/auxiliary/issue-29485.rs
-ui/issues/auxiliary/issue-3012-1.rs
-ui/issues/auxiliary/issue-30123-aux.rs
-ui/issues/auxiliary/issue-3136-a.rs
-ui/issues/auxiliary/issue-31702-1.rs
-ui/issues/auxiliary/issue-31702-2.rs
-ui/issues/auxiliary/issue-34796-aux.rs
-ui/issues/auxiliary/issue-36954.rs
-ui/issues/auxiliary/issue-38190.rs
-ui/issues/auxiliary/issue-38226-aux.rs
-ui/issues/auxiliary/issue-3979-traits.rs
-ui/issues/auxiliary/issue-41053.rs
-ui/issues/auxiliary/issue-41549.rs
-ui/issues/auxiliary/issue-42007-s.rs
-ui/issues/auxiliary/issue-4208-cc.rs
-ui/issues/auxiliary/issue-4545.rs
-ui/issues/auxiliary/issue-48984-aux.rs
-ui/issues/auxiliary/issue-49544.rs
-ui/issues/auxiliary/issue-51798.rs
-ui/issues/auxiliary/issue-52489.rs
-ui/issues/auxiliary/issue-5518.rs
-ui/issues/auxiliary/issue-5521.rs
-ui/issues/auxiliary/issue-56943.rs
-ui/issues/auxiliary/issue-57271-lib.rs
-ui/issues/auxiliary/issue-5844-aux.rs
-ui/issues/auxiliary/issue-7178.rs
-ui/issues/auxiliary/issue-73112.rs
-ui/issues/auxiliary/issue-7899.rs
-ui/issues/auxiliary/issue-8044.rs
-ui/issues/auxiliary/issue-8259.rs
-ui/issues/auxiliary/issue-8401.rs
-ui/issues/auxiliary/issue-9123.rs
-ui/issues/auxiliary/issue-9155.rs
-ui/issues/auxiliary/issue-9188.rs
-ui/issues/auxiliary/issue-9906.rs
-ui/issues/auxiliary/issue-9968.rs
-ui/issues/issue-10228.rs
-ui/issues/issue-10291.rs
-ui/issues/issue-102964.rs
-ui/issues/issue-10396.rs
-ui/issues/issue-10412.rs
-ui/issues/issue-10436.rs
-ui/issues/issue-10456.rs
-ui/issues/issue-10465.rs
-ui/issues/issue-10545.rs
-ui/issues/issue-10638.rs
-ui/issues/issue-10656.rs
-ui/issues/issue-106755.rs
-ui/issues/issue-10683.rs
-ui/issues/issue-10718.rs
-ui/issues/issue-10734.rs
-ui/issues/issue-10764.rs
-ui/issues/issue-10767.rs
-ui/issues/issue-10802.rs
-ui/issues/issue-10806.rs
-ui/issues/issue-10853.rs
-ui/issues/issue-10877.rs
-ui/issues/issue-10902.rs
-ui/issues/issue-11004.rs
-ui/issues/issue-11047.rs
-ui/issues/issue-11085.rs
-ui/issues/issue-11192.rs
-ui/issues/issue-11205.rs
-ui/issues/issue-11224.rs
-ui/issues/issue-11267.rs
-ui/issues/issue-11374.rs
-ui/issues/issue-11382.rs
-ui/issues/issue-11384.rs
-ui/issues/issue-11508.rs
-ui/issues/issue-11529.rs
-ui/issues/issue-11552.rs
-ui/issues/issue-11592.rs
-ui/issues/issue-11677.rs
-ui/issues/issue-11680.rs
-ui/issues/issue-11681.rs
-ui/issues/issue-11709.rs
-ui/issues/issue-11740.rs
-ui/issues/issue-11771.rs
-ui/issues/issue-11820.rs
-ui/issues/issue-11844.rs
-ui/issues/issue-11869.rs
-ui/issues/issue-11958.rs
-ui/issues/issue-12033.rs
-ui/issues/issue-12041.rs
-ui/issues/issue-12127.rs
-ui/issues/issue-12285.rs
-ui/issues/issue-12567.rs
-ui/issues/issue-12612.rs
-ui/issues/issue-12660.rs
-ui/issues/issue-12677.rs
-ui/issues/issue-12729.rs
-ui/issues/issue-12744.rs
-ui/issues/issue-12860.rs
-ui/issues/issue-12863.rs
-ui/issues/issue-12909.rs
-ui/issues/issue-12920.rs
-ui/issues/issue-13027.rs
-ui/issues/issue-13058.rs
-ui/issues/issue-13105.rs
-ui/issues/issue-13167.rs
-ui/issues/issue-13202.rs
-ui/issues/issue-13204.rs
-ui/issues/issue-13214.rs
-ui/issues/issue-13259-windows-tcb-trash.rs
-ui/issues/issue-13264.rs
-ui/issues/issue-13323.rs
-ui/issues/issue-13359.rs
-ui/issues/issue-13405.rs
-ui/issues/issue-13407.rs
-ui/issues/issue-13434.rs
-ui/issues/issue-13446.rs
-ui/issues/issue-13466.rs
-ui/issues/issue-13482-2.rs
-ui/issues/issue-13482.rs
-ui/issues/issue-13497-2.rs
-ui/issues/issue-13497.rs
-ui/issues/issue-13507-2.rs
-ui/issues/issue-13620.rs
-ui/issues/issue-13665.rs
-ui/issues/issue-13703.rs
-ui/issues/issue-13763.rs
-ui/issues/issue-13775.rs
-ui/issues/issue-13808.rs
-ui/issues/issue-13847.rs
-ui/issues/issue-13867.rs
-ui/issues/issue-14082.rs
-ui/issues/issue-14091-2.rs
-ui/issues/issue-14091.rs
-ui/issues/issue-14092.rs
-ui/issues/issue-14229.rs
-ui/issues/issue-14254.rs
-ui/issues/issue-14285.rs
-ui/issues/issue-14308.rs
-ui/issues/issue-14330.rs
-ui/issues/issue-14344.rs
-ui/issues/issue-14366.rs
-ui/issues/issue-14382.rs
-ui/issues/issue-14393.rs
-ui/issues/issue-14399.rs
-ui/issues/issue-14422.rs
-ui/issues/issue-14541.rs
-ui/issues/issue-14721.rs
-ui/issues/issue-14821.rs
-ui/issues/issue-14845.rs
-ui/issues/issue-14853.rs
-ui/issues/issue-14865.rs
-ui/issues/issue-14875.rs
-ui/issues/issue-14901.rs
-ui/issues/issue-14915.rs
-ui/issues/issue-14919.rs
-ui/issues/issue-14959.rs
-ui/issues/issue-15034.rs
-ui/issues/issue-15043.rs
-ui/issues/issue-15063.rs
-ui/issues/issue-15094.rs
-ui/issues/issue-15104.rs
-ui/issues/issue-15129-rpass.rs
-ui/issues/issue-15167.rs
-ui/issues/issue-15189.rs
-ui/issues/issue-15207.rs
-ui/issues/issue-15260.rs
-ui/issues/issue-15381.rs
-ui/issues/issue-15444.rs
-ui/issues/issue-15523-big.rs
-ui/issues/issue-15523.rs
-ui/issues/issue-15562.rs
-ui/issues/issue-15571.rs
-ui/issues/issue-15673.rs
-ui/issues/issue-15734.rs
-ui/issues/issue-15735.rs
-ui/issues/issue-15756.rs
-ui/issues/issue-15763.rs
-ui/issues/issue-15774.rs
-ui/issues/issue-15783.rs
-ui/issues/issue-15793.rs
-ui/issues/issue-15858.rs
-ui/issues/issue-15896.rs
-ui/issues/issue-15965.rs
-ui/issues/issue-16048.rs
-ui/issues/issue-16149.rs
-ui/issues/issue-16151.rs
-ui/issues/issue-16256.rs
-ui/issues/issue-16278.rs
-ui/issues/issue-16401.rs
-ui/issues/issue-16441.rs
-ui/issues/issue-16452.rs
-ui/issues/issue-16492.rs
-ui/issues/issue-16530.rs
-ui/issues/issue-16560.rs
-ui/issues/issue-16562.rs
-ui/issues/issue-16596.rs
-ui/issues/issue-16643.rs
-ui/issues/issue-16648.rs
-ui/issues/issue-16668.rs
-ui/issues/issue-16671.rs
-ui/issues/issue-16683.rs
-ui/issues/issue-16725.rs
-ui/issues/issue-16739.rs
-ui/issues/issue-16745.rs
-ui/issues/issue-16774.rs
-ui/issues/issue-16783.rs
-ui/issues/issue-16819.rs
-ui/issues/issue-16922-rpass.rs
-ui/issues/issue-16966.rs
-ui/issues/issue-16994.rs
-ui/issues/issue-17001.rs
-ui/issues/issue-17033.rs
-ui/issues/issue-17068.rs
-ui/issues/issue-17121.rs
-ui/issues/issue-17216.rs
-ui/issues/issue-17252.rs
-ui/issues/issue-17322.rs
-ui/issues/issue-17336.rs
-ui/issues/issue-17337.rs
-ui/issues/issue-17351.rs
-ui/issues/issue-17361.rs
-ui/issues/issue-17373.rs
-ui/issues/issue-17385.rs
-ui/issues/issue-17405.rs
-ui/issues/issue-17441.rs
-ui/issues/issue-17450.rs
-ui/issues/issue-17503.rs
-ui/issues/issue-17546.rs
-ui/issues/issue-17551.rs
-ui/issues/issue-17651.rs
-ui/issues/issue-17662.rs
-ui/issues/issue-17732.rs
-ui/issues/issue-17734.rs
-ui/issues/issue-17740.rs
-ui/issues/issue-17746.rs
-ui/issues/issue-17758.rs
-ui/issues/issue-17771.rs
-ui/issues/issue-17800.rs
-ui/issues/issue-17816.rs
-ui/issues/issue-17877.rs
-ui/issues/issue-17897.rs
-ui/issues/issue-17904-2.rs
-ui/issues/issue-17904.rs
-ui/issues/issue-17905-2.rs
-ui/issues/issue-17905.rs
-ui/issues/issue-17933.rs
-ui/issues/issue-17954.rs
-ui/issues/issue-17959.rs
-ui/issues/issue-17994.rs
-ui/issues/issue-17999.rs
-ui/issues/issue-18058.rs
-ui/issues/issue-18088.rs
-ui/issues/issue-18107.rs
-ui/issues/issue-18110.rs
-ui/issues/issue-18119.rs
-ui/issues/issue-18159.rs
-ui/issues/issue-18173.rs
-ui/issues/issue-18183.rs
-ui/issues/issue-18188.rs
-ui/issues/issue-18232.rs
-ui/issues/issue-18352.rs
-ui/issues/issue-18353.rs
-ui/issues/issue-18389.rs
-ui/issues/issue-18423.rs
-ui/issues/issue-18446-2.rs
-ui/issues/issue-18446.rs
-ui/issues/issue-18464.rs
-ui/issues/issue-18501.rs
-ui/issues/issue-18514.rs
-ui/issues/issue-18532.rs
-ui/issues/issue-18539.rs
-ui/issues/issue-18566.rs
-ui/issues/issue-18611.rs
-ui/issues/issue-18685.rs
-ui/issues/issue-18711.rs
-ui/issues/issue-18767.rs
-ui/issues/issue-18783.rs
-ui/issues/issue-18809.rs
-ui/issues/issue-18845.rs
-ui/issues/issue-18859.rs
-ui/issues/issue-18906.rs
-ui/issues/issue-18913.rs
-ui/issues/issue-18919.rs
-ui/issues/issue-18952.rs
-ui/issues/issue-18959.rs
-ui/issues/issue-18988.rs
-ui/issues/issue-19001.rs
-ui/issues/issue-19037.rs
-ui/issues/issue-19086.rs
-ui/issues/issue-19097.rs
-ui/issues/issue-19098.rs
-ui/issues/issue-19100.rs
-ui/issues/issue-19127.rs
-ui/issues/issue-19135.rs
-ui/issues/issue-19293.rs
-ui/issues/issue-19367.rs
-ui/issues/issue-19380.rs
-ui/issues/issue-19398.rs
-ui/issues/issue-19404.rs
-ui/issues/issue-19479.rs
-ui/issues/issue-19482.rs
-ui/issues/issue-19499.rs
-ui/issues/issue-19601.rs
-ui/issues/issue-19631.rs
-ui/issues/issue-19632.rs
-ui/issues/issue-19692.rs
-ui/issues/issue-19734.rs
-ui/issues/issue-19811-escape-unicode.rs
-ui/issues/issue-19850.rs
-ui/issues/issue-19922.rs
-ui/issues/issue-19982.rs
-ui/issues/issue-19991.rs
-ui/issues/issue-20009.rs
-ui/issues/issue-20055-box-trait.rs
-ui/issues/issue-20055-box-unsized-array.rs
-ui/issues/issue-20162.rs
-ui/issues/issue-20174.rs
-ui/issues/issue-20186.rs
-ui/issues/issue-20225.rs
-ui/issues/issue-20261.rs
-ui/issues/issue-20313-rpass.rs
-ui/issues/issue-20313.rs
-ui/issues/issue-20389.rs
-ui/issues/issue-20396.rs
-ui/issues/issue-20413.rs
-ui/issues/issue-20414.rs
-ui/issues/issue-20427.rs
-ui/issues/issue-20433.rs
-ui/issues/issue-20454.rs
-ui/issues/issue-20544.rs
-ui/issues/issue-20575.rs
-ui/issues/issue-20644.rs
-ui/issues/issue-20676.rs
-ui/issues/issue-20714.rs
-ui/issues/issue-2074.rs
-ui/issues/issue-20772.rs
-ui/issues/issue-20797.rs
-ui/issues/issue-20803.rs
-ui/issues/issue-20831-debruijn.rs
-ui/issues/issue-20847.rs
-ui/issues/issue-20939.rs
-ui/issues/issue-20953.rs
-ui/issues/issue-20971.rs
-ui/issues/issue-21033.rs
-ui/issues/issue-21140.rs
-ui/issues/issue-21160.rs
-ui/issues/issue-21174-2.rs
-ui/issues/issue-21174.rs
-ui/issues/issue-21177.rs
-ui/issues/issue-21202.rs
-ui/issues/issue-21245.rs
-ui/issues/issue-21291.rs
-ui/issues/issue-21306.rs
-ui/issues/issue-21332.rs
-ui/issues/issue-21361.rs
-ui/issues/issue-21384.rs
-ui/issues/issue-21400.rs
-ui/issues/issue-21402.rs
-ui/issues/issue-21449.rs
-ui/issues/issue-2150.rs
-ui/issues/issue-2151.rs
-ui/issues/issue-21546.rs
-ui/issues/issue-21554.rs
-ui/issues/issue-21600.rs
-ui/issues/issue-21622.rs
-ui/issues/issue-21634.rs
-ui/issues/issue-21655.rs
-ui/issues/issue-2170-exe.rs
-ui/issues/issue-21701.rs
-ui/issues/issue-21763.rs
-ui/issues/issue-21891.rs
-ui/issues/issue-2190-1.rs
-ui/issues/issue-21909.rs
-ui/issues/issue-21922.rs
-ui/issues/issue-21946.rs
-ui/issues/issue-21950.rs
-ui/issues/issue-21974.rs
-ui/issues/issue-22008.rs
-ui/issues/issue-22034.rs
-ui/issues/issue-22036.rs
-ui/issues/issue-2214.rs
-ui/issues/issue-22258.rs
-ui/issues/issue-22289.rs
-ui/issues/issue-22312.rs
-ui/issues/issue-22346.rs
-ui/issues/issue-22356.rs
-ui/issues/issue-22370.rs
-ui/issues/issue-22403.rs
-ui/issues/issue-22426.rs
-ui/issues/issue-22434.rs
-ui/issues/issue-22468.rs
-ui/issues/issue-22471.rs
-ui/issues/issue-22577.rs
-ui/issues/issue-22599.rs
-ui/issues/issue-22603.rs
-ui/issues/issue-22629.rs
-ui/issues/issue-22638.rs
-ui/issues/issue-22644.rs
-ui/issues/issue-22673.rs
-ui/issues/issue-22684.rs
-ui/issues/issue-22706.rs
-ui/issues/issue-22777.rs
-ui/issues/issue-22781.rs
-ui/issues/issue-22789.rs
-ui/issues/issue-2281-part1.rs
-ui/issues/issue-22814.rs
-ui/issues/issue-2284.rs
-ui/issues/issue-22872.rs
-ui/issues/issue-22874.rs
-ui/issues/issue-2288.rs
-ui/issues/issue-22886.rs
-ui/issues/issue-22894.rs
-ui/issues/issue-22992-2.rs
-ui/issues/issue-22992.rs
-ui/issues/issue-23024.rs
-ui/issues/issue-23036.rs
-ui/issues/issue-23041.rs
-ui/issues/issue-23046.rs
-ui/issues/issue-23073.rs
-ui/issues/issue-2311-2.rs
-ui/issues/issue-2311.rs
-ui/issues/issue-2312.rs
-ui/issues/issue-2316-c.rs
-ui/issues/issue-23173.rs
-ui/issues/issue-23189.rs
-ui/issues/issue-23217.rs
-ui/issues/issue-23253.rs
-ui/issues/issue-23261.rs
-ui/issues/issue-23281.rs
-ui/issues/issue-23311.rs
-ui/issues/issue-23336.rs
-ui/issues/issue-23354-2.rs
-ui/issues/issue-23354.rs
-ui/issues/issue-23406.rs
-ui/issues/issue-23433.rs
-ui/issues/issue-23442.rs
-ui/issues/issue-23477.rs
-ui/issues/issue-23485.rs
-ui/issues/issue-23491.rs
-ui/issues/issue-23543.rs
-ui/issues/issue-23544.rs
-ui/issues/issue-23550.rs
-ui/issues/issue-23589.rs
-ui/issues/issue-23699.rs
-ui/issues/issue-2380-b.rs
-ui/issues/issue-2383.rs
-ui/issues/issue-23891.rs
-ui/issues/issue-23898.rs
-ui/issues/issue-23958.rs
-ui/issues/issue-23966.rs
-ui/issues/issue-23992.rs
-ui/issues/issue-24013.rs
-ui/issues/issue-24036.rs
-ui/issues/issue-24086.rs
-ui/issues/issue-2414-c.rs
-ui/issues/issue-24161.rs
-ui/issues/issue-24227.rs
-ui/issues/issue-2428.rs
-ui/issues/issue-24308.rs
-ui/issues/issue-24322.rs
-ui/issues/issue-24352.rs
-ui/issues/issue-24353.rs
-ui/issues/issue-24357.rs
-ui/issues/issue-24363.rs
-ui/issues/issue-24365.rs
-ui/issues/issue-24389.rs
-ui/issues/issue-24424.rs
-ui/issues/issue-24434.rs
-ui/issues/issue-2445-b.rs
-ui/issues/issue-2445.rs
-ui/issues/issue-24533.rs
-ui/issues/issue-24589.rs
-ui/issues/issue-2463.rs
-ui/issues/issue-24682.rs
-ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-lib.rs
-ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-mbcs-in-comments.rs
-ui/issues/issue-2470-bounds-check-overflow.rs
-ui/issues/issue-2472.rs
-ui/issues/issue-24779.rs
-ui/issues/issue-24819.rs
-ui/issues/issue-2487-a.rs
-ui/issues/issue-24945-repeat-dash-opts.rs
-ui/issues/issue-24947.rs
-ui/issues/issue-24954.rs
-ui/issues/issue-2502.rs
-ui/issues/issue-25076.rs
-ui/issues/issue-25089.rs
-ui/issues/issue-25145.rs
-ui/issues/issue-25180.rs
-ui/issues/issue-25185.rs
-ui/issues/issue-2526-a.rs
-ui/issues/issue-25279.rs
-ui/issues/issue-25343.rs
-ui/issues/issue-25368.rs
-ui/issues/issue-25386.rs
-ui/issues/issue-25394.rs
-ui/issues/issue-25467.rs
-ui/issues/issue-25497.rs
-ui/issues/issue-2550.rs
-ui/issues/issue-25515.rs
-ui/issues/issue-25549-multiple-drop.rs
-ui/issues/issue-25579.rs
-ui/issues/issue-25679.rs
-ui/issues/issue-25693.rs
-ui/issues/issue-25746-bool-transmute.rs
-ui/issues/issue-25757.rs
-ui/issues/issue-25810.rs
-ui/issues/issue-2590.rs
-ui/issues/issue-25901.rs
-ui/issues/issue-26056.rs
-ui/issues/issue-26093.rs
-ui/issues/issue-26095.rs
-ui/issues/issue-26127.rs
-ui/issues/issue-26186.rs
-ui/issues/issue-26205.rs
-ui/issues/issue-26217.rs
-ui/issues/issue-26237.rs
-ui/issues/issue-2631-b.rs
-ui/issues/issue-2642.rs
-ui/issues/issue-26468.rs
-ui/issues/issue-26472.rs
-ui/issues/issue-26484.rs
-ui/issues/issue-26614.rs
-ui/issues/issue-26619.rs
-ui/issues/issue-26641.rs
-ui/issues/issue-26646.rs
-ui/issues/issue-26655.rs
-ui/issues/issue-26709.rs
-ui/issues/issue-26802.rs
-ui/issues/issue-26805.rs
-ui/issues/issue-26812.rs
-ui/issues/issue-26948.rs
-ui/issues/issue-26997.rs
-ui/issues/issue-27008.rs
-ui/issues/issue-27033.rs
-ui/issues/issue-27042.rs
-ui/issues/issue-27054-primitive-binary-ops.rs
-ui/issues/issue-27078.rs
-ui/issues/issue-2708.rs
-ui/issues/issue-27105.rs
-ui/issues/issue-2723-b.rs
-ui/issues/issue-27240.rs
-ui/issues/issue-27268.rs
-ui/issues/issue-27281.rs
-ui/issues/issue-27340.rs
-ui/issues/issue-27401-dropflag-reinit.rs
-ui/issues/issue-27433.rs
-ui/issues/issue-27592.rs
-ui/issues/issue-2761.rs
-ui/issues/issue-27639.rs
-ui/issues/issue-27697.rs
-ui/issues/issue-27815.rs
-ui/issues/issue-27842.rs
-ui/issues/issue-27889.rs
-ui/issues/issue-27942.rs
-ui/issues/issue-27949.rs
-ui/issues/issue-27997.rs
-ui/issues/issue-28105.rs
-ui/issues/issue-28109.rs
-ui/issues/issue-28181.rs
-ui/issues/issue-28279.rs
-ui/issues/issue-28344.rs
-ui/issues/issue-28433.rs
-ui/issues/issue-28472.rs
-ui/issues/issue-2848.rs
-ui/issues/issue-2849.rs
-ui/issues/issue-28498-must-work-ex1.rs
-ui/issues/issue-28498-must-work-ex2.rs
-ui/issues/issue-28498-ugeh-ex1.rs
-ui/issues/issue-28550.rs
-ui/issues/issue-28561.rs
-ui/issues/issue-28568.rs
-ui/issues/issue-28586.rs
-ui/issues/issue-28600.rs
-ui/issues/issue-28625.rs
-ui/issues/issue-28776.rs
-ui/issues/issue-28828.rs
-ui/issues/issue-28839.rs
-ui/issues/issue-28936.rs
-ui/issues/issue-2895.rs
-ui/issues/issue-28971.rs
-ui/issues/issue-28983.rs
-ui/issues/issue-28999.rs
-ui/issues/issue-29030.rs
-ui/issues/issue-29037.rs
-ui/issues/issue-2904.rs
-ui/issues/issue-29048.rs
-ui/issues/issue-29053.rs
-ui/issues/issue-29071-2.rs
-ui/issues/issue-29071.rs
-ui/issues/issue-29092.rs
-ui/issues/issue-29147-rpass.rs
-ui/issues/issue-29147.rs
-ui/issues/issue-29265.rs
-ui/issues/issue-29276.rs
-ui/issues/issue-2935.rs
-ui/issues/issue-29466.rs
-ui/issues/issue-29485.rs
-ui/issues/issue-2951.rs
-ui/issues/issue-29516.rs
-ui/issues/issue-29522.rs
-ui/issues/issue-29540.rs
-ui/issues/issue-29663.rs
-ui/issues/issue-29668.rs
-ui/issues/issue-29710.rs
-ui/issues/issue-29723.rs
-ui/issues/issue-29740.rs
-ui/issues/issue-29743.rs
-ui/issues/issue-29821.rs
-ui/issues/issue-29857.rs
-ui/issues/issue-29861.rs
-ui/issues/issue-2989.rs
-ui/issues/issue-29948.rs
-ui/issues/issue-2995.rs
-ui/issues/issue-30018-panic.rs
-ui/issues/issue-30081.rs
-ui/issues/issue-3012-2.rs
-ui/issues/issue-30123.rs
-ui/issues/issue-3021-b.rs
-ui/issues/issue-3021-d.rs
-ui/issues/issue-30236.rs
-ui/issues/issue-30255.rs
-ui/issues/issue-3026.rs
-ui/issues/issue-3029.rs
-ui/issues/issue-3037.rs
-ui/issues/issue-30371.rs
-ui/issues/issue-3038.rs
-ui/issues/issue-30380.rs
-ui/issues/issue-3052.rs
-ui/issues/issue-30530.rs
-ui/issues/issue-30589.rs
-ui/issues/issue-30615.rs
-ui/issues/issue-30756.rs
-ui/issues/issue-30891.rs
-ui/issues/issue-3091.rs
-ui/issues/issue-31011.rs
-ui/issues/issue-3109.rs
-ui/issues/issue-3121.rs
-ui/issues/issue-31267-additional.rs
-ui/issues/issue-31267.rs
-ui/issues/issue-31299.rs
-ui/issues/issue-3136-b.rs
-ui/issues/issue-3149.rs
-ui/issues/issue-31511.rs
-ui/issues/issue-3154.rs
-ui/issues/issue-31702.rs
-ui/issues/issue-31769.rs
-ui/issues/issue-31776.rs
-ui/issues/issue-31910.rs
-ui/issues/issue-32004.rs
-ui/issues/issue-32008.rs
-ui/issues/issue-32086.rs
-ui/issues/issue-3220.rs
-ui/issues/issue-32292.rs
-ui/issues/issue-32324.rs
-ui/issues/issue-32326.rs
-ui/issues/issue-32377.rs
-ui/issues/issue-32389.rs
-ui/issues/issue-32518.rs
-ui/issues/issue-32655.rs
-ui/issues/issue-32782.rs
-ui/issues/issue-32797.rs
-ui/issues/issue-32805.rs
-ui/issues/issue-3290.rs
-ui/issues/issue-32995-2.rs
-ui/issues/issue-32995.rs
-ui/issues/issue-33202.rs
-ui/issues/issue-33241.rs
-ui/issues/issue-33287.rs
-ui/issues/issue-33293.rs
-ui/issues/issue-33387.rs
-ui/issues/issue-3344.rs
-ui/issues/issue-33461.rs
-ui/issues/issue-33504.rs
-ui/issues/issue-33525.rs
-ui/issues/issue-33571.rs
-ui/issues/issue-33687.rs
-ui/issues/issue-33770.rs
-ui/issues/issue-3389.rs
-ui/issues/issue-33941.rs
-ui/issues/issue-34047.rs
-ui/issues/issue-34074.rs
-ui/issues/issue-34209.rs
-ui/issues/issue-34229.rs
-ui/issues/issue-3424.rs
-ui/issues/issue-3429.rs
-ui/issues/issue-34334.rs
-ui/issues/issue-34349.rs
-ui/issues/issue-34373.rs
-ui/issues/issue-34418.rs
-ui/issues/issue-34427.rs
-ui/issues/issue-3447.rs
-ui/issues/issue-34503.rs
-ui/issues/issue-34569.rs
-ui/issues/issue-34571.rs
-ui/issues/issue-34751.rs
-ui/issues/issue-3477.rs
-ui/issues/issue-34780.rs
-ui/issues/issue-34796.rs
-ui/issues/issue-34839.rs
-ui/issues/issue-3500.rs
-ui/issues/issue-35139.rs
-ui/issues/issue-3521-2.rs
-ui/issues/issue-35241.rs
-ui/issues/issue-35423.rs
-ui/issues/issue-3556.rs
-ui/issues/issue-35570.rs
-ui/issues/issue-3559.rs
-ui/issues/issue-35600.rs
-ui/issues/issue-3574.rs
-ui/issues/issue-35815.rs
-ui/issues/issue-35976.rs
-ui/issues/issue-35988.rs
-ui/issues/issue-36023.rs
-ui/issues/issue-36036-associated-type-layout.rs
-ui/issues/issue-36075.rs
-ui/issues/issue-3609.rs
-ui/issues/issue-36116.rs
-ui/issues/issue-36260.rs
-ui/issues/issue-36278-prefix-nesting.rs
-ui/issues/issue-36299.rs
-ui/issues/issue-36379.rs
-ui/issues/issue-36400.rs
-ui/issues/issue-36474.rs
-ui/issues/issue-3656.rs
-ui/issues/issue-3668-non-constant-value-in-constant/issue-3668-2.rs
-ui/issues/issue-3668-non-constant-value-in-constant/issue-3668.rs
-ui/issues/issue-36744-bitcast-args-if-needed.rs
-ui/issues/issue-36786-resolve-call.rs
-ui/issues/issue-3680.rs
-ui/issues/issue-36816.rs
-ui/issues/issue-36836.rs
-ui/issues/issue-36839.rs
-ui/issues/issue-36856.rs
-ui/issues/issue-36936.rs
-ui/issues/issue-36954.rs
-ui/issues/issue-3702-2.rs
-ui/issues/issue-3702.rs
-ui/issues/issue-37051.rs
-ui/issues/issue-37109.rs
-ui/issues/issue-37131.rs
-ui/issues/issue-37311-type-length-limit/issue-37311.rs
-ui/issues/issue-37510.rs
-ui/issues/issue-3753.rs
-ui/issues/issue-37534.rs
-ui/issues/issue-37576.rs
-ui/issues/issue-3763.rs
-ui/issues/issue-37665.rs
-ui/issues/issue-37686.rs
-ui/issues/issue-37725.rs
-ui/issues/issue-37733.rs
-ui/issues/issue-3779.rs
-ui/issues/issue-37884.rs
-ui/issues/issue-38160.rs
-ui/issues/issue-38190.rs
-ui/issues/issue-38226.rs
-ui/issues/issue-38381.rs
-ui/issues/issue-38412.rs
-ui/issues/issue-38437.rs
-ui/issues/issue-38458.rs
-ui/issues/issue-3847.rs
-ui/issues/issue-38556.rs
-ui/issues/issue-38727.rs
-ui/issues/issue-3874.rs
-ui/issues/issue-38763.rs
-ui/issues/issue-38857.rs
-ui/issues/issue-38875/auxiliary/issue-38875-b.rs
-ui/issues/issue-38875/issue-38875.rs
-ui/issues/issue-3888-2.rs
-ui/issues/issue-38919.rs
-ui/issues/issue-38942.rs
-ui/issues/issue-3895.rs
-ui/issues/issue-38954.rs
-ui/issues/issue-38987.rs
-ui/issues/issue-39089.rs
-ui/issues/issue-39211.rs
-ui/issues/issue-39367.rs
-ui/issues/issue-39548.rs
-ui/issues/issue-39687.rs
-ui/issues/issue-39709.rs
-ui/issues/issue-3979-2.rs
-ui/issues/issue-3979-xcrate.rs
-ui/issues/issue-3979.rs
-ui/issues/issue-39808.rs
-ui/issues/issue-39827.rs
-ui/issues/issue-39848.rs
-ui/issues/issue-3991.rs
-ui/issues/issue-3993.rs
-ui/issues/issue-39970.rs
-ui/issues/issue-39984.rs
-ui/issues/issue-40000.rs
-ui/issues/issue-4025.rs
-ui/issues/issue-40288-2.rs
-ui/issues/issue-40288.rs
-ui/issues/issue-40951.rs
-ui/issues/issue-41053.rs
-ui/issues/issue-41229-ref-str.rs
-ui/issues/issue-41298.rs
-ui/issues/issue-41479.rs
-ui/issues/issue-41498.rs
-ui/issues/issue-41549.rs
-ui/issues/issue-41604.rs
-ui/issues/issue-41652/auxiliary/issue-41652-b.rs
-ui/issues/issue-41652/issue-41652.rs
-ui/issues/issue-41677.rs
-ui/issues/issue-41696.rs
-ui/issues/issue-41726.rs
-ui/issues/issue-41742.rs
-ui/issues/issue-41744.rs
-ui/issues/issue-41849-variance-req.rs
-ui/issues/issue-41880.rs
-ui/issues/issue-41888.rs
-ui/issues/issue-41936-variance-coerce-unsized-cycle.rs
-ui/issues/issue-41974.rs
-ui/issues/issue-41998.rs
-ui/issues/issue-42007.rs
-ui/issues/issue-4208.rs
-ui/issues/issue-42106.rs
-ui/issues/issue-42148.rs
-ui/issues/issue-42210.rs
-ui/issues/issue-4228.rs
-ui/issues/issue-42312.rs
-ui/issues/issue-42453.rs
-ui/issues/issue-42467.rs
-ui/issues/issue-4252.rs
-ui/issues/issue-42552.rs
-ui/issues/issue-4265.rs
-ui/issues/issue-42755.rs
-ui/issues/issue-42796.rs
-ui/issues/issue-42880.rs
-ui/issues/issue-42956.rs
-ui/issues/issue-43057.rs
-ui/issues/issue-43205.rs
-ui/issues/issue-43250.rs
-ui/issues/issue-43291.rs
-ui/issues/issue-4333.rs
-ui/issues/issue-4335.rs
-ui/issues/issue-43355.rs
-ui/issues/issue-43357.rs
-ui/issues/issue-43420-no-over-suggest.rs
-ui/issues/issue-43424.rs
-ui/issues/issue-43431.rs
-ui/issues/issue-43483.rs
-ui/issues/issue-43692.rs
-ui/issues/issue-43806.rs
-ui/issues/issue-43853.rs
-ui/issues/issue-4387.rs
-ui/issues/issue-43910.rs
-ui/issues/issue-43923.rs
-ui/issues/issue-43988.rs
-ui/issues/issue-44023.rs
-ui/issues/issue-44056.rs
-ui/issues/issue-44078.rs
-ui/issues/issue-44216-add-instant.rs
-ui/issues/issue-44216-add-system-time.rs
-ui/issues/issue-44216-sub-instant.rs
-ui/issues/issue-44216-sub-system-time.rs
-ui/issues/issue-44239.rs
-ui/issues/issue-44247.rs
-ui/issues/issue-44405.rs
-ui/issues/issue-4464.rs
-ui/issues/issue-44730.rs
-ui/issues/issue-44851.rs
-ui/issues/issue-4517.rs
-ui/issues/issue-4541.rs
-ui/issues/issue-4542.rs
-ui/issues/issue-45425.rs
-ui/issues/issue-4545.rs
-ui/issues/issue-45510.rs
-ui/issues/issue-45562.rs
-ui/issues/issue-45697-1.rs
-ui/issues/issue-45697.rs
-ui/issues/issue-45730.rs
-ui/issues/issue-45731.rs
-ui/issues/issue-45801.rs
-ui/issues/issue-45965.rs
-ui/issues/issue-46069.rs
-ui/issues/issue-46101.rs
-ui/issues/issue-46302.rs
-ui/issues/issue-46311.rs
-ui/issues/issue-46332.rs
-ui/issues/issue-46471-1.rs
-ui/issues/issue-46472.rs
-ui/issues/issue-46604.rs
-ui/issues/issue-46756-consider-borrowing-cast-or-binexpr.rs
-ui/issues/issue-46771.rs
-ui/issues/issue-46855.rs
-ui/issues/issue-46964.rs
-ui/issues/issue-46983.rs
-ui/issues/issue-47073-zero-padded-tuple-struct-indices.rs
-ui/issues/issue-47094.rs
-ui/issues/issue-47184.rs
-ui/issues/issue-47309.rs
-ui/issues/issue-4734.rs
-ui/issues/issue-4735.rs
-ui/issues/issue-4736.rs
-ui/issues/issue-47364.rs
-ui/issues/issue-47377.rs
-ui/issues/issue-47380.rs
-ui/issues/issue-47486.rs
-ui/issues/issue-4759-1.rs
-ui/issues/issue-4759.rs
-ui/issues/issue-47638.rs
-ui/issues/issue-47673.rs
-ui/issues/issue-47703-1.rs
-ui/issues/issue-47703-tuple.rs
-ui/issues/issue-47703.rs
-ui/issues/issue-47715.rs
-ui/issues/issue-47722.rs
-ui/issues/issue-48006.rs
-ui/issues/issue-48131.rs
-ui/issues/issue-48132.rs
-ui/issues/issue-48159.rs
-ui/issues/issue-48276.rs
-ui/issues/issue-4830.rs
-ui/issues/issue-48364.rs
-ui/issues/issue-48728.rs
-ui/issues/issue-4875.rs
-ui/issues/issue-48984.rs
-ui/issues/issue-49298.rs
-ui/issues/issue-4935.rs
-ui/issues/issue-49544.rs
-ui/issues/issue-49632.rs
-ui/issues/issue-4968.rs
-ui/issues/issue-4972.rs
-ui/issues/issue-49824.rs
-ui/issues/issue-49854.rs
-ui/issues/issue-49919.rs
-ui/issues/issue-49934-errors.rs
-ui/issues/issue-49934.rs
-ui/issues/issue-49955.rs
-ui/issues/issue-49973.rs
-ui/issues/issue-50187.rs
-ui/issues/issue-50411.rs
-ui/issues/issue-50415.rs
-ui/issues/issue-50442.rs
-ui/issues/issue-50471.rs
-ui/issues/issue-50518.rs
-ui/issues/issue-50581.rs
-ui/issues/issue-50582.rs
-ui/issues/issue-50585.rs
-ui/issues/issue-50600.rs
-ui/issues/issue-50618.rs
-ui/issues/issue-5062.rs
-ui/issues/issue-5067.rs
-ui/issues/issue-50688.rs
-ui/issues/issue-50714.rs
-ui/issues/issue-50761.rs
-ui/issues/issue-50781.rs
-ui/issues/issue-50802.rs
-ui/issues/issue-50811.rs
-ui/issues/issue-5100.rs
-ui/issues/issue-51022.rs
-ui/issues/issue-51044.rs
-ui/issues/issue-51102.rs
-ui/issues/issue-51116.rs
-ui/issues/issue-51154.rs
-ui/issues/issue-51515.rs
-ui/issues/issue-51632-try-desugar-incompatible-types.rs
-ui/issues/issue-51655.rs
-ui/issues/issue-51714.rs
-ui/issues/issue-51798.rs
-ui/issues/issue-51874.rs
-ui/issues/issue-51907.rs
-ui/issues/issue-5192.rs
-ui/issues/issue-51947.rs
-ui/issues/issue-52049.rs
-ui/issues/issue-52126-assign-op-invariance.rs
-ui/issues/issue-52262.rs
-ui/issues/issue-52489.rs
-ui/issues/issue-52533.rs
-ui/issues/issue-52717.rs
-ui/issues/issue-5280.rs
-ui/issues/issue-5315.rs
-ui/issues/issue-5321-immediates-with-bare-self.rs
-ui/issues/issue-53251.rs
-ui/issues/issue-53275.rs
-ui/issues/issue-53300.rs
-ui/issues/issue-53333.rs
-ui/issues/issue-53348.rs
-ui/issues/issue-53419.rs
-ui/issues/issue-53568.rs
-ui/issues/issue-5358-1.rs
-ui/issues/issue-53728.rs
-ui/issues/issue-53843.rs
-ui/issues/issue-54044.rs
-ui/issues/issue-54062.rs
-ui/issues/issue-54094.rs
-ui/issues/issue-5439.rs
-ui/issues/issue-54410.rs
-ui/issues/issue-54462-mutable-noalias-correctness.rs
-ui/issues/issue-54477-reduced-2.rs
-ui/issues/issue-54696.rs
-ui/issues/issue-5518.rs
-ui/issues/issue-5521.rs
-ui/issues/issue-55376.rs
-ui/issues/issue-55380.rs
-ui/issues/issue-5550.rs
-ui/issues/issue-5554.rs
-ui/issues/issue-55587.rs
-ui/issues/issue-5572.rs
-ui/issues/issue-55731.rs
-ui/issues/issue-56128.rs
-ui/issues/issue-56175.rs
-ui/issues/issue-56199.rs
-ui/issues/issue-56229.rs
-ui/issues/issue-56237.rs
-ui/issues/issue-5666.rs
-ui/issues/issue-56806.rs
-ui/issues/issue-56835.rs
-ui/issues/issue-56870.rs
-ui/issues/issue-5688.rs
-ui/issues/issue-56943.rs
-ui/issues/issue-5708.rs
-ui/issues/issue-57156.rs
-ui/issues/issue-57162.rs
-ui/issues/issue-5718.rs
-ui/issues/issue-57198-pass.rs
-ui/issues/issue-57271.rs
-ui/issues/issue-57399-self-return-impl-trait.rs
-ui/issues/issue-5741.rs
-ui/issues/issue-5754.rs
-ui/issues/issue-57741-dereference-boxed-value/issue-57741-1.rs
-ui/issues/issue-57741-dereference-boxed-value/issue-57741.rs
-ui/issues/issue-57781.rs
-ui/issues/issue-57924.rs
-ui/issues/issue-58212.rs
-ui/issues/issue-58375-monomorphize-default-impls.rs
-ui/issues/issue-5844.rs
-ui/issues/issue-58463.rs
-ui/issues/issue-58712.rs
-ui/issues/issue-58734.rs
-ui/issues/issue-5883.rs
-ui/issues/issue-5884.rs
-ui/issues/issue-58857.rs
-ui/issues/issue-5900.rs
-ui/issues/issue-59020.rs
-ui/issues/issue-5917.rs
-ui/issues/issue-59326.rs
-ui/issues/issue-59488.rs
-ui/issues/issue-59494.rs
-ui/issues/issue-5950.rs
-ui/issues/issue-59756.rs
-ui/issues/issue-5988.rs
-ui/issues/issue-5997-outer-generic-parameter/issue-5997-enum.rs
-ui/issues/issue-5997-outer-generic-parameter/issue-5997-struct.rs
-ui/issues/issue-5997-outer-generic-parameter/issue-5997.rs
-ui/issues/issue-60218.rs
-ui/issues/issue-60622.rs
-ui/issues/issue-60989.rs
-ui/issues/issue-61106.rs
-ui/issues/issue-61108.rs
-ui/issues/issue-6117.rs
-ui/issues/issue-6130.rs
-ui/issues/issue-61475.rs
-ui/issues/issue-6153.rs
-ui/issues/issue-61623.rs
-ui/issues/issue-61894.rs
-ui/issues/issue-62480.rs
-ui/issues/issue-6318.rs
-ui/issues/issue-6344-let.rs
-ui/issues/issue-6344-match.rs
-ui/issues/issue-63983.rs
-ui/issues/issue-64430.rs
-ui/issues/issue-64559.rs
-ui/issues/issue-64593.rs
-ui/issues/issue-64792-bad-unicode-ctor.rs
-ui/issues/issue-65131.rs
-ui/issues/issue-65230.rs
-ui/issues/issue-65462.rs
-ui/issues/issue-6557.rs
-ui/issues/issue-66308.rs
-ui/issues/issue-66353.rs
-ui/issues/issue-66667-function-cmp-cycle.rs
-ui/issues/issue-66702-break-outside-loop-val.rs
-ui/issues/issue-66706.rs
-ui/issues/issue-66923-show-error-for-correct-call.rs
-ui/issues/issue-67039-unsound-pin-partialeq.rs
-ui/issues/issue-6738.rs
-ui/issues/issue-67535.rs
-ui/issues/issue-67552.rs
-ui/issues/issue-68010-large-zst-consts.rs
-ui/issues/issue-68696-catch-during-unwind.rs
-ui/issues/issue-6892.rs
-ui/issues/issue-68951.rs
-ui/issues/issue-6898.rs
-ui/issues/issue-69130.rs
-ui/issues/issue-6919.rs
-ui/issues/issue-69306.rs
-ui/issues/issue-6936.rs
-ui/issues/issue-69455.rs
-ui/issues/issue-69602-type-err-during-codegen-ice.rs
-ui/issues/issue-69683.rs
-ui/issues/issue-7012.rs
-ui/issues/issue-70381.rs
-ui/issues/issue-7044.rs
-ui/issues/issue-7061.rs
-ui/issues/issue-70673.rs
-ui/issues/issue-70724-add_type_neq_err_label-unwrap.rs
-ui/issues/issue-70746.rs
-ui/issues/issue-7092.rs
-ui/issues/issue-71406.rs
-ui/issues/issue-7178.rs
-ui/issues/issue-72002.rs
-ui/issues/issue-72076.rs
-ui/issues/issue-72278.rs
-ui/issues/issue-7246.rs
-ui/issues/issue-7268.rs
-ui/issues/issue-72839-error-overflow.rs
-ui/issues/issue-72933-match-stack-overflow.rs
-ui/issues/issue-73112.rs
-ui/issues/issue-73229.rs
-ui/issues/issue-7344.rs
-ui/issues/issue-7364.rs
-ui/issues/issue-74082.rs
-ui/issues/issue-74564-if-expr-stack-overflow.rs
-ui/issues/issue-7519-match-unit-in-arg.rs
-ui/issues/issue-75283.rs
-ui/issues/issue-7563.rs
-ui/issues/issue-75704.rs
-ui/issues/issue-7575.rs
-ui/issues/issue-76042.rs
-ui/issues/issue-76077-inaccesible-private-fields/issue-76077-1.rs
-ui/issues/issue-76077-inaccesible-private-fields/issue-76077.rs
-ui/issues/issue-76191.rs
-ui/issues/issue-7660.rs
-ui/issues/issue-7663.rs
-ui/issues/issue-7673-cast-generically-implemented-trait.rs
-ui/issues/issue-77218/issue-77218-2.rs
-ui/issues/issue-77218/issue-77218.rs
-ui/issues/issue-7784.rs
-ui/issues/issue-77919.rs
-ui/issues/issue-78192.rs
-ui/issues/issue-78622.rs
-ui/issues/issue-7867.rs
-ui/issues/issue-78957.rs
-ui/issues/issue-7899.rs
-ui/issues/issue-7911.rs
-ui/issues/issue-7970a.rs
-ui/issues/issue-8044.rs
-ui/issues/issue-80607.rs
-ui/issues/issue-81584.rs
-ui/issues/issue-8171-default-method-self-inherit-builtin-trait.rs
-ui/issues/issue-81918.rs
-ui/issues/issue-8248.rs
-ui/issues/issue-8249.rs
-ui/issues/issue-8259.rs
-ui/issues/issue-83048.rs
-ui/issues/issue-8391.rs
-ui/issues/issue-8398.rs
-ui/issues/issue-8401.rs
-ui/issues/issue-8498.rs
-ui/issues/issue-8506.rs
-ui/issues/issue-8521.rs
-ui/issues/issue-85461.rs
-ui/issues/issue-8578.rs
-ui/issues/issue-86756.rs
-ui/issues/issue-87199.rs
-ui/issues/issue-8727.rs
-ui/issues/issue-87490.rs
-ui/issues/issue-8761.rs
-ui/issues/issue-8767.rs
-ui/issues/issue-87707.rs
-ui/issues/issue-8783.rs
-ui/issues/issue-88150.rs
-ui/issues/issue-8860.rs
-ui/issues/issue-8898.rs
-ui/issues/issue-9047.rs
-ui/issues/issue-9110.rs
-ui/issues/issue-9123.rs
-ui/issues/issue-9129.rs
-ui/issues/issue-91489.rs
-ui/issues/issue-9155.rs
-ui/issues/issue-9188.rs
-ui/issues/issue-9243.rs
-ui/issues/issue-9249.rs
-ui/issues/issue-9259.rs
-ui/issues/issue-92741.rs
-ui/issues/issue-9446.rs
-ui/issues/issue-9725.rs
-ui/issues/issue-9737.rs
-ui/issues/issue-9814.rs
-ui/issues/issue-98299.rs
-ui/issues/issue-9837.rs
-ui/issues/issue-9906.rs
-ui/issues/issue-9918.rs
-ui/issues/issue-9942.rs
-ui/issues/issue-9951.rs
-ui/issues/issue-9968.rs
-ui/issues/issue-99838.rs
 ui/iterators/issue-28098.rs
 ui/iterators/issue-58952-filter-type-length.rs
 ui/lang-items/issue-83471.rs
diff --git a/src/tools/tidy/src/lib.rs b/src/tools/tidy/src/lib.rs
index cb875504e1e..5f6796a9150 100644
--- a/src/tools/tidy/src/lib.rs
+++ b/src/tools/tidy/src/lib.rs
@@ -179,7 +179,6 @@ pub mod mir_opt_tests;
 pub mod pal;
 pub mod rustdoc_css_themes;
 pub mod rustdoc_gui_tests;
-pub mod rustdoc_js;
 pub mod rustdoc_json;
 pub mod rustdoc_templates;
 pub mod style;
diff --git a/src/tools/tidy/src/main.rs b/src/tools/tidy/src/main.rs
index 0f1116a632e..13b20f33bd0 100644
--- a/src/tools/tidy/src/main.rs
+++ b/src/tools/tidy/src/main.rs
@@ -112,7 +112,6 @@ fn main() {
         check!(rustdoc_gui_tests, &tests_path);
         check!(rustdoc_css_themes, &librustdoc_path);
         check!(rustdoc_templates, &librustdoc_path);
-        check!(rustdoc_js, &librustdoc_path, &tools_path, &src_path);
         check!(rustdoc_json, &src_path, &ci_info);
         check!(known_bug, &crashes_path);
         check!(unknown_revision, &tests_path);
@@ -181,6 +180,8 @@ fn main() {
             &root_path,
             &output_directory,
             &ci_info,
+            &librustdoc_path,
+            &tools_path,
             bless,
             extra_checks,
             pos_args
diff --git a/src/tools/tidy/src/pal.rs b/src/tools/tidy/src/pal.rs
index b7d4a331891..5b8b44429bb 100644
--- a/src/tools/tidy/src/pal.rs
+++ b/src/tools/tidy/src/pal.rs
@@ -37,6 +37,7 @@ use crate::walk::{filter_dirs, walk};
 // Paths that may contain platform-specific code.
 const EXCEPTION_PATHS: &[&str] = &[
     "library/compiler-builtins",
+    "library/std_detect",
     "library/windows_targets",
     "library/panic_abort",
     "library/panic_unwind",
diff --git a/src/tools/tidy/src/rustdoc_js.rs b/src/tools/tidy/src/rustdoc_js.rs
deleted file mode 100644
index 5737fcbafc0..00000000000
--- a/src/tools/tidy/src/rustdoc_js.rs
+++ /dev/null
@@ -1,101 +0,0 @@
-//! Tidy check to ensure that rustdoc templates didn't forget a `{# #}` to strip extra whitespace
-//! characters.
-
-use std::ffi::OsStr;
-use std::path::{Path, PathBuf};
-use std::process::Command;
-
-use ignore::DirEntry;
-
-use crate::walk::walk_no_read;
-
-fn run_eslint(args: &[PathBuf], config_folder: PathBuf, bad: &mut bool) {
-    let mut child = match Command::new("npx")
-        .arg("eslint")
-        .arg("-c")
-        .arg(config_folder.join(".eslintrc.js"))
-        .args(args)
-        .spawn()
-    {
-        Ok(child) => child,
-        Err(error) => {
-            *bad = true;
-            eprintln!("failed to run eslint: {error:?}");
-            return;
-        }
-    };
-    match child.wait() {
-        Ok(exit_status) => {
-            if exit_status.success() {
-                return;
-            }
-            eprintln!("eslint command failed");
-        }
-        Err(error) => eprintln!("eslint command failed: {error:?}"),
-    }
-    *bad = true;
-}
-
-fn get_eslint_version_inner(global: bool) -> Option<String> {
-    let mut command = Command::new("npm");
-    command.arg("list").arg("--parseable").arg("--long").arg("--depth=0");
-    if global {
-        command.arg("--global");
-    }
-    let output = command.output().ok()?;
-    let lines = String::from_utf8_lossy(&output.stdout);
-    lines.lines().find_map(|l| l.split(':').nth(1)?.strip_prefix("eslint@")).map(|v| v.to_owned())
-}
-
-fn get_eslint_version() -> Option<String> {
-    get_eslint_version_inner(false).or_else(|| get_eslint_version_inner(true))
-}
-
-pub fn check(librustdoc_path: &Path, tools_path: &Path, src_path: &Path, bad: &mut bool) {
-    let eslint_version_path = src_path.join("ci/docker/host-x86_64/tidy/eslint.version");
-    let eslint_version = match std::fs::read_to_string(&eslint_version_path) {
-        Ok(version) => version.trim().to_string(),
-        Err(error) => {
-            *bad = true;
-            eprintln!("failed to read `{}`: {error:?}", eslint_version_path.display());
-            return;
-        }
-    };
-    // Having the correct `eslint` version installed via `npm` isn't strictly necessary, since we're invoking it via `npx`,
-    // but this check allows the vast majority that is not working on the rustdoc frontend to avoid the penalty of running
-    // `eslint` in tidy. See also: https://github.com/rust-lang/rust/pull/142851
-    match get_eslint_version() {
-        Some(version) => {
-            if version != eslint_version {
-                *bad = true;
-                eprintln!(
-                    "⚠️ Installed version of eslint (`{version}`) is different than the \
-                     one used in the CI (`{eslint_version}`)",
-                );
-                eprintln!(
-                    "You can install this version using `npm update eslint` or by using \
-                     `npm install eslint@{eslint_version}`",
-                );
-                return;
-            }
-        }
-        None => {
-            eprintln!("`eslint` doesn't seem to be installed. Skipping tidy check for JS files.");
-            eprintln!("You can install it using `npm install eslint@{eslint_version}`");
-            return;
-        }
-    }
-    let mut files_to_check = Vec::new();
-    walk_no_read(
-        &[&librustdoc_path.join("html/static/js")],
-        |path, is_dir| is_dir || path.extension().is_none_or(|ext| ext != OsStr::new("js")),
-        &mut |path: &DirEntry| {
-            files_to_check.push(path.path().into());
-        },
-    );
-    println!("Running eslint on rustdoc JS files");
-    run_eslint(&files_to_check, librustdoc_path.join("html/static"), bad);
-
-    run_eslint(&[tools_path.join("rustdoc-js/tester.js")], tools_path.join("rustdoc-js"), bad);
-    run_eslint(&[tools_path.join("rustdoc-gui/tester.js")], tools_path.join("rustdoc-gui"), bad);
-}
diff --git a/src/tools/tidy/src/target_policy.rs b/src/tools/tidy/src/target_policy.rs
index 776221d3062..550932dbfdc 100644
--- a/src/tools/tidy/src/target_policy.rs
+++ b/src/tools/tidy/src/target_policy.rs
@@ -8,7 +8,7 @@ use std::path::Path;
 use crate::walk::{filter_not_rust, walk};
 
 const TARGET_DEFINITIONS_PATH: &str = "compiler/rustc_target/src/spec/targets/";
-const ASSEMBLY_TEST_PATH: &str = "tests/assembly/targets/";
+const ASSEMBLY_LLVM_TEST_PATH: &str = "tests/assembly-llvm/targets/";
 const REVISION_LINE_START: &str = "//@ revisions: ";
 const EXCEPTIONS: &[&str] = &[
     // FIXME: disabled since it fails on CI saying the csky component is missing
@@ -43,7 +43,7 @@ pub fn check(root_path: &Path, bad: &mut bool) {
         let _ = targets_to_find.insert(target_name);
     }
 
-    walk(&root_path.join(ASSEMBLY_TEST_PATH), |_, _| false, &mut |_, contents| {
+    walk(&root_path.join(ASSEMBLY_LLVM_TEST_PATH), |_, _| false, &mut |_, contents| {
         for line in contents.lines() {
             let Some(_) = line.find(REVISION_LINE_START) else {
                 continue;
@@ -55,7 +55,7 @@ pub fn check(root_path: &Path, bad: &mut bool) {
 
     for target in targets_to_find {
         if !EXCEPTIONS.contains(&target.as_str()) {
-            tidy_error!(bad, "{ASSEMBLY_TEST_PATH}: missing assembly test for {target}")
+            tidy_error!(bad, "{ASSEMBLY_LLVM_TEST_PATH}: missing assembly test for {target}")
         }
     }
 }
diff --git a/src/tools/tidy/src/ui_tests.rs b/src/tools/tidy/src/ui_tests.rs
index b9d22ece597..4d195b3952e 100644
--- a/src/tools/tidy/src/ui_tests.rs
+++ b/src/tools/tidy/src/ui_tests.rs
@@ -1,24 +1,12 @@
 //! Tidy check to ensure below in UI test directories:
-//! - the number of entries in each directory must be less than `ENTRY_LIMIT`
 //! - there are no stray `.stderr` files
 
-use std::collections::{BTreeSet, HashMap};
+use std::collections::BTreeSet;
 use std::ffi::OsStr;
 use std::fs;
 use std::io::Write;
 use std::path::{Path, PathBuf};
 
-use ignore::Walk;
-
-// FIXME: GitHub's UI truncates file lists that exceed 1000 entries, so these
-// should all be 1000 or lower. Limits significantly smaller than 1000 are also
-// desirable, because large numbers of files are unwieldy in general. See issue
-// #73494.
-const ENTRY_LIMIT: u32 = 901;
-// FIXME: The following limits should be reduced eventually.
-
-const ISSUES_ENTRY_LIMIT: u32 = 1616;
-
 const EXPECTED_TEST_FILE_EXTENSIONS: &[&str] = &[
     "rs",     // test source files
     "stderr", // expected stderr file, corresponds to a rs file
@@ -54,42 +42,6 @@ const EXTENSION_EXCEPTION_PATHS: &[&str] = &[
     "tests/ui/std/windows-bat-args3.bat", // tests escaping arguments through batch files
 ];
 
-fn check_entries(tests_path: &Path, bad: &mut bool) {
-    let mut directories: HashMap<PathBuf, u32> = HashMap::new();
-
-    for entry in Walk::new(tests_path.join("ui")).flatten() {
-        let parent = entry.path().parent().unwrap().to_path_buf();
-        *directories.entry(parent).or_default() += 1;
-    }
-
-    let (mut max, mut max_issues) = (0, 0);
-    for (dir_path, count) in directories {
-        let is_issues_dir = tests_path.join("ui/issues") == dir_path;
-        let (limit, maxcnt) = if is_issues_dir {
-            (ISSUES_ENTRY_LIMIT, &mut max_issues)
-        } else {
-            (ENTRY_LIMIT, &mut max)
-        };
-        *maxcnt = (*maxcnt).max(count);
-        if count > limit {
-            tidy_error!(
-                bad,
-                "following path contains more than {} entries, \
-                    you should move the test to some relevant subdirectory (current: {}): {}",
-                limit,
-                count,
-                dir_path.display()
-            );
-        }
-    }
-    if ISSUES_ENTRY_LIMIT > max_issues {
-        tidy_error!(
-            bad,
-            "`ISSUES_ENTRY_LIMIT` is too high (is {ISSUES_ENTRY_LIMIT}, should be {max_issues})"
-        );
-    }
-}
-
 pub fn check(root_path: &Path, bless: bool, bad: &mut bool) {
     let issues_txt_header = r#"============================================================
     ⚠️⚠️⚠️NOTHING SHOULD EVER BE ADDED TO THIS LIST⚠️⚠️⚠️
@@ -97,7 +49,6 @@ pub fn check(root_path: &Path, bless: bool, bad: &mut bool) {
 "#;
 
     let path = &root_path.join("tests");
-    check_entries(path, bad);
 
     // the list of files in ui tests that are allowed to start with `issue-XXXX`
     // BTreeSet because we would like a stable ordering so --bless works
@@ -179,7 +130,9 @@ pub fn check(root_path: &Path, bless: bool, bad: &mut bool) {
                     .unwrap()
                     .replace(std::path::MAIN_SEPARATOR_STR, "/");
 
-                if !remaining_issue_names.remove(stripped_path.as_str()) {
+                if !remaining_issue_names.remove(stripped_path.as_str())
+                    && !stripped_path.starts_with("ui/issues/")
+                {
                     tidy_error!(
                         bad,
                         "file `tests/{stripped_path}` must begin with a descriptive name, consider `{{reason}}-issue-{issue_n}.rs`",
diff --git a/src/tools/tidy/src/unit_tests.rs b/src/tools/tidy/src/unit_tests.rs
index 90ef36d5882..df9146b5147 100644
--- a/src/tools/tidy/src/unit_tests.rs
+++ b/src/tools/tidy/src/unit_tests.rs
@@ -56,7 +56,8 @@ pub fn check(root_path: &Path, bad: &mut bool) {
             let line = line.trim();
             let is_test = || line.contains("#[test]") && !line.contains("`#[test]");
             let is_bench = || line.contains("#[bench]") && !line.contains("`#[bench]");
-            if !line.starts_with("//") && (is_test() || is_bench()) {
+            let manual_skip = line.contains("//tidy:skip");
+            if !line.starts_with("//") && (is_test() || is_bench()) && !manual_skip {
                 let explanation = if is_core {
                     "`core` unit tests and benchmarks must be placed into `coretests`"
                 } else if is_alloc {
diff --git a/tests/assembly/aarch64-pointer-auth.rs b/tests/assembly-llvm/aarch64-pointer-auth.rs
index 56a26df469f..56a26df469f 100644
--- a/tests/assembly/aarch64-pointer-auth.rs
+++ b/tests/assembly-llvm/aarch64-pointer-auth.rs
diff --git a/tests/assembly/aarch64-xray.rs b/tests/assembly-llvm/aarch64-xray.rs
index d5ee0111843..d5ee0111843 100644
--- a/tests/assembly/aarch64-xray.rs
+++ b/tests/assembly-llvm/aarch64-xray.rs
diff --git a/tests/assembly/align_offset.rs b/tests/assembly-llvm/align_offset.rs
index d9902ce336b..d9902ce336b 100644
--- a/tests/assembly/align_offset.rs
+++ b/tests/assembly-llvm/align_offset.rs
diff --git a/tests/assembly/asm/aarch64-el2vmsa.rs b/tests/assembly-llvm/asm/aarch64-el2vmsa.rs
index 3652d58d85a..3652d58d85a 100644
--- a/tests/assembly/asm/aarch64-el2vmsa.rs
+++ b/tests/assembly-llvm/asm/aarch64-el2vmsa.rs
diff --git a/tests/assembly/asm/aarch64-modifiers.rs b/tests/assembly-llvm/asm/aarch64-modifiers.rs
index 58f7c114d3a..58f7c114d3a 100644
--- a/tests/assembly/asm/aarch64-modifiers.rs
+++ b/tests/assembly-llvm/asm/aarch64-modifiers.rs
diff --git a/tests/assembly/asm/aarch64-outline-atomics.rs b/tests/assembly-llvm/asm/aarch64-outline-atomics.rs
index 5990fb84942..5990fb84942 100644
--- a/tests/assembly/asm/aarch64-outline-atomics.rs
+++ b/tests/assembly-llvm/asm/aarch64-outline-atomics.rs
diff --git a/tests/assembly/asm/aarch64-types.rs b/tests/assembly-llvm/asm/aarch64-types.rs
index b7abeb02298..b7abeb02298 100644
--- a/tests/assembly/asm/aarch64-types.rs
+++ b/tests/assembly-llvm/asm/aarch64-types.rs
diff --git a/tests/assembly/asm/arm-modifiers.rs b/tests/assembly-llvm/asm/arm-modifiers.rs
index 32a36840492..32a36840492 100644
--- a/tests/assembly/asm/arm-modifiers.rs
+++ b/tests/assembly-llvm/asm/arm-modifiers.rs
diff --git a/tests/assembly/asm/arm-types.rs b/tests/assembly-llvm/asm/arm-types.rs
index fb93f474c20..fb93f474c20 100644
--- a/tests/assembly/asm/arm-types.rs
+++ b/tests/assembly-llvm/asm/arm-types.rs
diff --git a/tests/assembly/asm/avr-modifiers.rs b/tests/assembly-llvm/asm/avr-modifiers.rs
index 124cad9bef6..124cad9bef6 100644
--- a/tests/assembly/asm/avr-modifiers.rs
+++ b/tests/assembly-llvm/asm/avr-modifiers.rs
diff --git a/tests/assembly/asm/avr-types.rs b/tests/assembly-llvm/asm/avr-types.rs
index 309405f4d51..309405f4d51 100644
--- a/tests/assembly/asm/avr-types.rs
+++ b/tests/assembly-llvm/asm/avr-types.rs
diff --git a/tests/assembly/asm/bpf-types.rs b/tests/assembly-llvm/asm/bpf-types.rs
index 07ea7bd5ce0..07ea7bd5ce0 100644
--- a/tests/assembly/asm/bpf-types.rs
+++ b/tests/assembly-llvm/asm/bpf-types.rs
diff --git a/tests/assembly/asm/comments.rs b/tests/assembly-llvm/asm/comments.rs
index 557009975dd..557009975dd 100644
--- a/tests/assembly/asm/comments.rs
+++ b/tests/assembly-llvm/asm/comments.rs
diff --git a/tests/assembly/asm/global_asm.rs b/tests/assembly-llvm/asm/global_asm.rs
index 8a4bf98c745..8a4bf98c745 100644
--- a/tests/assembly/asm/global_asm.rs
+++ b/tests/assembly-llvm/asm/global_asm.rs
diff --git a/tests/assembly/asm/hexagon-types.rs b/tests/assembly-llvm/asm/hexagon-types.rs
index ce80fa75b35..ce80fa75b35 100644
--- a/tests/assembly/asm/hexagon-types.rs
+++ b/tests/assembly-llvm/asm/hexagon-types.rs
diff --git a/tests/assembly/asm/inline-asm-avx.rs b/tests/assembly-llvm/asm/inline-asm-avx.rs
index 630acbb971a..630acbb971a 100644
--- a/tests/assembly/asm/inline-asm-avx.rs
+++ b/tests/assembly-llvm/asm/inline-asm-avx.rs
diff --git a/tests/assembly/asm/loongarch-type.rs b/tests/assembly-llvm/asm/loongarch-type.rs
index c782be19f1d..c782be19f1d 100644
--- a/tests/assembly/asm/loongarch-type.rs
+++ b/tests/assembly-llvm/asm/loongarch-type.rs
diff --git a/tests/assembly/asm/m68k-types.rs b/tests/assembly-llvm/asm/m68k-types.rs
index 9e4f6d9a1a9..9e4f6d9a1a9 100644
--- a/tests/assembly/asm/m68k-types.rs
+++ b/tests/assembly-llvm/asm/m68k-types.rs
diff --git a/tests/assembly/asm/mips-types.rs b/tests/assembly-llvm/asm/mips-types.rs
index 00e8ce0b874..00e8ce0b874 100644
--- a/tests/assembly/asm/mips-types.rs
+++ b/tests/assembly-llvm/asm/mips-types.rs
diff --git a/tests/assembly/asm/msp430-types.rs b/tests/assembly-llvm/asm/msp430-types.rs
index 442dc77999f..442dc77999f 100644
--- a/tests/assembly/asm/msp430-types.rs
+++ b/tests/assembly-llvm/asm/msp430-types.rs
diff --git a/tests/assembly/asm/nvptx-types.rs b/tests/assembly-llvm/asm/nvptx-types.rs
index 7e8ebd03024..7e8ebd03024 100644
--- a/tests/assembly/asm/nvptx-types.rs
+++ b/tests/assembly-llvm/asm/nvptx-types.rs
diff --git a/tests/assembly/asm/powerpc-types.rs b/tests/assembly-llvm/asm/powerpc-types.rs
index 4291e4c02f3..4291e4c02f3 100644
--- a/tests/assembly/asm/powerpc-types.rs
+++ b/tests/assembly-llvm/asm/powerpc-types.rs
diff --git a/tests/assembly/asm/riscv-types.rs b/tests/assembly-llvm/asm/riscv-types.rs
index 724aa154da8..724aa154da8 100644
--- a/tests/assembly/asm/riscv-types.rs
+++ b/tests/assembly-llvm/asm/riscv-types.rs
diff --git a/tests/assembly/asm/s390x-types.rs b/tests/assembly-llvm/asm/s390x-types.rs
index e6fe38ecb0d..e6fe38ecb0d 100644
--- a/tests/assembly/asm/s390x-types.rs
+++ b/tests/assembly-llvm/asm/s390x-types.rs
diff --git a/tests/assembly/asm/sparc-types.rs b/tests/assembly-llvm/asm/sparc-types.rs
index 49cc377cd95..49cc377cd95 100644
--- a/tests/assembly/asm/sparc-types.rs
+++ b/tests/assembly-llvm/asm/sparc-types.rs
diff --git a/tests/assembly/asm/wasm-types.rs b/tests/assembly-llvm/asm/wasm-types.rs
index 78e555c5317..78e555c5317 100644
--- a/tests/assembly/asm/wasm-types.rs
+++ b/tests/assembly-llvm/asm/wasm-types.rs
diff --git a/tests/assembly/asm/x86-modifiers.rs b/tests/assembly-llvm/asm/x86-modifiers.rs
index 5f68e5c7317..5f68e5c7317 100644
--- a/tests/assembly/asm/x86-modifiers.rs
+++ b/tests/assembly-llvm/asm/x86-modifiers.rs
diff --git a/tests/assembly/asm/x86-types.rs b/tests/assembly-llvm/asm/x86-types.rs
index 6120ed0d532..6120ed0d532 100644
--- a/tests/assembly/asm/x86-types.rs
+++ b/tests/assembly-llvm/asm/x86-types.rs
diff --git a/tests/assembly/auxiliary/breakpoint-panic-handler.rs b/tests/assembly-llvm/auxiliary/breakpoint-panic-handler.rs
index d54c1181e1a..d54c1181e1a 100644
--- a/tests/assembly/auxiliary/breakpoint-panic-handler.rs
+++ b/tests/assembly-llvm/auxiliary/breakpoint-panic-handler.rs
diff --git a/tests/assembly/auxiliary/dwarf-mixed-versions-lto-aux.rs b/tests/assembly-llvm/auxiliary/dwarf-mixed-versions-lto-aux.rs
index 257608f881f..257608f881f 100644
--- a/tests/assembly/auxiliary/dwarf-mixed-versions-lto-aux.rs
+++ b/tests/assembly-llvm/auxiliary/dwarf-mixed-versions-lto-aux.rs
diff --git a/tests/assembly/auxiliary/non-inline-dependency.rs b/tests/assembly-llvm/auxiliary/non-inline-dependency.rs
index 57f3ee87cdb..57f3ee87cdb 100644
--- a/tests/assembly/auxiliary/non-inline-dependency.rs
+++ b/tests/assembly-llvm/auxiliary/non-inline-dependency.rs
diff --git a/tests/assembly/breakpoint.rs b/tests/assembly-llvm/breakpoint.rs
index e0cc2d1eebb..e0cc2d1eebb 100644
--- a/tests/assembly/breakpoint.rs
+++ b/tests/assembly-llvm/breakpoint.rs
diff --git a/tests/assembly/closure-inherit-target-feature.rs b/tests/assembly-llvm/closure-inherit-target-feature.rs
index 069204bbd34..069204bbd34 100644
--- a/tests/assembly/closure-inherit-target-feature.rs
+++ b/tests/assembly-llvm/closure-inherit-target-feature.rs
diff --git a/tests/assembly/cmse.rs b/tests/assembly-llvm/cmse.rs
index a68ee99eac6..a68ee99eac6 100644
--- a/tests/assembly/cmse.rs
+++ b/tests/assembly-llvm/cmse.rs
diff --git a/tests/assembly/compiletest-self-test/use-minicore-no-run.rs b/tests/assembly-llvm/compiletest-self-test/use-minicore-no-run.rs
index 0e4f05c4b37..0e4f05c4b37 100644
--- a/tests/assembly/compiletest-self-test/use-minicore-no-run.rs
+++ b/tests/assembly-llvm/compiletest-self-test/use-minicore-no-run.rs
diff --git a/tests/assembly/cstring-merging.rs b/tests/assembly-llvm/cstring-merging.rs
index 03688e0068b..03688e0068b 100644
--- a/tests/assembly/cstring-merging.rs
+++ b/tests/assembly-llvm/cstring-merging.rs
diff --git a/tests/assembly/dwarf-mixed-versions-lto.rs b/tests/assembly-llvm/dwarf-mixed-versions-lto.rs
index 9910a6e2f5f..9910a6e2f5f 100644
--- a/tests/assembly/dwarf-mixed-versions-lto.rs
+++ b/tests/assembly-llvm/dwarf-mixed-versions-lto.rs
diff --git a/tests/assembly/dwarf4.rs b/tests/assembly-llvm/dwarf4.rs
index 03a388603b4..03a388603b4 100644
--- a/tests/assembly/dwarf4.rs
+++ b/tests/assembly-llvm/dwarf4.rs
diff --git a/tests/assembly/dwarf5.rs b/tests/assembly-llvm/dwarf5.rs
index 9bd92cc0d09..9bd92cc0d09 100644
--- a/tests/assembly/dwarf5.rs
+++ b/tests/assembly-llvm/dwarf5.rs
diff --git a/tests/assembly/emit-intel-att-syntax.rs b/tests/assembly-llvm/emit-intel-att-syntax.rs
index 7b479a0f79e..7b479a0f79e 100644
--- a/tests/assembly/emit-intel-att-syntax.rs
+++ b/tests/assembly-llvm/emit-intel-att-syntax.rs
diff --git a/tests/assembly/is_aligned.rs b/tests/assembly-llvm/is_aligned.rs
index ab8f7dea808..ab8f7dea808 100644
--- a/tests/assembly/is_aligned.rs
+++ b/tests/assembly-llvm/is_aligned.rs
diff --git a/tests/assembly/issue-83585-small-pod-struct-equality.rs b/tests/assembly-llvm/issue-83585-small-pod-struct-equality.rs
index 14bec1337f0..14bec1337f0 100644
--- a/tests/assembly/issue-83585-small-pod-struct-equality.rs
+++ b/tests/assembly-llvm/issue-83585-small-pod-struct-equality.rs
diff --git a/tests/assembly/libs/issue-115339-zip-arrays.rs b/tests/assembly-llvm/libs/issue-115339-zip-arrays.rs
index 098382502e8..098382502e8 100644
--- a/tests/assembly/libs/issue-115339-zip-arrays.rs
+++ b/tests/assembly-llvm/libs/issue-115339-zip-arrays.rs
diff --git a/tests/assembly/libs/issue-140207-slice-min-simd.rs b/tests/assembly-llvm/libs/issue-140207-slice-min-simd.rs
index 86f067cac08..86f067cac08 100644
--- a/tests/assembly/libs/issue-140207-slice-min-simd.rs
+++ b/tests/assembly-llvm/libs/issue-140207-slice-min-simd.rs
diff --git a/tests/assembly/manual-eq-efficient.rs b/tests/assembly-llvm/manual-eq-efficient.rs
index 8dafed354be..8dafed354be 100644
--- a/tests/assembly/manual-eq-efficient.rs
+++ b/tests/assembly-llvm/manual-eq-efficient.rs
diff --git a/tests/assembly/naked-functions/aarch64-naked-fn-no-bti-prolog.rs b/tests/assembly-llvm/naked-functions/aarch64-naked-fn-no-bti-prolog.rs
index 860ecc3cfcd..860ecc3cfcd 100644
--- a/tests/assembly/naked-functions/aarch64-naked-fn-no-bti-prolog.rs
+++ b/tests/assembly-llvm/naked-functions/aarch64-naked-fn-no-bti-prolog.rs
diff --git a/tests/assembly/naked-functions/aix.rs b/tests/assembly-llvm/naked-functions/aix.rs
index 57ff0e183be..57ff0e183be 100644
--- a/tests/assembly/naked-functions/aix.rs
+++ b/tests/assembly-llvm/naked-functions/aix.rs
diff --git a/tests/assembly/naked-functions/wasm32.rs b/tests/assembly-llvm/naked-functions/wasm32.rs
index 77547e82041..77547e82041 100644
--- a/tests/assembly/naked-functions/wasm32.rs
+++ b/tests/assembly-llvm/naked-functions/wasm32.rs
diff --git a/tests/assembly/naked-functions/x86_64-naked-fn-no-cet-prolog.rs b/tests/assembly-llvm/naked-functions/x86_64-naked-fn-no-cet-prolog.rs
index 81ee9b13b4e..81ee9b13b4e 100644
--- a/tests/assembly/naked-functions/x86_64-naked-fn-no-cet-prolog.rs
+++ b/tests/assembly-llvm/naked-functions/x86_64-naked-fn-no-cet-prolog.rs
diff --git a/tests/assembly/niche-prefer-zero.rs b/tests/assembly-llvm/niche-prefer-zero.rs
index 4e260ebc09b..4e260ebc09b 100644
--- a/tests/assembly/niche-prefer-zero.rs
+++ b/tests/assembly-llvm/niche-prefer-zero.rs
diff --git a/tests/assembly/nvptx-arch-default.rs b/tests/assembly-llvm/nvptx-arch-default.rs
index a621fd6dcb2..a621fd6dcb2 100644
--- a/tests/assembly/nvptx-arch-default.rs
+++ b/tests/assembly-llvm/nvptx-arch-default.rs
diff --git a/tests/assembly/nvptx-arch-emit-asm.rs b/tests/assembly-llvm/nvptx-arch-emit-asm.rs
index e47f8e78e36..e47f8e78e36 100644
--- a/tests/assembly/nvptx-arch-emit-asm.rs
+++ b/tests/assembly-llvm/nvptx-arch-emit-asm.rs
diff --git a/tests/assembly/nvptx-arch-link-arg.rs b/tests/assembly-llvm/nvptx-arch-link-arg.rs
index 3432e6161bf..3432e6161bf 100644
--- a/tests/assembly/nvptx-arch-link-arg.rs
+++ b/tests/assembly-llvm/nvptx-arch-link-arg.rs
diff --git a/tests/assembly/nvptx-arch-target-cpu.rs b/tests/assembly-llvm/nvptx-arch-target-cpu.rs
index 609ab297e63..609ab297e63 100644
--- a/tests/assembly/nvptx-arch-target-cpu.rs
+++ b/tests/assembly-llvm/nvptx-arch-target-cpu.rs
diff --git a/tests/assembly/nvptx-atomics.rs b/tests/assembly-llvm/nvptx-atomics.rs
index 52b8c86d8a9..52b8c86d8a9 100644
--- a/tests/assembly/nvptx-atomics.rs
+++ b/tests/assembly-llvm/nvptx-atomics.rs
diff --git a/tests/assembly/nvptx-c-abi-arg-v7.rs b/tests/assembly-llvm/nvptx-c-abi-arg-v7.rs
index be98b167470..be98b167470 100644
--- a/tests/assembly/nvptx-c-abi-arg-v7.rs
+++ b/tests/assembly-llvm/nvptx-c-abi-arg-v7.rs
diff --git a/tests/assembly/nvptx-c-abi-ret-v7.rs b/tests/assembly-llvm/nvptx-c-abi-ret-v7.rs
index c68c71c872c..c68c71c872c 100644
--- a/tests/assembly/nvptx-c-abi-ret-v7.rs
+++ b/tests/assembly-llvm/nvptx-c-abi-ret-v7.rs
diff --git a/tests/assembly/nvptx-internalizing.rs b/tests/assembly-llvm/nvptx-internalizing.rs
index 0acfd5c2443..0acfd5c2443 100644
--- a/tests/assembly/nvptx-internalizing.rs
+++ b/tests/assembly-llvm/nvptx-internalizing.rs
diff --git a/tests/assembly/nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs b/tests/assembly-llvm/nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs
index f245b4460f2..f245b4460f2 100644
--- a/tests/assembly/nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs
+++ b/tests/assembly-llvm/nvptx-kernel-abi/nvptx-kernel-args-abi-v7.rs
diff --git a/tests/assembly/nvptx-linking-binary.rs b/tests/assembly-llvm/nvptx-linking-binary.rs
index 3b50b472ab1..3b50b472ab1 100644
--- a/tests/assembly/nvptx-linking-binary.rs
+++ b/tests/assembly-llvm/nvptx-linking-binary.rs
diff --git a/tests/assembly/nvptx-linking-cdylib.rs b/tests/assembly-llvm/nvptx-linking-cdylib.rs
index 9742e26fb31..9742e26fb31 100644
--- a/tests/assembly/nvptx-linking-cdylib.rs
+++ b/tests/assembly-llvm/nvptx-linking-cdylib.rs
diff --git a/tests/assembly/nvptx-safe-naming.rs b/tests/assembly-llvm/nvptx-safe-naming.rs
index d7b46aadd9c..d7b46aadd9c 100644
--- a/tests/assembly/nvptx-safe-naming.rs
+++ b/tests/assembly-llvm/nvptx-safe-naming.rs
diff --git a/tests/assembly/panic-no-unwind-no-uwtable.rs b/tests/assembly-llvm/panic-no-unwind-no-uwtable.rs
index b51b173e961..b51b173e961 100644
--- a/tests/assembly/panic-no-unwind-no-uwtable.rs
+++ b/tests/assembly-llvm/panic-no-unwind-no-uwtable.rs
diff --git a/tests/assembly/panic-unwind-no-uwtable.rs b/tests/assembly-llvm/panic-unwind-no-uwtable.rs
index 181656a8987..181656a8987 100644
--- a/tests/assembly/panic-unwind-no-uwtable.rs
+++ b/tests/assembly-llvm/panic-unwind-no-uwtable.rs
diff --git a/tests/assembly/pic-relocation-model.rs b/tests/assembly-llvm/pic-relocation-model.rs
index 15a8723f756..15a8723f756 100644
--- a/tests/assembly/pic-relocation-model.rs
+++ b/tests/assembly-llvm/pic-relocation-model.rs
diff --git a/tests/assembly/pie-relocation-model.rs b/tests/assembly-llvm/pie-relocation-model.rs
index cbe0001041e..cbe0001041e 100644
--- a/tests/assembly/pie-relocation-model.rs
+++ b/tests/assembly-llvm/pie-relocation-model.rs
diff --git a/tests/assembly/powerpc64-struct-abi.rs b/tests/assembly-llvm/powerpc64-struct-abi.rs
index ee4965deb4f..ee4965deb4f 100644
--- a/tests/assembly/powerpc64-struct-abi.rs
+++ b/tests/assembly-llvm/powerpc64-struct-abi.rs
diff --git a/tests/assembly/riscv-float-struct-abi.rs b/tests/assembly-llvm/riscv-float-struct-abi.rs
index 5d9ac9d70b8..5d9ac9d70b8 100644
--- a/tests/assembly/riscv-float-struct-abi.rs
+++ b/tests/assembly-llvm/riscv-float-struct-abi.rs
diff --git a/tests/assembly/riscv-soft-abi-with-float-features.rs b/tests/assembly-llvm/riscv-soft-abi-with-float-features.rs
index 72cbd3841c1..72cbd3841c1 100644
--- a/tests/assembly/riscv-soft-abi-with-float-features.rs
+++ b/tests/assembly-llvm/riscv-soft-abi-with-float-features.rs
diff --git a/tests/assembly/rust-abi-arg-attr.rs b/tests/assembly-llvm/rust-abi-arg-attr.rs
index 4f3673ccfc3..4f3673ccfc3 100644
--- a/tests/assembly/rust-abi-arg-attr.rs
+++ b/tests/assembly-llvm/rust-abi-arg-attr.rs
diff --git a/tests/assembly/s390x-backchain-toggle.rs b/tests/assembly-llvm/s390x-backchain-toggle.rs
index 9bae15b7d11..9bae15b7d11 100644
--- a/tests/assembly/s390x-backchain-toggle.rs
+++ b/tests/assembly-llvm/s390x-backchain-toggle.rs
diff --git a/tests/assembly/s390x-vector-abi.rs b/tests/assembly-llvm/s390x-vector-abi.rs
index fcf42664034..fcf42664034 100644
--- a/tests/assembly/s390x-vector-abi.rs
+++ b/tests/assembly-llvm/s390x-vector-abi.rs
diff --git a/tests/assembly/sanitizer/kcfi/emit-arity-indicator.rs b/tests/assembly-llvm/sanitizer/kcfi/emit-arity-indicator.rs
index f9966a23446..f9966a23446 100644
--- a/tests/assembly/sanitizer/kcfi/emit-arity-indicator.rs
+++ b/tests/assembly-llvm/sanitizer/kcfi/emit-arity-indicator.rs
diff --git a/tests/assembly/simd-bitmask.rs b/tests/assembly-llvm/simd-bitmask.rs
index d3e20f6ae1a..d3e20f6ae1a 100644
--- a/tests/assembly/simd-bitmask.rs
+++ b/tests/assembly-llvm/simd-bitmask.rs
diff --git a/tests/assembly/simd-intrinsic-gather.rs b/tests/assembly-llvm/simd-intrinsic-gather.rs
index bcab0ba1cc0..bcab0ba1cc0 100644
--- a/tests/assembly/simd-intrinsic-gather.rs
+++ b/tests/assembly-llvm/simd-intrinsic-gather.rs
diff --git a/tests/assembly/simd-intrinsic-mask-load.rs b/tests/assembly-llvm/simd-intrinsic-mask-load.rs
index d3f3453a780..d3f3453a780 100644
--- a/tests/assembly/simd-intrinsic-mask-load.rs
+++ b/tests/assembly-llvm/simd-intrinsic-mask-load.rs
diff --git a/tests/assembly/simd-intrinsic-mask-reduce.rs b/tests/assembly-llvm/simd-intrinsic-mask-reduce.rs
index 8b15ed0a254..8b15ed0a254 100644
--- a/tests/assembly/simd-intrinsic-mask-reduce.rs
+++ b/tests/assembly-llvm/simd-intrinsic-mask-reduce.rs
diff --git a/tests/assembly/simd-intrinsic-mask-store.rs b/tests/assembly-llvm/simd-intrinsic-mask-store.rs
index 001762e5060..001762e5060 100644
--- a/tests/assembly/simd-intrinsic-mask-store.rs
+++ b/tests/assembly-llvm/simd-intrinsic-mask-store.rs
diff --git a/tests/assembly/simd-intrinsic-scatter.rs b/tests/assembly-llvm/simd-intrinsic-scatter.rs
index d77dfad3546..d77dfad3546 100644
--- a/tests/assembly/simd-intrinsic-scatter.rs
+++ b/tests/assembly-llvm/simd-intrinsic-scatter.rs
diff --git a/tests/assembly/simd-intrinsic-select.rs b/tests/assembly-llvm/simd-intrinsic-select.rs
index e7c7b0db0d5..e7c7b0db0d5 100644
--- a/tests/assembly/simd-intrinsic-select.rs
+++ b/tests/assembly-llvm/simd-intrinsic-select.rs
diff --git a/tests/assembly/simd/reduce-fadd-unordered.rs b/tests/assembly-llvm/simd/reduce-fadd-unordered.rs
index e872826f6ef..e872826f6ef 100644
--- a/tests/assembly/simd/reduce-fadd-unordered.rs
+++ b/tests/assembly-llvm/simd/reduce-fadd-unordered.rs
diff --git a/tests/assembly/slice-is_ascii.rs b/tests/assembly-llvm/slice-is_ascii.rs
index e53cd5160cf..e53cd5160cf 100644
--- a/tests/assembly/slice-is_ascii.rs
+++ b/tests/assembly-llvm/slice-is_ascii.rs
diff --git a/tests/assembly/small_data_threshold.rs b/tests/assembly-llvm/small_data_threshold.rs
index 2abe8687d8b..2abe8687d8b 100644
--- a/tests/assembly/small_data_threshold.rs
+++ b/tests/assembly-llvm/small_data_threshold.rs
diff --git a/tests/assembly/sparc-struct-abi.rs b/tests/assembly-llvm/sparc-struct-abi.rs
index b1594428811..b1594428811 100644
--- a/tests/assembly/sparc-struct-abi.rs
+++ b/tests/assembly-llvm/sparc-struct-abi.rs
diff --git a/tests/assembly/stack-probes.rs b/tests/assembly-llvm/stack-probes.rs
index de245431f47..de245431f47 100644
--- a/tests/assembly/stack-probes.rs
+++ b/tests/assembly-llvm/stack-probes.rs
diff --git a/tests/assembly/stack-protector/stack-protector-heuristics-effect-windows-32bit.rs b/tests/assembly-llvm/stack-protector/stack-protector-heuristics-effect-windows-32bit.rs
index 3287e018b40..3287e018b40 100644
--- a/tests/assembly/stack-protector/stack-protector-heuristics-effect-windows-32bit.rs
+++ b/tests/assembly-llvm/stack-protector/stack-protector-heuristics-effect-windows-32bit.rs
diff --git a/tests/assembly/stack-protector/stack-protector-heuristics-effect-windows-64bit.rs b/tests/assembly-llvm/stack-protector/stack-protector-heuristics-effect-windows-64bit.rs
index 9a3dabc74dd..9a3dabc74dd 100644
--- a/tests/assembly/stack-protector/stack-protector-heuristics-effect-windows-64bit.rs
+++ b/tests/assembly-llvm/stack-protector/stack-protector-heuristics-effect-windows-64bit.rs
diff --git a/tests/assembly/stack-protector/stack-protector-heuristics-effect.rs b/tests/assembly-llvm/stack-protector/stack-protector-heuristics-effect.rs
index ae281cb95da..ae281cb95da 100644
--- a/tests/assembly/stack-protector/stack-protector-heuristics-effect.rs
+++ b/tests/assembly-llvm/stack-protector/stack-protector-heuristics-effect.rs
diff --git a/tests/assembly/stack-protector/stack-protector-target-support.rs b/tests/assembly-llvm/stack-protector/stack-protector-target-support.rs
index a937256a60f..a937256a60f 100644
--- a/tests/assembly/stack-protector/stack-protector-target-support.rs
+++ b/tests/assembly-llvm/stack-protector/stack-protector-target-support.rs
diff --git a/tests/assembly/static-relocation-model.rs b/tests/assembly-llvm/static-relocation-model.rs
index 35ad94133b2..35ad94133b2 100644
--- a/tests/assembly/static-relocation-model.rs
+++ b/tests/assembly-llvm/static-relocation-model.rs
diff --git a/tests/assembly/strict_provenance.rs b/tests/assembly-llvm/strict_provenance.rs
index 1a797670962..1a797670962 100644
--- a/tests/assembly/strict_provenance.rs
+++ b/tests/assembly-llvm/strict_provenance.rs
diff --git a/tests/assembly/target-feature-multiple.rs b/tests/assembly-llvm/target-feature-multiple.rs
index bc432d21931..9a941c52bda 100644
--- a/tests/assembly/target-feature-multiple.rs
+++ b/tests/assembly-llvm/target-feature-multiple.rs
@@ -15,7 +15,7 @@
 // > LLVM ERROR: Cannot select: 0x7f00f400c010: i32,i32,ch = X86ISD::RDSEED 0x7f00f400bfa8:2
 // > In function: foo
 //
-// See also tests/codegen/target-feature-overrides.rs
+// See also tests/codegen-llvm/target-feature-overrides.rs
 #![feature(no_core, lang_items, link_llvm_intrinsics, abi_unadjusted)]
 #![crate_type = "lib"]
 #![no_core]
diff --git a/tests/assembly/targets/targets-amdgpu.rs b/tests/assembly-llvm/targets/targets-amdgpu.rs
index 1d10b8fc315..1d10b8fc315 100644
--- a/tests/assembly/targets/targets-amdgpu.rs
+++ b/tests/assembly-llvm/targets/targets-amdgpu.rs
diff --git a/tests/assembly/targets/targets-elf.rs b/tests/assembly-llvm/targets/targets-elf.rs
index edf16548e7d..edf16548e7d 100644
--- a/tests/assembly/targets/targets-elf.rs
+++ b/tests/assembly-llvm/targets/targets-elf.rs
diff --git a/tests/assembly/targets/targets-macho.rs b/tests/assembly-llvm/targets/targets-macho.rs
index 92bde1c6971..92bde1c6971 100644
--- a/tests/assembly/targets/targets-macho.rs
+++ b/tests/assembly-llvm/targets/targets-macho.rs
diff --git a/tests/assembly/targets/targets-nvptx.rs b/tests/assembly-llvm/targets/targets-nvptx.rs
index 49c12aebaaa..49c12aebaaa 100644
--- a/tests/assembly/targets/targets-nvptx.rs
+++ b/tests/assembly-llvm/targets/targets-nvptx.rs
diff --git a/tests/assembly/targets/targets-pe.rs b/tests/assembly-llvm/targets/targets-pe.rs
index de29b9af502..de29b9af502 100644
--- a/tests/assembly/targets/targets-pe.rs
+++ b/tests/assembly-llvm/targets/targets-pe.rs
diff --git a/tests/assembly/wasm_exceptions.rs b/tests/assembly-llvm/wasm_exceptions.rs
index 704e8026f3f..704e8026f3f 100644
--- a/tests/assembly/wasm_exceptions.rs
+++ b/tests/assembly-llvm/wasm_exceptions.rs
diff --git a/tests/assembly/x86-return-float.rs b/tests/assembly-llvm/x86-return-float.rs
index 165c11d2280..165c11d2280 100644
--- a/tests/assembly/x86-return-float.rs
+++ b/tests/assembly-llvm/x86-return-float.rs
diff --git a/tests/assembly/x86_64-array-pair-load-store-merge.rs b/tests/assembly-llvm/x86_64-array-pair-load-store-merge.rs
index 56a1a9e8206..56a1a9e8206 100644
--- a/tests/assembly/x86_64-array-pair-load-store-merge.rs
+++ b/tests/assembly-llvm/x86_64-array-pair-load-store-merge.rs
diff --git a/tests/assembly/x86_64-bigint-helpers.rs b/tests/assembly-llvm/x86_64-bigint-helpers.rs
index 58785932bc2..58785932bc2 100644
--- a/tests/assembly/x86_64-bigint-helpers.rs
+++ b/tests/assembly-llvm/x86_64-bigint-helpers.rs
diff --git a/tests/assembly/x86_64-cmp.rs b/tests/assembly-llvm/x86_64-cmp.rs
index 26c9013d96f..26c9013d96f 100644
--- a/tests/assembly/x86_64-cmp.rs
+++ b/tests/assembly-llvm/x86_64-cmp.rs
diff --git a/tests/assembly/x86_64-floating-point-clamp.rs b/tests/assembly-llvm/x86_64-floating-point-clamp.rs
index 6b0c29c5f21..6b0c29c5f21 100644
--- a/tests/assembly/x86_64-floating-point-clamp.rs
+++ b/tests/assembly-llvm/x86_64-floating-point-clamp.rs
diff --git a/tests/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-load.rs b/tests/assembly-llvm/x86_64-fortanix-unknown-sgx-lvi-generic-load.rs
index f5e2f18e68e..f5e2f18e68e 100644
--- a/tests/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-load.rs
+++ b/tests/assembly-llvm/x86_64-fortanix-unknown-sgx-lvi-generic-load.rs
diff --git a/tests/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs b/tests/assembly-llvm/x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs
index f16d68fa255..f16d68fa255 100644
--- a/tests/assembly/x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs
+++ b/tests/assembly-llvm/x86_64-fortanix-unknown-sgx-lvi-generic-ret.rs
diff --git a/tests/assembly/x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs b/tests/assembly-llvm/x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs
index a729df8e166..a729df8e166 100644
--- a/tests/assembly/x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs
+++ b/tests/assembly-llvm/x86_64-fortanix-unknown-sgx-lvi-inline-assembly.rs
diff --git a/tests/assembly/x86_64-function-return.rs b/tests/assembly-llvm/x86_64-function-return.rs
index 7fd57200a9e..7fd57200a9e 100644
--- a/tests/assembly/x86_64-function-return.rs
+++ b/tests/assembly-llvm/x86_64-function-return.rs
diff --git a/tests/assembly/x86_64-no-jump-tables.rs b/tests/assembly-llvm/x86_64-no-jump-tables.rs
index bb10042d8f6..bb10042d8f6 100644
--- a/tests/assembly/x86_64-no-jump-tables.rs
+++ b/tests/assembly-llvm/x86_64-no-jump-tables.rs
diff --git a/tests/assembly/x86_64-sse_crc.rs b/tests/assembly-llvm/x86_64-sse_crc.rs
index bde58955a21..bde58955a21 100644
--- a/tests/assembly/x86_64-sse_crc.rs
+++ b/tests/assembly-llvm/x86_64-sse_crc.rs
diff --git a/tests/assembly/x86_64-typed-swap.rs b/tests/assembly-llvm/x86_64-typed-swap.rs
index a6753011d36..a6753011d36 100644
--- a/tests/assembly/x86_64-typed-swap.rs
+++ b/tests/assembly-llvm/x86_64-typed-swap.rs
diff --git a/tests/assembly/x86_64-windows-float-abi.rs b/tests/assembly-llvm/x86_64-windows-float-abi.rs
index cbc80910851..cbc80910851 100644
--- a/tests/assembly/x86_64-windows-float-abi.rs
+++ b/tests/assembly-llvm/x86_64-windows-float-abi.rs
diff --git a/tests/assembly/x86_64-windows-i128-abi.rs b/tests/assembly-llvm/x86_64-windows-i128-abi.rs
index d2aefb7daa6..d2aefb7daa6 100644
--- a/tests/assembly/x86_64-windows-i128-abi.rs
+++ b/tests/assembly-llvm/x86_64-windows-i128-abi.rs
diff --git a/tests/assembly/x86_64-xray.rs b/tests/assembly-llvm/x86_64-xray.rs
index 4cf3e8cda13..4cf3e8cda13 100644
--- a/tests/assembly/x86_64-xray.rs
+++ b/tests/assembly-llvm/x86_64-xray.rs
diff --git a/tests/auxiliary/minisimd.rs b/tests/auxiliary/minisimd.rs
new file mode 100644
index 00000000000..ff0c996de1c
--- /dev/null
+++ b/tests/auxiliary/minisimd.rs
@@ -0,0 +1,160 @@
+//! Auxiliary crate for tests that need SIMD types.
+//!
+//! Historically the tests just made their own, but projections into simd types
+//! was banned by <https://github.com/rust-lang/compiler-team/issues/838>, which
+//! breaks `derive(Clone)`, so this exists to give easily-usable types that can
+//! be used without copy-pasting the definitions of the helpers everywhere.
+//!
+//! This makes no attempt to guard against ICEs.  Using it with proper types
+//! and such is your responsibility in the tests you write.
+
+#![allow(unused)]
+#![allow(non_camel_case_types)]
+
+// The field is currently left `pub` for convenience in porting tests, many of
+// which attempt to just construct it directly. That still works; it's just the
+// `.0` projection that doesn't.
+#[repr(simd)]
+#[derive(Copy, Eq)]
+pub struct Simd<T, const N: usize>(pub [T; N]);
+
+impl<T: Copy, const N: usize> Clone for Simd<T, N> {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+
+impl<T: PartialEq, const N: usize> PartialEq for Simd<T, N> {
+    fn eq(&self, other: &Self) -> bool {
+        self.as_array() == other.as_array()
+    }
+}
+
+impl<T: core::fmt::Debug, const N: usize> core::fmt::Debug for Simd<T, N> {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> Result<(), core::fmt::Error> {
+        <[T; N] as core::fmt::Debug>::fmt(self.as_array(), f)
+    }
+}
+
+impl<T, const N: usize> core::ops::Index<usize> for Simd<T, N> {
+    type Output = T;
+    fn index(&self, i: usize) -> &T {
+        &self.as_array()[i]
+    }
+}
+
+impl<T, const N: usize> Simd<T, N> {
+    pub const fn from_array(a: [T; N]) -> Self {
+        Simd(a)
+    }
+    pub fn as_array(&self) -> &[T; N] {
+        let p: *const Self = self;
+        unsafe { &*p.cast::<[T; N]>() }
+    }
+    pub fn into_array(self) -> [T; N]
+    where
+        T: Copy,
+    {
+        *self.as_array()
+    }
+}
+
+pub type u8x2 = Simd<u8, 2>;
+pub type u8x4 = Simd<u8, 4>;
+pub type u8x8 = Simd<u8, 8>;
+pub type u8x16 = Simd<u8, 16>;
+pub type u8x32 = Simd<u8, 32>;
+pub type u8x64 = Simd<u8, 64>;
+
+pub type u16x2 = Simd<u16, 2>;
+pub type u16x4 = Simd<u16, 4>;
+pub type u16x8 = Simd<u16, 8>;
+pub type u16x16 = Simd<u16, 16>;
+pub type u16x32 = Simd<u16, 32>;
+
+pub type u32x2 = Simd<u32, 2>;
+pub type u32x4 = Simd<u32, 4>;
+pub type u32x8 = Simd<u32, 8>;
+pub type u32x16 = Simd<u32, 16>;
+
+pub type u64x2 = Simd<u64, 2>;
+pub type u64x4 = Simd<u64, 4>;
+pub type u64x8 = Simd<u64, 8>;
+
+pub type u128x2 = Simd<u128, 2>;
+pub type u128x4 = Simd<u128, 4>;
+
+pub type i8x2 = Simd<i8, 2>;
+pub type i8x4 = Simd<i8, 4>;
+pub type i8x8 = Simd<i8, 8>;
+pub type i8x16 = Simd<i8, 16>;
+pub type i8x32 = Simd<i8, 32>;
+pub type i8x64 = Simd<i8, 64>;
+
+pub type i16x2 = Simd<i16, 2>;
+pub type i16x4 = Simd<i16, 4>;
+pub type i16x8 = Simd<i16, 8>;
+pub type i16x16 = Simd<i16, 16>;
+pub type i16x32 = Simd<i16, 32>;
+
+pub type i32x2 = Simd<i32, 2>;
+pub type i32x4 = Simd<i32, 4>;
+pub type i32x8 = Simd<i32, 8>;
+pub type i32x16 = Simd<i32, 16>;
+
+pub type i64x2 = Simd<i64, 2>;
+pub type i64x4 = Simd<i64, 4>;
+pub type i64x8 = Simd<i64, 8>;
+
+pub type i128x2 = Simd<i128, 2>;
+pub type i128x4 = Simd<i128, 4>;
+
+pub type f32x2 = Simd<f32, 2>;
+pub type f32x4 = Simd<f32, 4>;
+pub type f32x8 = Simd<f32, 8>;
+pub type f32x16 = Simd<f32, 16>;
+
+pub type f64x2 = Simd<f64, 2>;
+pub type f64x4 = Simd<f64, 4>;
+pub type f64x8 = Simd<f64, 8>;
+
+// The field is currently left `pub` for convenience in porting tests, many of
+// which attempt to just construct it directly. That still works; it's just the
+// `.0` projection that doesn't.
+#[repr(simd, packed)]
+#[derive(Copy)]
+pub struct PackedSimd<T, const N: usize>(pub [T; N]);
+
+impl<T: Copy, const N: usize> Clone for PackedSimd<T, N> {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+
+impl<T: PartialEq, const N: usize> PartialEq for PackedSimd<T, N> {
+    fn eq(&self, other: &Self) -> bool {
+        self.as_array() == other.as_array()
+    }
+}
+
+impl<T: core::fmt::Debug, const N: usize> core::fmt::Debug for PackedSimd<T, N> {
+    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> Result<(), core::fmt::Error> {
+        <[T; N] as core::fmt::Debug>::fmt(self.as_array(), f)
+    }
+}
+
+impl<T, const N: usize> PackedSimd<T, N> {
+    pub const fn from_array(a: [T; N]) -> Self {
+        PackedSimd(a)
+    }
+    pub fn as_array(&self) -> &[T; N] {
+        let p: *const Self = self;
+        unsafe { &*p.cast::<[T; N]>() }
+    }
+    pub fn into_array(self) -> [T; N]
+    where
+        T: Copy,
+    {
+        *self.as_array()
+    }
+}
diff --git a/tests/codegen/README.md b/tests/codegen-llvm/README.md
index 8f2daaafcc7..8f2daaafcc7 100644
--- a/tests/codegen/README.md
+++ b/tests/codegen-llvm/README.md
diff --git a/tests/codegen/aarch64-softfloat.rs b/tests/codegen-llvm/aarch64-softfloat.rs
index 4f5366e047f..4f5366e047f 100644
--- a/tests/codegen/aarch64-softfloat.rs
+++ b/tests/codegen-llvm/aarch64-softfloat.rs
diff --git a/tests/codegen/aarch64-struct-align-128.rs b/tests/codegen-llvm/aarch64-struct-align-128.rs
index ba1d19680f4..ba1d19680f4 100644
--- a/tests/codegen/aarch64-struct-align-128.rs
+++ b/tests/codegen-llvm/aarch64-struct-align-128.rs
diff --git a/tests/codegen/abi-efiapi.rs b/tests/codegen-llvm/abi-efiapi.rs
index 1736f0daf0f..1736f0daf0f 100644
--- a/tests/codegen/abi-efiapi.rs
+++ b/tests/codegen-llvm/abi-efiapi.rs
diff --git a/tests/codegen/abi-main-signature-16bit-c-int.rs b/tests/codegen-llvm/abi-main-signature-16bit-c-int.rs
index d44b80475e4..d44b80475e4 100644
--- a/tests/codegen/abi-main-signature-16bit-c-int.rs
+++ b/tests/codegen-llvm/abi-main-signature-16bit-c-int.rs
diff --git a/tests/codegen/abi-main-signature-32bit-c-int.rs b/tests/codegen-llvm/abi-main-signature-32bit-c-int.rs
index ce475adde44..ce475adde44 100644
--- a/tests/codegen/abi-main-signature-32bit-c-int.rs
+++ b/tests/codegen-llvm/abi-main-signature-32bit-c-int.rs
diff --git a/tests/codegen/abi-repr-ext.rs b/tests/codegen-llvm/abi-repr-ext.rs
index 1da28a94d9d..1da28a94d9d 100644
--- a/tests/codegen/abi-repr-ext.rs
+++ b/tests/codegen-llvm/abi-repr-ext.rs
diff --git a/tests/codegen/abi-sysv64.rs b/tests/codegen-llvm/abi-sysv64.rs
index 7ade17f2bae..7ade17f2bae 100644
--- a/tests/codegen/abi-sysv64.rs
+++ b/tests/codegen-llvm/abi-sysv64.rs
diff --git a/tests/codegen/abi-win64-zst.rs b/tests/codegen-llvm/abi-win64-zst.rs
index e46f9666d42..e46f9666d42 100644
--- a/tests/codegen/abi-win64-zst.rs
+++ b/tests/codegen-llvm/abi-win64-zst.rs
diff --git a/tests/codegen/abi-x86-interrupt.rs b/tests/codegen-llvm/abi-x86-interrupt.rs
index 9a1ded2c9e3..9a1ded2c9e3 100644
--- a/tests/codegen/abi-x86-interrupt.rs
+++ b/tests/codegen-llvm/abi-x86-interrupt.rs
diff --git a/tests/codegen/abi-x86-sse.rs b/tests/codegen-llvm/abi-x86-sse.rs
index 68d2acfb527..68d2acfb527 100644
--- a/tests/codegen/abi-x86-sse.rs
+++ b/tests/codegen-llvm/abi-x86-sse.rs
diff --git a/tests/codegen/abi-x86_64_sysv.rs b/tests/codegen-llvm/abi-x86_64_sysv.rs
index 09909f994d6..09909f994d6 100644
--- a/tests/codegen/abi-x86_64_sysv.rs
+++ b/tests/codegen-llvm/abi-x86_64_sysv.rs
diff --git a/tests/codegen/addr-of-mutate.rs b/tests/codegen-llvm/addr-of-mutate.rs
index 14bc4b8ab28..14bc4b8ab28 100644
--- a/tests/codegen/addr-of-mutate.rs
+++ b/tests/codegen-llvm/addr-of-mutate.rs
diff --git a/tests/codegen/adjustments.rs b/tests/codegen-llvm/adjustments.rs
index 7f7831def08..7f7831def08 100644
--- a/tests/codegen/adjustments.rs
+++ b/tests/codegen-llvm/adjustments.rs
diff --git a/tests/codegen/align-byval-alignment-mismatch.rs b/tests/codegen-llvm/align-byval-alignment-mismatch.rs
index c69fc2de9d2..c69fc2de9d2 100644
--- a/tests/codegen/align-byval-alignment-mismatch.rs
+++ b/tests/codegen-llvm/align-byval-alignment-mismatch.rs
diff --git a/tests/codegen/align-byval-vector.rs b/tests/codegen-llvm/align-byval-vector.rs
index c33b41a7bbe..c33b41a7bbe 100644
--- a/tests/codegen/align-byval-vector.rs
+++ b/tests/codegen-llvm/align-byval-vector.rs
diff --git a/tests/codegen/align-byval.rs b/tests/codegen-llvm/align-byval.rs
index 75dabd74a79..75dabd74a79 100644
--- a/tests/codegen/align-byval.rs
+++ b/tests/codegen-llvm/align-byval.rs
diff --git a/tests/codegen/align-enum.rs b/tests/codegen-llvm/align-enum.rs
index e8dd95d3afb..e8dd95d3afb 100644
--- a/tests/codegen/align-enum.rs
+++ b/tests/codegen-llvm/align-enum.rs
diff --git a/tests/codegen/align-fn.rs b/tests/codegen-llvm/align-fn.rs
index fd572910c28..cbc24e2ae2e 100644
--- a/tests/codegen/align-fn.rs
+++ b/tests/codegen-llvm/align-fn.rs
@@ -3,11 +3,13 @@
 //@ ignore-wasm32 aligning functions is not currently supported on wasm (#143368)
 
 #![crate_type = "lib"]
+// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
+#![feature(rustc_attrs)]
 #![feature(fn_align)]
 
 // CHECK: align 16
 #[unsafe(no_mangle)]
-#[align(16)]
+#[rustc_align(16)]
 pub fn fn_align() {}
 
 pub struct A;
@@ -15,12 +17,12 @@ pub struct A;
 impl A {
     // CHECK: align 16
     #[unsafe(no_mangle)]
-    #[align(16)]
+    #[rustc_align(16)]
     pub fn method_align(self) {}
 
     // CHECK: align 16
     #[unsafe(no_mangle)]
-    #[align(16)]
+    #[rustc_align(16)]
     pub fn associated_fn() {}
 }
 
@@ -29,18 +31,18 @@ trait T: Sized {
 
     fn trait_method(self) {}
 
-    #[align(8)]
+    #[rustc_align(8)]
     fn trait_method_inherit_low(self);
 
-    #[align(32)]
+    #[rustc_align(32)]
     fn trait_method_inherit_high(self);
 
-    #[align(32)]
+    #[rustc_align(32)]
     fn trait_method_inherit_default(self) {}
 
-    #[align(4)]
-    #[align(128)]
-    #[align(8)]
+    #[rustc_align(4)]
+    #[rustc_align(128)]
+    #[rustc_align(8)]
     fn inherit_highest(self) {}
 }
 
@@ -48,27 +50,27 @@ impl T for A {
     // CHECK-LABEL: trait_fn
     // CHECK-SAME: align 16
     #[unsafe(no_mangle)]
-    #[align(16)]
+    #[rustc_align(16)]
     fn trait_fn() {}
 
     // CHECK-LABEL: trait_method
     // CHECK-SAME: align 16
     #[unsafe(no_mangle)]
-    #[align(16)]
+    #[rustc_align(16)]
     fn trait_method(self) {}
 
     // The prototype's align is ignored because the align here is higher.
     // CHECK-LABEL: trait_method_inherit_low
     // CHECK-SAME: align 16
     #[unsafe(no_mangle)]
-    #[align(16)]
+    #[rustc_align(16)]
     fn trait_method_inherit_low(self) {}
 
     // The prototype's align is used because it is higher.
     // CHECK-LABEL: trait_method_inherit_high
     // CHECK-SAME: align 32
     #[unsafe(no_mangle)]
-    #[align(16)]
+    #[rustc_align(16)]
     fn trait_method_inherit_high(self) {}
 
     // The prototype's align inherited.
@@ -81,8 +83,8 @@ impl T for A {
     // CHECK-LABEL: inherit_highest
     // CHECK-SAME: align 128
     #[unsafe(no_mangle)]
-    #[align(32)]
-    #[align(64)]
+    #[rustc_align(32)]
+    #[rustc_align(64)]
     fn inherit_highest(self) {}
 }
 
@@ -90,7 +92,7 @@ trait HasDefaultImpl: Sized {
     // CHECK-LABEL: inherit_from_default_method
     // CHECK-LABEL: inherit_from_default_method
     // CHECK-SAME: align 32
-    #[align(32)]
+    #[rustc_align(32)]
     fn inherit_from_default_method(self) {}
 }
 
@@ -101,35 +103,35 @@ impl HasDefaultImpl for InstantiateDefaultMethods {}
 // CHECK-LABEL: align_specified_twice_1
 // CHECK-SAME: align 64
 #[unsafe(no_mangle)]
-#[align(32)]
-#[align(64)]
+#[rustc_align(32)]
+#[rustc_align(64)]
 pub fn align_specified_twice_1() {}
 
 // CHECK-LABEL: align_specified_twice_2
 // CHECK-SAME: align 128
 #[unsafe(no_mangle)]
-#[align(128)]
-#[align(32)]
+#[rustc_align(128)]
+#[rustc_align(32)]
 pub fn align_specified_twice_2() {}
 
 // CHECK-LABEL: align_specified_twice_3
 // CHECK-SAME: align 256
 #[unsafe(no_mangle)]
-#[align(32)]
-#[align(256)]
+#[rustc_align(32)]
+#[rustc_align(256)]
 pub fn align_specified_twice_3() {}
 
 const _: () = {
     // CHECK-LABEL: align_unmangled
     // CHECK-SAME: align 256
     #[unsafe(no_mangle)]
-    #[align(32)]
-    #[align(256)]
+    #[rustc_align(32)]
+    #[rustc_align(256)]
     extern "C" fn align_unmangled() {}
 };
 
 unsafe extern "C" {
-    #[align(256)]
+    #[rustc_align(256)]
     fn align_unmangled();
 }
 
@@ -137,5 +139,5 @@ unsafe extern "C" {
 // CHECK-LABEL: async_align
 // CHECK-SAME: align 64
 #[unsafe(no_mangle)]
-#[align(64)]
+#[rustc_align(64)]
 pub async fn async_align() {}
diff --git a/tests/codegen/align-offset.rs b/tests/codegen-llvm/align-offset.rs
index 21062cc0a91..21062cc0a91 100644
--- a/tests/codegen/align-offset.rs
+++ b/tests/codegen-llvm/align-offset.rs
diff --git a/tests/codegen/align-struct.rs b/tests/codegen-llvm/align-struct.rs
index d4cc65e9158..d4cc65e9158 100644
--- a/tests/codegen/align-struct.rs
+++ b/tests/codegen-llvm/align-struct.rs
diff --git a/tests/codegen/alloc-optimisation.rs b/tests/codegen-llvm/alloc-optimisation.rs
index 3735860d510..3735860d510 100644
--- a/tests/codegen/alloc-optimisation.rs
+++ b/tests/codegen-llvm/alloc-optimisation.rs
diff --git a/tests/codegen/amdgpu-addrspacecast.rs b/tests/codegen-llvm/amdgpu-addrspacecast.rs
index 7fe630a7efa..7fe630a7efa 100644
--- a/tests/codegen/amdgpu-addrspacecast.rs
+++ b/tests/codegen-llvm/amdgpu-addrspacecast.rs
diff --git a/tests/codegen/array-clone.rs b/tests/codegen-llvm/array-clone.rs
index 35445174684..35445174684 100644
--- a/tests/codegen/array-clone.rs
+++ b/tests/codegen-llvm/array-clone.rs
diff --git a/tests/codegen/array-cmp.rs b/tests/codegen-llvm/array-cmp.rs
index 0d337655401..0d337655401 100644
--- a/tests/codegen/array-cmp.rs
+++ b/tests/codegen-llvm/array-cmp.rs
diff --git a/tests/codegen/array-codegen.rs b/tests/codegen-llvm/array-codegen.rs
index 9b0c6e8c347..9b0c6e8c347 100644
--- a/tests/codegen/array-codegen.rs
+++ b/tests/codegen-llvm/array-codegen.rs
diff --git a/tests/codegen/array-equality.rs b/tests/codegen-llvm/array-equality.rs
index fa0475bf480..fa0475bf480 100644
--- a/tests/codegen/array-equality.rs
+++ b/tests/codegen-llvm/array-equality.rs
diff --git a/tests/codegen/array-from_fn.rs b/tests/codegen-llvm/array-from_fn.rs
index 7202d0c67e6..7202d0c67e6 100644
--- a/tests/codegen/array-from_fn.rs
+++ b/tests/codegen-llvm/array-from_fn.rs
diff --git a/tests/codegen/array-map.rs b/tests/codegen-llvm/array-map.rs
index f49dddcfc20..f49dddcfc20 100644
--- a/tests/codegen/array-map.rs
+++ b/tests/codegen-llvm/array-map.rs
diff --git a/tests/codegen/array-optimized.rs b/tests/codegen-llvm/array-optimized.rs
index 000163d5519..000163d5519 100644
--- a/tests/codegen/array-optimized.rs
+++ b/tests/codegen-llvm/array-optimized.rs
diff --git a/tests/codegen/array-repeat.rs b/tests/codegen-llvm/array-repeat.rs
index 4c755df9390..4c755df9390 100644
--- a/tests/codegen/array-repeat.rs
+++ b/tests/codegen-llvm/array-repeat.rs
diff --git a/tests/codegen/ascii-char.rs b/tests/codegen-llvm/ascii-char.rs
index 86ec9d73afe..86ec9d73afe 100644
--- a/tests/codegen/ascii-char.rs
+++ b/tests/codegen-llvm/ascii-char.rs
diff --git a/tests/codegen/asm/aarch64-clobbers.rs b/tests/codegen-llvm/asm/aarch64-clobbers.rs
index dd3ba1510b5..dd3ba1510b5 100644
--- a/tests/codegen/asm/aarch64-clobbers.rs
+++ b/tests/codegen-llvm/asm/aarch64-clobbers.rs
diff --git a/tests/codegen/asm/avr-clobbers.rs b/tests/codegen-llvm/asm/avr-clobbers.rs
index 9451127bf04..9451127bf04 100644
--- a/tests/codegen/asm/avr-clobbers.rs
+++ b/tests/codegen-llvm/asm/avr-clobbers.rs
diff --git a/tests/codegen/asm/bpf-clobbers.rs b/tests/codegen-llvm/asm/bpf-clobbers.rs
index 1117549b1ec..1117549b1ec 100644
--- a/tests/codegen/asm/bpf-clobbers.rs
+++ b/tests/codegen-llvm/asm/bpf-clobbers.rs
diff --git a/tests/codegen/asm/critical.rs b/tests/codegen-llvm/asm/critical.rs
index 0f29d7c69b4..0f29d7c69b4 100644
--- a/tests/codegen/asm/critical.rs
+++ b/tests/codegen-llvm/asm/critical.rs
diff --git a/tests/codegen/asm/csky-clobbers.rs b/tests/codegen-llvm/asm/csky-clobbers.rs
index 4986d0fe56d..4986d0fe56d 100644
--- a/tests/codegen/asm/csky-clobbers.rs
+++ b/tests/codegen-llvm/asm/csky-clobbers.rs
diff --git a/tests/codegen/asm/foo.s b/tests/codegen-llvm/asm/foo.s
index 304d82aa0c6..304d82aa0c6 100644
--- a/tests/codegen/asm/foo.s
+++ b/tests/codegen-llvm/asm/foo.s
diff --git a/tests/codegen/asm/global_asm.rs b/tests/codegen-llvm/asm/global_asm.rs
index 32075daa3cf..32075daa3cf 100644
--- a/tests/codegen/asm/global_asm.rs
+++ b/tests/codegen-llvm/asm/global_asm.rs
diff --git a/tests/codegen/asm/global_asm_include.rs b/tests/codegen-llvm/asm/global_asm_include.rs
index 98be9c3e333..98be9c3e333 100644
--- a/tests/codegen/asm/global_asm_include.rs
+++ b/tests/codegen-llvm/asm/global_asm_include.rs
diff --git a/tests/codegen/asm/global_asm_x2.rs b/tests/codegen-llvm/asm/global_asm_x2.rs
index 9e3a00f0680..9e3a00f0680 100644
--- a/tests/codegen/asm/global_asm_x2.rs
+++ b/tests/codegen-llvm/asm/global_asm_x2.rs
diff --git a/tests/codegen/asm/goto.rs b/tests/codegen-llvm/asm/goto.rs
index f68c399c920..f68c399c920 100644
--- a/tests/codegen/asm/goto.rs
+++ b/tests/codegen-llvm/asm/goto.rs
diff --git a/tests/codegen/asm/hexagon-clobbers.rs b/tests/codegen-llvm/asm/hexagon-clobbers.rs
index 800b8964669..800b8964669 100644
--- a/tests/codegen/asm/hexagon-clobbers.rs
+++ b/tests/codegen-llvm/asm/hexagon-clobbers.rs
diff --git a/tests/codegen/asm/may_unwind.rs b/tests/codegen-llvm/asm/may_unwind.rs
index 63cdec7584c..63cdec7584c 100644
--- a/tests/codegen/asm/may_unwind.rs
+++ b/tests/codegen-llvm/asm/may_unwind.rs
diff --git a/tests/codegen/asm/maybe-uninit.rs b/tests/codegen-llvm/asm/maybe-uninit.rs
index d76d5cb1312..d76d5cb1312 100644
--- a/tests/codegen/asm/maybe-uninit.rs
+++ b/tests/codegen-llvm/asm/maybe-uninit.rs
diff --git a/tests/codegen/asm/msp430-clobbers.rs b/tests/codegen-llvm/asm/msp430-clobbers.rs
index 2c8d29cffc4..2c8d29cffc4 100644
--- a/tests/codegen/asm/msp430-clobbers.rs
+++ b/tests/codegen-llvm/asm/msp430-clobbers.rs
diff --git a/tests/codegen/asm/multiple-options.rs b/tests/codegen-llvm/asm/multiple-options.rs
index 4d87471a193..4d87471a193 100644
--- a/tests/codegen/asm/multiple-options.rs
+++ b/tests/codegen-llvm/asm/multiple-options.rs
diff --git a/tests/codegen/asm/options.rs b/tests/codegen-llvm/asm/options.rs
index c087f91fd43..c087f91fd43 100644
--- a/tests/codegen/asm/options.rs
+++ b/tests/codegen-llvm/asm/options.rs
diff --git a/tests/codegen/asm/powerpc-clobbers.rs b/tests/codegen-llvm/asm/powerpc-clobbers.rs
index f7fc7eea5d5..f7fc7eea5d5 100644
--- a/tests/codegen/asm/powerpc-clobbers.rs
+++ b/tests/codegen-llvm/asm/powerpc-clobbers.rs
diff --git a/tests/codegen/asm/riscv-clobbers.rs b/tests/codegen-llvm/asm/riscv-clobbers.rs
index e55b6731098..e55b6731098 100644
--- a/tests/codegen/asm/riscv-clobbers.rs
+++ b/tests/codegen-llvm/asm/riscv-clobbers.rs
diff --git a/tests/codegen/asm/s390x-clobbers.rs b/tests/codegen-llvm/asm/s390x-clobbers.rs
index 0ba22a32abf..0ba22a32abf 100644
--- a/tests/codegen/asm/s390x-clobbers.rs
+++ b/tests/codegen-llvm/asm/s390x-clobbers.rs
diff --git a/tests/codegen/asm/sanitize-llvm.rs b/tests/codegen-llvm/asm/sanitize-llvm.rs
index 97a77033284..97a77033284 100644
--- a/tests/codegen/asm/sanitize-llvm.rs
+++ b/tests/codegen-llvm/asm/sanitize-llvm.rs
diff --git a/tests/codegen/asm/sparc-clobbers.rs b/tests/codegen-llvm/asm/sparc-clobbers.rs
index a71715ed94d..a71715ed94d 100644
--- a/tests/codegen/asm/sparc-clobbers.rs
+++ b/tests/codegen-llvm/asm/sparc-clobbers.rs
diff --git a/tests/codegen/asm/x86-clobber_abi.rs b/tests/codegen-llvm/asm/x86-clobber_abi.rs
index 5b34b4e8ef3..5b34b4e8ef3 100644
--- a/tests/codegen/asm/x86-clobber_abi.rs
+++ b/tests/codegen-llvm/asm/x86-clobber_abi.rs
diff --git a/tests/codegen/asm/x86-clobbers.rs b/tests/codegen-llvm/asm/x86-clobbers.rs
index 50163b646b2..50163b646b2 100644
--- a/tests/codegen/asm/x86-clobbers.rs
+++ b/tests/codegen-llvm/asm/x86-clobbers.rs
diff --git a/tests/codegen/asm/x86-target-clobbers.rs b/tests/codegen-llvm/asm/x86-target-clobbers.rs
index 119372491ff..119372491ff 100644
--- a/tests/codegen/asm/x86-target-clobbers.rs
+++ b/tests/codegen-llvm/asm/x86-target-clobbers.rs
diff --git a/tests/codegen/assign-desugar-debuginfo.rs b/tests/codegen-llvm/assign-desugar-debuginfo.rs
index 77ee8758b3b..77ee8758b3b 100644
--- a/tests/codegen/assign-desugar-debuginfo.rs
+++ b/tests/codegen-llvm/assign-desugar-debuginfo.rs
diff --git a/tests/codegen/async-closure-debug.rs b/tests/codegen-llvm/async-closure-debug.rs
index b5b369e6e54..b5b369e6e54 100644
--- a/tests/codegen/async-closure-debug.rs
+++ b/tests/codegen-llvm/async-closure-debug.rs
diff --git a/tests/codegen/async-fn-debug-awaitee-field.rs b/tests/codegen-llvm/async-fn-debug-awaitee-field.rs
index 50860c90662..50860c90662 100644
--- a/tests/codegen/async-fn-debug-awaitee-field.rs
+++ b/tests/codegen-llvm/async-fn-debug-awaitee-field.rs
diff --git a/tests/codegen/async-fn-debug-msvc.rs b/tests/codegen-llvm/async-fn-debug-msvc.rs
index e0c601146f8..e0c601146f8 100644
--- a/tests/codegen/async-fn-debug-msvc.rs
+++ b/tests/codegen-llvm/async-fn-debug-msvc.rs
diff --git a/tests/codegen/async-fn-debug.rs b/tests/codegen-llvm/async-fn-debug.rs
index ed704c7cc8b..ed704c7cc8b 100644
--- a/tests/codegen/async-fn-debug.rs
+++ b/tests/codegen-llvm/async-fn-debug.rs
diff --git a/tests/codegen/atomic-operations.rs b/tests/codegen-llvm/atomic-operations.rs
index 8771b8b2419..8771b8b2419 100644
--- a/tests/codegen/atomic-operations.rs
+++ b/tests/codegen-llvm/atomic-operations.rs
diff --git a/tests/codegen/atomicptr.rs b/tests/codegen-llvm/atomicptr.rs
index 4819af40ca2..4819af40ca2 100644
--- a/tests/codegen/atomicptr.rs
+++ b/tests/codegen-llvm/atomicptr.rs
diff --git a/tests/codegen/autodiff/batched.rs b/tests/codegen-llvm/autodiff/batched.rs
index d27aed50e6c..d27aed50e6c 100644
--- a/tests/codegen/autodiff/batched.rs
+++ b/tests/codegen-llvm/autodiff/batched.rs
diff --git a/tests/codegen/autodiff/generic.rs b/tests/codegen-llvm/autodiff/generic.rs
index 2f674079be0..2f674079be0 100644
--- a/tests/codegen/autodiff/generic.rs
+++ b/tests/codegen-llvm/autodiff/generic.rs
diff --git a/tests/codegen/autodiff/identical_fnc.rs b/tests/codegen-llvm/autodiff/identical_fnc.rs
index 1c25b3d09ab..1c25b3d09ab 100644
--- a/tests/codegen/autodiff/identical_fnc.rs
+++ b/tests/codegen-llvm/autodiff/identical_fnc.rs
diff --git a/tests/codegen/autodiff/inline.rs b/tests/codegen-llvm/autodiff/inline.rs
index 65bed170207..65bed170207 100644
--- a/tests/codegen/autodiff/inline.rs
+++ b/tests/codegen-llvm/autodiff/inline.rs
diff --git a/tests/codegen/autodiff/scalar.rs b/tests/codegen-llvm/autodiff/scalar.rs
index 096b4209e84..096b4209e84 100644
--- a/tests/codegen/autodiff/scalar.rs
+++ b/tests/codegen-llvm/autodiff/scalar.rs
diff --git a/tests/codegen/autodiff/sret.rs b/tests/codegen-llvm/autodiff/sret.rs
index d2fa85e3e37..d2fa85e3e37 100644
--- a/tests/codegen/autodiff/sret.rs
+++ b/tests/codegen-llvm/autodiff/sret.rs
diff --git a/tests/codegen/autodiffv2.rs b/tests/codegen-llvm/autodiffv2.rs
index a40d19d3be3..a40d19d3be3 100644
--- a/tests/codegen/autodiffv2.rs
+++ b/tests/codegen-llvm/autodiffv2.rs
diff --git a/tests/codegen/autovec/dont-shuffle-bswaps-opt2.rs b/tests/codegen-llvm/autovec/dont-shuffle-bswaps-opt2.rs
index c354228acc5..c354228acc5 100644
--- a/tests/codegen/autovec/dont-shuffle-bswaps-opt2.rs
+++ b/tests/codegen-llvm/autovec/dont-shuffle-bswaps-opt2.rs
diff --git a/tests/codegen/autovec/dont-shuffle-bswaps-opt3.rs b/tests/codegen-llvm/autovec/dont-shuffle-bswaps-opt3.rs
index 203d12005de..203d12005de 100644
--- a/tests/codegen/autovec/dont-shuffle-bswaps-opt3.rs
+++ b/tests/codegen-llvm/autovec/dont-shuffle-bswaps-opt3.rs
diff --git a/tests/codegen/autovectorize-f32x4.rs b/tests/codegen-llvm/autovectorize-f32x4.rs
index 254362842f9..254362842f9 100644
--- a/tests/codegen/autovectorize-f32x4.rs
+++ b/tests/codegen-llvm/autovectorize-f32x4.rs
diff --git a/tests/codegen/auxiliary/extern_decl.rs b/tests/codegen-llvm/auxiliary/extern_decl.rs
index d17e77b1444..d17e77b1444 100644
--- a/tests/codegen/auxiliary/extern_decl.rs
+++ b/tests/codegen-llvm/auxiliary/extern_decl.rs
diff --git a/tests/codegen/auxiliary/nounwind.rs b/tests/codegen-llvm/auxiliary/nounwind.rs
index 40f66442c6e..40f66442c6e 100644
--- a/tests/codegen/auxiliary/nounwind.rs
+++ b/tests/codegen-llvm/auxiliary/nounwind.rs
diff --git a/tests/codegen/auxiliary/thread_local_aux.rs b/tests/codegen-llvm/auxiliary/thread_local_aux.rs
index bebaa7754dd..bebaa7754dd 100644
--- a/tests/codegen/auxiliary/thread_local_aux.rs
+++ b/tests/codegen-llvm/auxiliary/thread_local_aux.rs
diff --git a/tests/codegen/avr/avr-func-addrspace.rs b/tests/codegen-llvm/avr/avr-func-addrspace.rs
index e0192f8b45a..e0192f8b45a 100644
--- a/tests/codegen/avr/avr-func-addrspace.rs
+++ b/tests/codegen-llvm/avr/avr-func-addrspace.rs
diff --git a/tests/codegen/bigint-helpers.rs b/tests/codegen-llvm/bigint-helpers.rs
index 355cccb8150..355cccb8150 100644
--- a/tests/codegen/bigint-helpers.rs
+++ b/tests/codegen-llvm/bigint-helpers.rs
diff --git a/tests/codegen/binary-heap-peek-mut-pop-no-panic.rs b/tests/codegen-llvm/binary-heap-peek-mut-pop-no-panic.rs
index 2c40327f624..2c40327f624 100644
--- a/tests/codegen/binary-heap-peek-mut-pop-no-panic.rs
+++ b/tests/codegen-llvm/binary-heap-peek-mut-pop-no-panic.rs
diff --git a/tests/codegen/binary-search-index-no-bound-check.rs b/tests/codegen-llvm/binary-search-index-no-bound-check.rs
index d59c0beec64..d59c0beec64 100644
--- a/tests/codegen/binary-search-index-no-bound-check.rs
+++ b/tests/codegen-llvm/binary-search-index-no-bound-check.rs
diff --git a/tests/codegen/bool-cmp.rs b/tests/codegen-llvm/bool-cmp.rs
index 71d3411689f..71d3411689f 100644
--- a/tests/codegen/bool-cmp.rs
+++ b/tests/codegen-llvm/bool-cmp.rs
diff --git a/tests/codegen/bounds-checking/gep-issue-133979.rs b/tests/codegen-llvm/bounds-checking/gep-issue-133979.rs
index 876bdbfb0e1..876bdbfb0e1 100644
--- a/tests/codegen/bounds-checking/gep-issue-133979.rs
+++ b/tests/codegen-llvm/bounds-checking/gep-issue-133979.rs
diff --git a/tests/codegen/box-default-debug-copies.rs b/tests/codegen-llvm/box-default-debug-copies.rs
index 06cc41b21c0..06cc41b21c0 100644
--- a/tests/codegen/box-default-debug-copies.rs
+++ b/tests/codegen-llvm/box-default-debug-copies.rs
diff --git a/tests/codegen/box-uninit-bytes.rs b/tests/codegen-llvm/box-uninit-bytes.rs
index 0cc01148595..0cc01148595 100644
--- a/tests/codegen/box-uninit-bytes.rs
+++ b/tests/codegen-llvm/box-uninit-bytes.rs
diff --git a/tests/codegen/bpf-alu32.rs b/tests/codegen-llvm/bpf-alu32.rs
index 5955bf3317f..5955bf3317f 100644
--- a/tests/codegen/bpf-alu32.rs
+++ b/tests/codegen-llvm/bpf-alu32.rs
diff --git a/tests/codegen/branch-protection.rs b/tests/codegen-llvm/branch-protection.rs
index d67e494cc0d..d67e494cc0d 100644
--- a/tests/codegen/branch-protection.rs
+++ b/tests/codegen-llvm/branch-protection.rs
diff --git a/tests/codegen/call-llvm-intrinsics.rs b/tests/codegen-llvm/call-llvm-intrinsics.rs
index dc7e0249cb6..dc7e0249cb6 100644
--- a/tests/codegen/call-llvm-intrinsics.rs
+++ b/tests/codegen-llvm/call-llvm-intrinsics.rs
diff --git a/tests/codegen/call-tmps-lifetime.rs b/tests/codegen-llvm/call-tmps-lifetime.rs
index 7b7b6e17bdd..7b7b6e17bdd 100644
--- a/tests/codegen/call-tmps-lifetime.rs
+++ b/tests/codegen-llvm/call-tmps-lifetime.rs
diff --git a/tests/codegen/cast-optimized.rs b/tests/codegen-llvm/cast-optimized.rs
index 11220c4a922..11220c4a922 100644
--- a/tests/codegen/cast-optimized.rs
+++ b/tests/codegen-llvm/cast-optimized.rs
diff --git a/tests/codegen/cast-target-abi.rs b/tests/codegen-llvm/cast-target-abi.rs
index cbd49e2f022..cbd49e2f022 100644
--- a/tests/codegen/cast-target-abi.rs
+++ b/tests/codegen-llvm/cast-target-abi.rs
diff --git a/tests/codegen/catch-unwind.rs b/tests/codegen-llvm/catch-unwind.rs
index d1ff55bcc28..d1ff55bcc28 100644
--- a/tests/codegen/catch-unwind.rs
+++ b/tests/codegen-llvm/catch-unwind.rs
diff --git a/tests/codegen/cdylib-external-inline-fns.rs b/tests/codegen-llvm/cdylib-external-inline-fns.rs
index 2e472ea68e8..2e472ea68e8 100644
--- a/tests/codegen/cdylib-external-inline-fns.rs
+++ b/tests/codegen-llvm/cdylib-external-inline-fns.rs
diff --git a/tests/codegen/cf-protection.rs b/tests/codegen-llvm/cf-protection.rs
index f1349a5dcb9..f1349a5dcb9 100644
--- a/tests/codegen/cf-protection.rs
+++ b/tests/codegen-llvm/cf-protection.rs
diff --git a/tests/codegen/cffi/c-variadic-copy.rs b/tests/codegen-llvm/cffi/c-variadic-copy.rs
index 4c61c4fcf68..4c61c4fcf68 100644
--- a/tests/codegen/cffi/c-variadic-copy.rs
+++ b/tests/codegen-llvm/cffi/c-variadic-copy.rs
diff --git a/tests/codegen/cffi/c-variadic-naked.rs b/tests/codegen-llvm/cffi/c-variadic-naked.rs
index 5843628b633..5843628b633 100644
--- a/tests/codegen/cffi/c-variadic-naked.rs
+++ b/tests/codegen-llvm/cffi/c-variadic-naked.rs
diff --git a/tests/codegen/cffi/c-variadic-opt.rs b/tests/codegen-llvm/cffi/c-variadic-opt.rs
index 7e544ee7f37..7e544ee7f37 100644
--- a/tests/codegen/cffi/c-variadic-opt.rs
+++ b/tests/codegen-llvm/cffi/c-variadic-opt.rs
diff --git a/tests/codegen/cffi/c-variadic.rs b/tests/codegen-llvm/cffi/c-variadic.rs
index 140d2f37f46..140d2f37f46 100644
--- a/tests/codegen/cffi/c-variadic.rs
+++ b/tests/codegen-llvm/cffi/c-variadic.rs
diff --git a/tests/codegen/cffi/ffi-const.rs b/tests/codegen-llvm/cffi/ffi-const.rs
index 3ea9d517ec2..3ea9d517ec2 100644
--- a/tests/codegen/cffi/ffi-const.rs
+++ b/tests/codegen-llvm/cffi/ffi-const.rs
diff --git a/tests/codegen/cffi/ffi-out-of-bounds-loads.rs b/tests/codegen-llvm/cffi/ffi-out-of-bounds-loads.rs
index 859386d2df8..859386d2df8 100644
--- a/tests/codegen/cffi/ffi-out-of-bounds-loads.rs
+++ b/tests/codegen-llvm/cffi/ffi-out-of-bounds-loads.rs
diff --git a/tests/codegen/cffi/ffi-pure.rs b/tests/codegen-llvm/cffi/ffi-pure.rs
index a61e80ecf65..a61e80ecf65 100644
--- a/tests/codegen/cffi/ffi-pure.rs
+++ b/tests/codegen-llvm/cffi/ffi-pure.rs
diff --git a/tests/codegen/cfguard-checks.rs b/tests/codegen-llvm/cfguard-checks.rs
index cdf6406ad61..cdf6406ad61 100644
--- a/tests/codegen/cfguard-checks.rs
+++ b/tests/codegen-llvm/cfguard-checks.rs
diff --git a/tests/codegen/cfguard-disabled.rs b/tests/codegen-llvm/cfguard-disabled.rs
index 90915c0f0c6..90915c0f0c6 100644
--- a/tests/codegen/cfguard-disabled.rs
+++ b/tests/codegen-llvm/cfguard-disabled.rs
diff --git a/tests/codegen/cfguard-nochecks.rs b/tests/codegen-llvm/cfguard-nochecks.rs
index 5f386533ec1..5f386533ec1 100644
--- a/tests/codegen/cfguard-nochecks.rs
+++ b/tests/codegen-llvm/cfguard-nochecks.rs
diff --git a/tests/codegen/cfguard-non-msvc.rs b/tests/codegen-llvm/cfguard-non-msvc.rs
index 1e6559aaf5d..1e6559aaf5d 100644
--- a/tests/codegen/cfguard-non-msvc.rs
+++ b/tests/codegen-llvm/cfguard-non-msvc.rs
diff --git a/tests/codegen/char-ascii-branchless.rs b/tests/codegen-llvm/char-ascii-branchless.rs
index f99066aa9aa..f99066aa9aa 100644
--- a/tests/codegen/char-ascii-branchless.rs
+++ b/tests/codegen-llvm/char-ascii-branchless.rs
diff --git a/tests/codegen/char-escape-debug-no-bounds-check.rs b/tests/codegen-llvm/char-escape-debug-no-bounds-check.rs
index cfde46045e5..cfde46045e5 100644
--- a/tests/codegen/char-escape-debug-no-bounds-check.rs
+++ b/tests/codegen-llvm/char-escape-debug-no-bounds-check.rs
diff --git a/tests/codegen/checked_ilog.rs b/tests/codegen-llvm/checked_ilog.rs
index e340a45b6a9..e340a45b6a9 100644
--- a/tests/codegen/checked_ilog.rs
+++ b/tests/codegen-llvm/checked_ilog.rs
diff --git a/tests/codegen/checked_math.rs b/tests/codegen-llvm/checked_math.rs
index 66667c69488..66667c69488 100644
--- a/tests/codegen/checked_math.rs
+++ b/tests/codegen-llvm/checked_math.rs
diff --git a/tests/codegen/clone-shims.rs b/tests/codegen-llvm/clone-shims.rs
index 06c959f9ee7..06c959f9ee7 100644
--- a/tests/codegen/clone-shims.rs
+++ b/tests/codegen-llvm/clone-shims.rs
diff --git a/tests/codegen/clone_as_copy.rs b/tests/codegen-llvm/clone_as_copy.rs
index ef834ef5912..ef834ef5912 100644
--- a/tests/codegen/clone_as_copy.rs
+++ b/tests/codegen-llvm/clone_as_copy.rs
diff --git a/tests/codegen/codemodels.rs b/tests/codegen-llvm/codemodels.rs
index 06d2eade78a..06d2eade78a 100644
--- a/tests/codegen/codemodels.rs
+++ b/tests/codegen-llvm/codemodels.rs
diff --git a/tests/codegen/coercions.rs b/tests/codegen-llvm/coercions.rs
index 63c1742c639..63c1742c639 100644
--- a/tests/codegen/coercions.rs
+++ b/tests/codegen-llvm/coercions.rs
diff --git a/tests/codegen/cold-call-declare-and-call.rs b/tests/codegen-llvm/cold-call-declare-and-call.rs
index b18565ee6c3..b18565ee6c3 100644
--- a/tests/codegen/cold-call-declare-and-call.rs
+++ b/tests/codegen-llvm/cold-call-declare-and-call.rs
diff --git a/tests/codegen/common_prim_int_ptr.rs b/tests/codegen-llvm/common_prim_int_ptr.rs
index 53716adccbf..53716adccbf 100644
--- a/tests/codegen/common_prim_int_ptr.rs
+++ b/tests/codegen-llvm/common_prim_int_ptr.rs
diff --git a/tests/codegen/comparison-operators-2-struct.rs b/tests/codegen-llvm/comparison-operators-2-struct.rs
index e179066ebfd..e179066ebfd 100644
--- a/tests/codegen/comparison-operators-2-struct.rs
+++ b/tests/codegen-llvm/comparison-operators-2-struct.rs
diff --git a/tests/codegen/comparison-operators-2-tuple.rs b/tests/codegen-llvm/comparison-operators-2-tuple.rs
index 6a7e489c82d..6a7e489c82d 100644
--- a/tests/codegen/comparison-operators-2-tuple.rs
+++ b/tests/codegen-llvm/comparison-operators-2-tuple.rs
diff --git a/tests/codegen/comparison-operators-newtype.rs b/tests/codegen-llvm/comparison-operators-newtype.rs
index acce0cb5946..acce0cb5946 100644
--- a/tests/codegen/comparison-operators-newtype.rs
+++ b/tests/codegen-llvm/comparison-operators-newtype.rs
diff --git a/tests/codegen/compiletest-self-test/minicore-smoke-test.rs b/tests/codegen-llvm/compiletest-self-test/minicore-smoke-test.rs
index 9dd1bf29c6c..9dd1bf29c6c 100644
--- a/tests/codegen/compiletest-self-test/minicore-smoke-test.rs
+++ b/tests/codegen-llvm/compiletest-self-test/minicore-smoke-test.rs
diff --git a/tests/codegen/const-array.rs b/tests/codegen-llvm/const-array.rs
index b3df76c3d8e..b3df76c3d8e 100644
--- a/tests/codegen/const-array.rs
+++ b/tests/codegen-llvm/const-array.rs
diff --git a/tests/codegen/const-vector.rs b/tests/codegen-llvm/const-vector.rs
index 42921442e03..a2249f4fff7 100644
--- a/tests/codegen/const-vector.rs
+++ b/tests/codegen-llvm/const-vector.rs
@@ -16,18 +16,9 @@
 #![feature(mips_target_feature)]
 #![allow(non_camel_case_types)]
 
-// Setting up structs that can be used as const vectors
-#[repr(simd)]
-#[derive(Clone)]
-pub struct i8x2([i8; 2]);
-
-#[repr(simd)]
-#[derive(Clone)]
-pub struct f32x2([f32; 2]);
-
-#[repr(simd, packed)]
-#[derive(Copy, Clone)]
-pub struct Simd<T, const N: usize>([T; N]);
+#[path = "../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::{PackedSimd as Simd, f32x2, i8x2};
 
 // The following functions are required for the tests to ensure
 // that they are called with a const vector
@@ -45,7 +36,7 @@ extern "unadjusted" {
 
 // Ensure the packed variant of the simd struct does not become a const vector
 // if the size is not a power of 2
-// CHECK: %"Simd<i32, 3>" = type { [3 x i32] }
+// CHECK: %"minisimd::PackedSimd<i32, 3>" = type { [3 x i32] }
 
 #[cfg_attr(target_family = "wasm", target_feature(enable = "simd128"))]
 #[cfg_attr(target_arch = "arm", target_feature(enable = "neon"))]
@@ -54,27 +45,34 @@ extern "unadjusted" {
 pub fn do_call() {
     unsafe {
         // CHECK: call void @test_i8x2(<2 x i8> <i8 32, i8 64>
-        test_i8x2(const { i8x2([32, 64]) });
+        test_i8x2(const { i8x2::from_array([32, 64]) });
 
         // CHECK: call void @test_i8x2_two_args(<2 x i8> <i8 32, i8 64>, <2 x i8> <i8 8, i8 16>
-        test_i8x2_two_args(const { i8x2([32, 64]) }, const { i8x2([8, 16]) });
+        test_i8x2_two_args(
+            const { i8x2::from_array([32, 64]) },
+            const { i8x2::from_array([8, 16]) },
+        );
 
         // CHECK: call void @test_i8x2_mixed_args(<2 x i8> <i8 32, i8 64>, i32 43, <2 x i8> <i8 8, i8 16>
-        test_i8x2_mixed_args(const { i8x2([32, 64]) }, 43, const { i8x2([8, 16]) });
+        test_i8x2_mixed_args(
+            const { i8x2::from_array([32, 64]) },
+            43,
+            const { i8x2::from_array([8, 16]) },
+        );
 
         // CHECK: call void @test_i8x2_arr(<2 x i8> <i8 32, i8 64>
-        test_i8x2_arr(const { i8x2([32, 64]) });
+        test_i8x2_arr(const { i8x2::from_array([32, 64]) });
 
         // CHECK: call void @test_f32x2(<2 x float> <float 0x3FD47AE140000000, float 0x3FE47AE140000000>
-        test_f32x2(const { f32x2([0.32, 0.64]) });
+        test_f32x2(const { f32x2::from_array([0.32, 0.64]) });
 
         // CHECK: void @test_f32x2_arr(<2 x float> <float 0x3FD47AE140000000, float 0x3FE47AE140000000>
-        test_f32x2_arr(const { f32x2([0.32, 0.64]) });
+        test_f32x2_arr(const { f32x2::from_array([0.32, 0.64]) });
 
         // CHECK: call void @test_simd(<4 x i32> <i32 2, i32 4, i32 6, i32 8>
         test_simd(const { Simd::<i32, 4>([2, 4, 6, 8]) });
 
-        // CHECK: call void @test_simd_unaligned(%"Simd<i32, 3>" %1
+        // CHECK: call void @test_simd_unaligned(%"minisimd::PackedSimd<i32, 3>" %1
         test_simd_unaligned(const { Simd::<i32, 3>([2, 4, 6]) });
     }
 }
diff --git a/tests/codegen/const_scalar_pair.rs b/tests/codegen-llvm/const_scalar_pair.rs
index f142896c31f..f142896c31f 100644
--- a/tests/codegen/const_scalar_pair.rs
+++ b/tests/codegen-llvm/const_scalar_pair.rs
diff --git a/tests/codegen/constant-branch.rs b/tests/codegen-llvm/constant-branch.rs
index 8fc8fb4f57a..8fc8fb4f57a 100644
--- a/tests/codegen/constant-branch.rs
+++ b/tests/codegen-llvm/constant-branch.rs
diff --git a/tests/codegen/consts.rs b/tests/codegen-llvm/consts.rs
index 42ce7679d1a..42ce7679d1a 100644
--- a/tests/codegen/consts.rs
+++ b/tests/codegen-llvm/consts.rs
diff --git a/tests/codegen/coroutine-debug-msvc.rs b/tests/codegen-llvm/coroutine-debug-msvc.rs
index 9e2ec3ea28a..9e2ec3ea28a 100644
--- a/tests/codegen/coroutine-debug-msvc.rs
+++ b/tests/codegen-llvm/coroutine-debug-msvc.rs
diff --git a/tests/codegen/coroutine-debug.rs b/tests/codegen-llvm/coroutine-debug.rs
index ff62e9709b4..ff62e9709b4 100644
--- a/tests/codegen/coroutine-debug.rs
+++ b/tests/codegen-llvm/coroutine-debug.rs
diff --git a/tests/codegen/cross-crate-inlining/always-inline.rs b/tests/codegen-llvm/cross-crate-inlining/always-inline.rs
index df28b3fe197..df28b3fe197 100644
--- a/tests/codegen/cross-crate-inlining/always-inline.rs
+++ b/tests/codegen-llvm/cross-crate-inlining/always-inline.rs
diff --git a/tests/codegen/cross-crate-inlining/auxiliary/always.rs b/tests/codegen-llvm/cross-crate-inlining/auxiliary/always.rs
index 6ee3f81e3c8..6ee3f81e3c8 100644
--- a/tests/codegen/cross-crate-inlining/auxiliary/always.rs
+++ b/tests/codegen-llvm/cross-crate-inlining/auxiliary/always.rs
diff --git a/tests/codegen/cross-crate-inlining/auxiliary/leaf.rs b/tests/codegen-llvm/cross-crate-inlining/auxiliary/leaf.rs
index d059a3d0a73..d059a3d0a73 100644
--- a/tests/codegen/cross-crate-inlining/auxiliary/leaf.rs
+++ b/tests/codegen-llvm/cross-crate-inlining/auxiliary/leaf.rs
diff --git a/tests/codegen/cross-crate-inlining/auxiliary/never.rs b/tests/codegen-llvm/cross-crate-inlining/auxiliary/never.rs
index 55c90809ec1..55c90809ec1 100644
--- a/tests/codegen/cross-crate-inlining/auxiliary/never.rs
+++ b/tests/codegen-llvm/cross-crate-inlining/auxiliary/never.rs
diff --git a/tests/codegen/cross-crate-inlining/leaf-inlining.rs b/tests/codegen-llvm/cross-crate-inlining/leaf-inlining.rs
index 37132312ca9..37132312ca9 100644
--- a/tests/codegen/cross-crate-inlining/leaf-inlining.rs
+++ b/tests/codegen-llvm/cross-crate-inlining/leaf-inlining.rs
diff --git a/tests/codegen/cross-crate-inlining/never-inline.rs b/tests/codegen-llvm/cross-crate-inlining/never-inline.rs
index 759f65d9d42..759f65d9d42 100644
--- a/tests/codegen/cross-crate-inlining/never-inline.rs
+++ b/tests/codegen-llvm/cross-crate-inlining/never-inline.rs
diff --git a/tests/codegen/dealloc-no-unwind.rs b/tests/codegen-llvm/dealloc-no-unwind.rs
index 68597817d6f..68597817d6f 100644
--- a/tests/codegen/dealloc-no-unwind.rs
+++ b/tests/codegen-llvm/dealloc-no-unwind.rs
diff --git a/tests/codegen/debug-accessibility/crate-enum.rs b/tests/codegen-llvm/debug-accessibility/crate-enum.rs
index 9ad5a6fd0ff..9ad5a6fd0ff 100644
--- a/tests/codegen/debug-accessibility/crate-enum.rs
+++ b/tests/codegen-llvm/debug-accessibility/crate-enum.rs
diff --git a/tests/codegen/debug-accessibility/crate-struct.rs b/tests/codegen-llvm/debug-accessibility/crate-struct.rs
index 73a8ce852ed..73a8ce852ed 100644
--- a/tests/codegen/debug-accessibility/crate-struct.rs
+++ b/tests/codegen-llvm/debug-accessibility/crate-struct.rs
diff --git a/tests/codegen/debug-accessibility/private-enum.rs b/tests/codegen-llvm/debug-accessibility/private-enum.rs
index 002336c03b3..002336c03b3 100644
--- a/tests/codegen/debug-accessibility/private-enum.rs
+++ b/tests/codegen-llvm/debug-accessibility/private-enum.rs
diff --git a/tests/codegen/debug-accessibility/private-struct.rs b/tests/codegen-llvm/debug-accessibility/private-struct.rs
index 488a680e81c..488a680e81c 100644
--- a/tests/codegen/debug-accessibility/private-struct.rs
+++ b/tests/codegen-llvm/debug-accessibility/private-struct.rs
diff --git a/tests/codegen/debug-accessibility/public-enum.rs b/tests/codegen-llvm/debug-accessibility/public-enum.rs
index e5cd1ab7350..e5cd1ab7350 100644
--- a/tests/codegen/debug-accessibility/public-enum.rs
+++ b/tests/codegen-llvm/debug-accessibility/public-enum.rs
diff --git a/tests/codegen/debug-accessibility/public-struct.rs b/tests/codegen-llvm/debug-accessibility/public-struct.rs
index 8b2a53f993c..8b2a53f993c 100644
--- a/tests/codegen/debug-accessibility/public-struct.rs
+++ b/tests/codegen-llvm/debug-accessibility/public-struct.rs
diff --git a/tests/codegen/debug-accessibility/struct-fields.rs b/tests/codegen-llvm/debug-accessibility/struct-fields.rs
index f68bb3438be..f68bb3438be 100644
--- a/tests/codegen/debug-accessibility/struct-fields.rs
+++ b/tests/codegen-llvm/debug-accessibility/struct-fields.rs
diff --git a/tests/codegen/debug-accessibility/super-enum.rs b/tests/codegen-llvm/debug-accessibility/super-enum.rs
index 8e34d8be01f..8e34d8be01f 100644
--- a/tests/codegen/debug-accessibility/super-enum.rs
+++ b/tests/codegen-llvm/debug-accessibility/super-enum.rs
diff --git a/tests/codegen/debug-accessibility/super-struct.rs b/tests/codegen-llvm/debug-accessibility/super-struct.rs
index 63954bfb203..63954bfb203 100644
--- a/tests/codegen/debug-accessibility/super-struct.rs
+++ b/tests/codegen-llvm/debug-accessibility/super-struct.rs
diff --git a/tests/codegen/debug-accessibility/tuple-fields.rs b/tests/codegen-llvm/debug-accessibility/tuple-fields.rs
index feec6e9eb41..feec6e9eb41 100644
--- a/tests/codegen/debug-accessibility/tuple-fields.rs
+++ b/tests/codegen-llvm/debug-accessibility/tuple-fields.rs
diff --git a/tests/codegen/debug-alignment.rs b/tests/codegen-llvm/debug-alignment.rs
index 02fe05832a3..02fe05832a3 100644
--- a/tests/codegen/debug-alignment.rs
+++ b/tests/codegen-llvm/debug-alignment.rs
diff --git a/tests/codegen/debug-column-msvc.rs b/tests/codegen-llvm/debug-column-msvc.rs
index 39f77f41329..39f77f41329 100644
--- a/tests/codegen/debug-column-msvc.rs
+++ b/tests/codegen-llvm/debug-column-msvc.rs
diff --git a/tests/codegen/debug-column.rs b/tests/codegen-llvm/debug-column.rs
index 2aa0a8a864c..2aa0a8a864c 100644
--- a/tests/codegen/debug-column.rs
+++ b/tests/codegen-llvm/debug-column.rs
diff --git a/tests/codegen/debug-compile-unit-path.rs b/tests/codegen-llvm/debug-compile-unit-path.rs
index 6131d9d7351..6131d9d7351 100644
--- a/tests/codegen/debug-compile-unit-path.rs
+++ b/tests/codegen-llvm/debug-compile-unit-path.rs
diff --git a/tests/codegen/debug-fndef-size.rs b/tests/codegen-llvm/debug-fndef-size.rs
index 8f716c34e7b..8f716c34e7b 100644
--- a/tests/codegen/debug-fndef-size.rs
+++ b/tests/codegen-llvm/debug-fndef-size.rs
diff --git a/tests/codegen/debug-limited.rs b/tests/codegen-llvm/debug-limited.rs
index 89a4ef0ca90..89a4ef0ca90 100644
--- a/tests/codegen/debug-limited.rs
+++ b/tests/codegen-llvm/debug-limited.rs
diff --git a/tests/codegen/debug-line-directives-only.rs b/tests/codegen-llvm/debug-line-directives-only.rs
index 709c8789bf8..709c8789bf8 100644
--- a/tests/codegen/debug-line-directives-only.rs
+++ b/tests/codegen-llvm/debug-line-directives-only.rs
diff --git a/tests/codegen/debug-line-tables-only.rs b/tests/codegen-llvm/debug-line-tables-only.rs
index d50bffe6e60..d50bffe6e60 100644
--- a/tests/codegen/debug-line-tables-only.rs
+++ b/tests/codegen-llvm/debug-line-tables-only.rs
diff --git a/tests/codegen/debug-linkage-name.rs b/tests/codegen-llvm/debug-linkage-name.rs
index e706040f331..e706040f331 100644
--- a/tests/codegen/debug-linkage-name.rs
+++ b/tests/codegen-llvm/debug-linkage-name.rs
diff --git a/tests/codegen/debug-vtable.rs b/tests/codegen-llvm/debug-vtable.rs
index 8a7b1cc3c4b..8a7b1cc3c4b 100644
--- a/tests/codegen/debug-vtable.rs
+++ b/tests/codegen-llvm/debug-vtable.rs
diff --git a/tests/codegen/debuginfo-constant-locals.rs b/tests/codegen-llvm/debuginfo-constant-locals.rs
index 580c69c05a5..580c69c05a5 100644
--- a/tests/codegen/debuginfo-constant-locals.rs
+++ b/tests/codegen-llvm/debuginfo-constant-locals.rs
diff --git a/tests/codegen/debuginfo-generic-closure-env-names.rs b/tests/codegen-llvm/debuginfo-generic-closure-env-names.rs
index 64bc58e1df7..64bc58e1df7 100644
--- a/tests/codegen/debuginfo-generic-closure-env-names.rs
+++ b/tests/codegen-llvm/debuginfo-generic-closure-env-names.rs
diff --git a/tests/codegen/debuginfo-inline-callsite-location.rs b/tests/codegen-llvm/debuginfo-inline-callsite-location.rs
index 59ade52ad32..59ade52ad32 100644
--- a/tests/codegen/debuginfo-inline-callsite-location.rs
+++ b/tests/codegen-llvm/debuginfo-inline-callsite-location.rs
diff --git a/tests/codegen/debuginfo-proc-macro/auxiliary/macro_def.rs b/tests/codegen-llvm/debuginfo-proc-macro/auxiliary/macro_def.rs
index c0691b23275..c0691b23275 100644
--- a/tests/codegen/debuginfo-proc-macro/auxiliary/macro_def.rs
+++ b/tests/codegen-llvm/debuginfo-proc-macro/auxiliary/macro_def.rs
diff --git a/tests/codegen/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs b/tests/codegen-llvm/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs
index 7530689d574..7530689d574 100644
--- a/tests/codegen/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs
+++ b/tests/codegen-llvm/debuginfo-proc-macro/mir_inlined_twice_var_locs.rs
diff --git a/tests/codegen/deduced-param-attrs.rs b/tests/codegen-llvm/deduced-param-attrs.rs
index 34504c80fad..34504c80fad 100644
--- a/tests/codegen/deduced-param-attrs.rs
+++ b/tests/codegen-llvm/deduced-param-attrs.rs
diff --git a/tests/codegen/default-requires-uwtable.rs b/tests/codegen-llvm/default-requires-uwtable.rs
index 54a6e171db6..54a6e171db6 100644
--- a/tests/codegen/default-requires-uwtable.rs
+++ b/tests/codegen-llvm/default-requires-uwtable.rs
diff --git a/tests/codegen/default-visibility.rs b/tests/codegen-llvm/default-visibility.rs
index 88ff9fee254..88ff9fee254 100644
--- a/tests/codegen/default-visibility.rs
+++ b/tests/codegen-llvm/default-visibility.rs
diff --git a/tests/codegen/direct-access-external-data.rs b/tests/codegen-llvm/direct-access-external-data.rs
index 5b2ff41ef05..5b2ff41ef05 100644
--- a/tests/codegen/direct-access-external-data.rs
+++ b/tests/codegen-llvm/direct-access-external-data.rs
diff --git a/tests/codegen/dllimports/auxiliary/dummy.rs b/tests/codegen-llvm/dllimports/auxiliary/dummy.rs
index ab3dbc6a300..ab3dbc6a300 100644
--- a/tests/codegen/dllimports/auxiliary/dummy.rs
+++ b/tests/codegen-llvm/dllimports/auxiliary/dummy.rs
diff --git a/tests/codegen/dllimports/auxiliary/wrapper.rs b/tests/codegen-llvm/dllimports/auxiliary/wrapper.rs
index 00a29f7ee7e..00a29f7ee7e 100644
--- a/tests/codegen/dllimports/auxiliary/wrapper.rs
+++ b/tests/codegen-llvm/dllimports/auxiliary/wrapper.rs
diff --git a/tests/codegen/dllimports/main.rs b/tests/codegen-llvm/dllimports/main.rs
index 93d350a2238..93d350a2238 100644
--- a/tests/codegen/dllimports/main.rs
+++ b/tests/codegen-llvm/dllimports/main.rs
diff --git a/tests/codegen/dont_codegen_private_const_fn_only_used_in_const_eval.rs b/tests/codegen-llvm/dont_codegen_private_const_fn_only_used_in_const_eval.rs
index df50b4af809..df50b4af809 100644
--- a/tests/codegen/dont_codegen_private_const_fn_only_used_in_const_eval.rs
+++ b/tests/codegen-llvm/dont_codegen_private_const_fn_only_used_in_const_eval.rs
diff --git a/tests/codegen/drop-in-place-noalias.rs b/tests/codegen-llvm/drop-in-place-noalias.rs
index bff2f52781f..bff2f52781f 100644
--- a/tests/codegen/drop-in-place-noalias.rs
+++ b/tests/codegen-llvm/drop-in-place-noalias.rs
diff --git a/tests/codegen/drop.rs b/tests/codegen-llvm/drop.rs
index b22a8ef27d2..b22a8ef27d2 100644
--- a/tests/codegen/drop.rs
+++ b/tests/codegen-llvm/drop.rs
diff --git a/tests/codegen/dst-offset.rs b/tests/codegen-llvm/dst-offset.rs
index 2cf5fa9fac6..2cf5fa9fac6 100644
--- a/tests/codegen/dst-offset.rs
+++ b/tests/codegen-llvm/dst-offset.rs
diff --git a/tests/codegen/dst-vtable-align-nonzero.rs b/tests/codegen-llvm/dst-vtable-align-nonzero.rs
index 1404bd64f50..1404bd64f50 100644
--- a/tests/codegen/dst-vtable-align-nonzero.rs
+++ b/tests/codegen-llvm/dst-vtable-align-nonzero.rs
diff --git a/tests/codegen/dst-vtable-size-range.rs b/tests/codegen-llvm/dst-vtable-size-range.rs
index 670f5e8d553..670f5e8d553 100644
--- a/tests/codegen/dst-vtable-size-range.rs
+++ b/tests/codegen-llvm/dst-vtable-size-range.rs
diff --git a/tests/codegen/ehcontguard_disabled.rs b/tests/codegen-llvm/ehcontguard_disabled.rs
index 9efb2721b3e..9efb2721b3e 100644
--- a/tests/codegen/ehcontguard_disabled.rs
+++ b/tests/codegen-llvm/ehcontguard_disabled.rs
diff --git a/tests/codegen/ehcontguard_enabled.rs b/tests/codegen-llvm/ehcontguard_enabled.rs
index ecc5512fd5d..ecc5512fd5d 100644
--- a/tests/codegen/ehcontguard_enabled.rs
+++ b/tests/codegen-llvm/ehcontguard_enabled.rs
diff --git a/tests/codegen/emscripten-catch-unwind-js-eh.rs b/tests/codegen-llvm/emscripten-catch-unwind-js-eh.rs
index f43869cf218..f43869cf218 100644
--- a/tests/codegen/emscripten-catch-unwind-js-eh.rs
+++ b/tests/codegen-llvm/emscripten-catch-unwind-js-eh.rs
diff --git a/tests/codegen/emscripten-catch-unwind-wasm-eh.rs b/tests/codegen-llvm/emscripten-catch-unwind-wasm-eh.rs
index b0750d52268..b0750d52268 100644
--- a/tests/codegen/emscripten-catch-unwind-wasm-eh.rs
+++ b/tests/codegen-llvm/emscripten-catch-unwind-wasm-eh.rs
diff --git a/tests/codegen/enable-lto-unit-splitting.rs b/tests/codegen-llvm/enable-lto-unit-splitting.rs
index 51c2671bc4e..51c2671bc4e 100644
--- a/tests/codegen/enable-lto-unit-splitting.rs
+++ b/tests/codegen-llvm/enable-lto-unit-splitting.rs
diff --git a/tests/codegen/enum/enum-aggregate.rs b/tests/codegen-llvm/enum/enum-aggregate.rs
index 0161e5f3fa1..0161e5f3fa1 100644
--- a/tests/codegen/enum/enum-aggregate.rs
+++ b/tests/codegen-llvm/enum/enum-aggregate.rs
diff --git a/tests/codegen/enum/enum-bounds-check-derived-idx.rs b/tests/codegen-llvm/enum/enum-bounds-check-derived-idx.rs
index a5785f4addf..a5785f4addf 100644
--- a/tests/codegen/enum/enum-bounds-check-derived-idx.rs
+++ b/tests/codegen-llvm/enum/enum-bounds-check-derived-idx.rs
diff --git a/tests/codegen/enum/enum-bounds-check-issue-13926.rs b/tests/codegen-llvm/enum/enum-bounds-check-issue-13926.rs
index 6e8e5035b0d..6e8e5035b0d 100644
--- a/tests/codegen/enum/enum-bounds-check-issue-13926.rs
+++ b/tests/codegen-llvm/enum/enum-bounds-check-issue-13926.rs
diff --git a/tests/codegen/enum/enum-bounds-check-issue-82871.rs b/tests/codegen-llvm/enum/enum-bounds-check-issue-82871.rs
index 3b8a146838a..3b8a146838a 100644
--- a/tests/codegen/enum/enum-bounds-check-issue-82871.rs
+++ b/tests/codegen-llvm/enum/enum-bounds-check-issue-82871.rs
diff --git a/tests/codegen/enum/enum-bounds-check.rs b/tests/codegen-llvm/enum/enum-bounds-check.rs
index 5362598ca7c..5362598ca7c 100644
--- a/tests/codegen/enum/enum-bounds-check.rs
+++ b/tests/codegen-llvm/enum/enum-bounds-check.rs
diff --git a/tests/codegen/enum/enum-debug-clike.rs b/tests/codegen-llvm/enum/enum-debug-clike.rs
index 89c803cce5e..89c803cce5e 100644
--- a/tests/codegen/enum/enum-debug-clike.rs
+++ b/tests/codegen-llvm/enum/enum-debug-clike.rs
diff --git a/tests/codegen/enum/enum-debug-niche-2.rs b/tests/codegen-llvm/enum/enum-debug-niche-2.rs
index 80a4081f15b..80a4081f15b 100644
--- a/tests/codegen/enum/enum-debug-niche-2.rs
+++ b/tests/codegen-llvm/enum/enum-debug-niche-2.rs
diff --git a/tests/codegen/enum/enum-debug-niche.rs b/tests/codegen-llvm/enum/enum-debug-niche.rs
index 59e8b8a78b4..59e8b8a78b4 100644
--- a/tests/codegen/enum/enum-debug-niche.rs
+++ b/tests/codegen-llvm/enum/enum-debug-niche.rs
diff --git a/tests/codegen/enum/enum-debug-tagged.rs b/tests/codegen-llvm/enum/enum-debug-tagged.rs
index e8f147665b0..e8f147665b0 100644
--- a/tests/codegen/enum/enum-debug-tagged.rs
+++ b/tests/codegen-llvm/enum/enum-debug-tagged.rs
diff --git a/tests/codegen/enum/enum-discriminant-eq.rs b/tests/codegen-llvm/enum/enum-discriminant-eq.rs
index 0494c5f551b..0494c5f551b 100644
--- a/tests/codegen/enum/enum-discriminant-eq.rs
+++ b/tests/codegen-llvm/enum/enum-discriminant-eq.rs
diff --git a/tests/codegen/enum/enum-discriminant-value.rs b/tests/codegen-llvm/enum/enum-discriminant-value.rs
index d6b0c6d6c10..d6b0c6d6c10 100644
--- a/tests/codegen/enum/enum-discriminant-value.rs
+++ b/tests/codegen-llvm/enum/enum-discriminant-value.rs
diff --git a/tests/codegen/enum/enum-early-otherwise-branch.rs b/tests/codegen-llvm/enum/enum-early-otherwise-branch.rs
index 8d39d8e9b74..8d39d8e9b74 100644
--- a/tests/codegen/enum/enum-early-otherwise-branch.rs
+++ b/tests/codegen-llvm/enum/enum-early-otherwise-branch.rs
diff --git a/tests/codegen/enum/enum-match.rs b/tests/codegen-llvm/enum/enum-match.rs
index 57db44ec74e..57db44ec74e 100644
--- a/tests/codegen/enum/enum-match.rs
+++ b/tests/codegen-llvm/enum/enum-match.rs
diff --git a/tests/codegen/enum/enum-two-variants-match.rs b/tests/codegen-llvm/enum/enum-two-variants-match.rs
index 12d9edc4d62..12d9edc4d62 100644
--- a/tests/codegen/enum/enum-two-variants-match.rs
+++ b/tests/codegen-llvm/enum/enum-two-variants-match.rs
diff --git a/tests/codegen/enum/enum-u128.rs b/tests/codegen-llvm/enum/enum-u128.rs
index 2676669f3e3..2676669f3e3 100644
--- a/tests/codegen/enum/enum-u128.rs
+++ b/tests/codegen-llvm/enum/enum-u128.rs
diff --git a/tests/codegen/enum/unreachable_enum_default_branch.rs b/tests/codegen-llvm/enum/unreachable_enum_default_branch.rs
index 55b165fc111..55b165fc111 100644
--- a/tests/codegen/enum/unreachable_enum_default_branch.rs
+++ b/tests/codegen-llvm/enum/unreachable_enum_default_branch.rs
diff --git a/tests/codegen/ergonomic-clones/closure.rs b/tests/codegen-llvm/ergonomic-clones/closure.rs
index b6fc8172641..b6fc8172641 100644
--- a/tests/codegen/ergonomic-clones/closure.rs
+++ b/tests/codegen-llvm/ergonomic-clones/closure.rs
diff --git a/tests/codegen/error-provide.rs b/tests/codegen-llvm/error-provide.rs
index 7f091e34359..7f091e34359 100644
--- a/tests/codegen/error-provide.rs
+++ b/tests/codegen-llvm/error-provide.rs
diff --git a/tests/codegen/export-no-mangle.rs b/tests/codegen-llvm/export-no-mangle.rs
index 5040684f52e..5040684f52e 100644
--- a/tests/codegen/export-no-mangle.rs
+++ b/tests/codegen-llvm/export-no-mangle.rs
diff --git a/tests/codegen/external-no-mangle-fns.rs b/tests/codegen-llvm/external-no-mangle-fns.rs
index 35ab0fd7909..35ab0fd7909 100644
--- a/tests/codegen/external-no-mangle-fns.rs
+++ b/tests/codegen-llvm/external-no-mangle-fns.rs
diff --git a/tests/codegen/external-no-mangle-statics.rs b/tests/codegen-llvm/external-no-mangle-statics.rs
index 49f42ee977d..49f42ee977d 100644
--- a/tests/codegen/external-no-mangle-statics.rs
+++ b/tests/codegen-llvm/external-no-mangle-statics.rs
diff --git a/tests/codegen/f128-wasm32-callconv.rs b/tests/codegen-llvm/f128-wasm32-callconv.rs
index 7dccbda18f1..7dccbda18f1 100644
--- a/tests/codegen/f128-wasm32-callconv.rs
+++ b/tests/codegen-llvm/f128-wasm32-callconv.rs
diff --git a/tests/codegen/fastcall-inreg.rs b/tests/codegen-llvm/fastcall-inreg.rs
index 066943d6e7e..066943d6e7e 100644
--- a/tests/codegen/fastcall-inreg.rs
+++ b/tests/codegen-llvm/fastcall-inreg.rs
diff --git a/tests/codegen/fatptr.rs b/tests/codegen-llvm/fatptr.rs
index 041807202b8..041807202b8 100644
--- a/tests/codegen/fatptr.rs
+++ b/tests/codegen-llvm/fatptr.rs
diff --git a/tests/codegen/fewer-names.rs b/tests/codegen-llvm/fewer-names.rs
index ff7a916b619..ff7a916b619 100644
--- a/tests/codegen/fewer-names.rs
+++ b/tests/codegen-llvm/fewer-names.rs
diff --git a/tests/codegen/fixed-x18.rs b/tests/codegen-llvm/fixed-x18.rs
index a5767cfa456..a5767cfa456 100644
--- a/tests/codegen/fixed-x18.rs
+++ b/tests/codegen-llvm/fixed-x18.rs
diff --git a/tests/codegen/float/algebraic.rs b/tests/codegen-llvm/float/algebraic.rs
index 818a4bcdfe3..818a4bcdfe3 100644
--- a/tests/codegen/float/algebraic.rs
+++ b/tests/codegen-llvm/float/algebraic.rs
diff --git a/tests/codegen/float/f128.rs b/tests/codegen-llvm/float/f128.rs
index d87bab1172a..d87bab1172a 100644
--- a/tests/codegen/float/f128.rs
+++ b/tests/codegen-llvm/float/f128.rs
diff --git a/tests/codegen/float/f16-f128-inline.rs b/tests/codegen-llvm/float/f16-f128-inline.rs
index aa2c38c209e..aa2c38c209e 100644
--- a/tests/codegen/float/f16-f128-inline.rs
+++ b/tests/codegen-llvm/float/f16-f128-inline.rs
diff --git a/tests/codegen/float/f16.rs b/tests/codegen-llvm/float/f16.rs
index 0c40606ad8a..0c40606ad8a 100644
--- a/tests/codegen/float/f16.rs
+++ b/tests/codegen-llvm/float/f16.rs
diff --git a/tests/codegen/float_math.rs b/tests/codegen-llvm/float_math.rs
index 9a1e0b4d2d0..9a1e0b4d2d0 100644
--- a/tests/codegen/float_math.rs
+++ b/tests/codegen-llvm/float_math.rs
diff --git a/tests/codegen/fn-impl-trait-self.rs b/tests/codegen-llvm/fn-impl-trait-self.rs
index 5799d23b5a0..5799d23b5a0 100644
--- a/tests/codegen/fn-impl-trait-self.rs
+++ b/tests/codegen-llvm/fn-impl-trait-self.rs
diff --git a/tests/codegen/fn-parameters-on-different-lines-debuginfo.rs b/tests/codegen-llvm/fn-parameters-on-different-lines-debuginfo.rs
index 2097567f322..2097567f322 100644
--- a/tests/codegen/fn-parameters-on-different-lines-debuginfo.rs
+++ b/tests/codegen-llvm/fn-parameters-on-different-lines-debuginfo.rs
diff --git a/tests/codegen/force-frame-pointers.rs b/tests/codegen-llvm/force-frame-pointers.rs
index 88c918945d6..88c918945d6 100644
--- a/tests/codegen/force-frame-pointers.rs
+++ b/tests/codegen-llvm/force-frame-pointers.rs
diff --git a/tests/codegen/force-no-unwind-tables.rs b/tests/codegen-llvm/force-no-unwind-tables.rs
index 1de5e0858e0..1de5e0858e0 100644
--- a/tests/codegen/force-no-unwind-tables.rs
+++ b/tests/codegen-llvm/force-no-unwind-tables.rs
diff --git a/tests/codegen/force-unwind-tables.rs b/tests/codegen-llvm/force-unwind-tables.rs
index a2ef8a10454..a2ef8a10454 100644
--- a/tests/codegen/force-unwind-tables.rs
+++ b/tests/codegen-llvm/force-unwind-tables.rs
diff --git a/tests/codegen/frame-pointer-cli-control.rs b/tests/codegen-llvm/frame-pointer-cli-control.rs
index a65dd132763..a65dd132763 100644
--- a/tests/codegen/frame-pointer-cli-control.rs
+++ b/tests/codegen-llvm/frame-pointer-cli-control.rs
diff --git a/tests/codegen/frame-pointer.rs b/tests/codegen-llvm/frame-pointer.rs
index 23989653fa8..23989653fa8 100644
--- a/tests/codegen/frame-pointer.rs
+++ b/tests/codegen-llvm/frame-pointer.rs
diff --git a/tests/codegen/function-arguments-noopt.rs b/tests/codegen-llvm/function-arguments-noopt.rs
index c80f119696d..c80f119696d 100644
--- a/tests/codegen/function-arguments-noopt.rs
+++ b/tests/codegen-llvm/function-arguments-noopt.rs
diff --git a/tests/codegen/function-arguments.rs b/tests/codegen-llvm/function-arguments.rs
index c8cd8526ae5..c8cd8526ae5 100644
--- a/tests/codegen/function-arguments.rs
+++ b/tests/codegen-llvm/function-arguments.rs
diff --git a/tests/codegen/function-return.rs b/tests/codegen-llvm/function-return.rs
index 4127f516038..4127f516038 100644
--- a/tests/codegen/function-return.rs
+++ b/tests/codegen-llvm/function-return.rs
diff --git a/tests/codegen/gdb_debug_script_load.rs b/tests/codegen-llvm/gdb_debug_script_load.rs
index 3e92eba10b1..3e92eba10b1 100644
--- a/tests/codegen/gdb_debug_script_load.rs
+++ b/tests/codegen-llvm/gdb_debug_script_load.rs
diff --git a/tests/codegen/generic-debug.rs b/tests/codegen-llvm/generic-debug.rs
index 0ad0b074657..0ad0b074657 100644
--- a/tests/codegen/generic-debug.rs
+++ b/tests/codegen-llvm/generic-debug.rs
diff --git a/tests/codegen/gep-index.rs b/tests/codegen-llvm/gep-index.rs
index bfb2511af87..bfb2511af87 100644
--- a/tests/codegen/gep-index.rs
+++ b/tests/codegen-llvm/gep-index.rs
diff --git a/tests/codegen/gpu-kernel-abi.rs b/tests/codegen-llvm/gpu-kernel-abi.rs
index 8ac376d9338..8ac376d9338 100644
--- a/tests/codegen/gpu-kernel-abi.rs
+++ b/tests/codegen-llvm/gpu-kernel-abi.rs
diff --git a/tests/codegen-llvm/gpu_offload/gpu_host.rs b/tests/codegen-llvm/gpu_offload/gpu_host.rs
new file mode 100644
index 00000000000..513e27426bc
--- /dev/null
+++ b/tests/codegen-llvm/gpu_offload/gpu_host.rs
@@ -0,0 +1,80 @@
+//@ compile-flags: -Zoffload=Enable -Zunstable-options -C opt-level=3  -Clto=fat
+//@ no-prefer-dynamic
+//@ needs-enzyme
+
+// This test is verifying that we generate __tgt_target_data_*_mapper before and after a call to the
+// kernel_1. Better documentation to what each global or variable means is available in the gpu
+// offlaod code, or the LLVM offload documentation. This code does not launch any GPU kernels yet,
+// and will be rewritten once a proper offload frontend has landed.
+//
+// We currently only handle memory transfer for specific calls to functions named `kernel_{num}`,
+// when inside of a function called main. This, too, is a temporary workaround for not having a
+// frontend.
+
+#![no_main]
+
+#[unsafe(no_mangle)]
+fn main() {
+    let mut x = [3.0; 256];
+    kernel_1(&mut x);
+    core::hint::black_box(&x);
+}
+
+// CHECK: %struct.__tgt_offload_entry = type { i64, i16, i16, i32, ptr, ptr, i64, i64, ptr }
+// CHECK: %struct.__tgt_kernel_arguments = type { i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, i64, i64, [3 x i32], [3 x i32], i32 }
+// CHECK: %struct.ident_t = type { i32, i32, i32, i32, ptr }
+// CHECK: %struct.__tgt_bin_desc = type { i32, ptr, ptr, ptr }
+
+// CHECK: @.offload_sizes.1 = private unnamed_addr constant [1 x i64] [i64 1024]
+// CHECK: @.offload_maptypes.1 = private unnamed_addr constant [1 x i64] [i64 3]
+// CHECK: @.kernel_1.region_id = weak unnamed_addr constant i8 0
+// CHECK: @.offloading.entry_name.1 = internal unnamed_addr constant [9 x i8] c"kernel_1\00", section ".llvm.rodata.offloading", align 1
+// CHECK: @.offloading.entry.kernel_1 = weak constant %struct.__tgt_offload_entry { i64 0, i16 1, i16 1, i32 0, ptr @.kernel_1.region_id, ptr @.offloading.entry_name.1, i64 0, i64 0, ptr null }, section ".omp_offloading_entries", align 1
+// CHECK: @my_struct_global2 = external global %struct.__tgt_kernel_arguments
+// CHECK: @0 = private unnamed_addr constant [23 x i8] c";unknown;unknown;0;0;;\00", align 1
+// CHECK: @1 = private unnamed_addr constant %struct.ident_t { i32 0, i32 2, i32 0, i32 22, ptr @0 }, align 8
+
+// CHECK:  Function Attrs:
+// CHECK-NEXT: define{{( dso_local)?}} void @main()
+// CHECK-NEXT: start:
+// CHECK-NEXT:   %0 = alloca [8 x i8], align 8
+// CHECK-NEXT:   %x = alloca [1024 x i8], align 16
+// CHECK-NEXT:   %EmptyDesc = alloca %struct.__tgt_bin_desc, align 8
+// CHECK-NEXT:   %.offload_baseptrs = alloca [1 x ptr], align 8
+// CHECK-NEXT:   %.offload_ptrs = alloca [1 x ptr], align 8
+// CHECK-NEXT:   %.offload_sizes = alloca [1 x i64], align 8
+// CHECK-NEXT:   %x.addr = alloca ptr, align 8
+// CHECK-NEXT:   store ptr %x, ptr %x.addr, align 8
+// CHECK-NEXT:   %1 = load ptr, ptr %x.addr, align 8
+// CHECK-NEXT:   %2 = getelementptr inbounds float, ptr %1, i32 0
+// CHECK:        call void @llvm.memset.p0.i64(ptr align 8 %EmptyDesc, i8 0, i64 32, i1 false)
+// CHECK-NEXT:   call void @__tgt_register_lib(ptr %EmptyDesc)
+// CHECK-NEXT:   call void @__tgt_init_all_rtls()
+// CHECK-NEXT:   %3 = getelementptr inbounds [1 x ptr], ptr %.offload_baseptrs, i32 0, i32 0
+// CHECK-NEXT:   store ptr %1, ptr %3, align 8
+// CHECK-NEXT:   %4 = getelementptr inbounds [1 x ptr], ptr %.offload_ptrs, i32 0, i32 0
+// CHECK-NEXT:   store ptr %2, ptr %4, align 8
+// CHECK-NEXT:   %5 = getelementptr inbounds [1 x i64], ptr %.offload_sizes, i32 0, i32 0
+// CHECK-NEXT:   store i64 1024, ptr %5, align 8
+// CHECK-NEXT:   %6 = getelementptr inbounds [1 x ptr], ptr %.offload_baseptrs, i32 0, i32 0
+// CHECK-NEXT:   %7 = getelementptr inbounds [1 x ptr], ptr %.offload_ptrs, i32 0, i32 0
+// CHECK-NEXT:   %8 = getelementptr inbounds [1 x i64], ptr %.offload_sizes, i32 0, i32 0
+// CHECK-NEXT:   call void @__tgt_target_data_begin_mapper(ptr @1, i64 -1, i32 1, ptr %6, ptr %7, ptr %8, ptr @.offload_maptypes.1, ptr null, ptr null)
+// CHECK-NEXT:   call void @kernel_1(ptr noalias noundef nonnull align 4 dereferenceable(1024) %x)
+// CHECK-NEXT:   %9 = getelementptr inbounds [1 x ptr], ptr %.offload_baseptrs, i32 0, i32 0
+// CHECK-NEXT:   %10 = getelementptr inbounds [1 x ptr], ptr %.offload_ptrs, i32 0, i32 0
+// CHECK-NEXT:   %11 = getelementptr inbounds [1 x i64], ptr %.offload_sizes, i32 0, i32 0
+// CHECK-NEXT:   call void @__tgt_target_data_end_mapper(ptr @1, i64 -1, i32 1, ptr %9, ptr %10, ptr %11, ptr @.offload_maptypes.1, ptr null, ptr null)
+// CHECK-NEXT:   call void @__tgt_unregister_lib(ptr %EmptyDesc)
+// CHECK:        store ptr %x, ptr %0, align 8
+// CHECK-NEXT:   call void asm sideeffect "", "r,~{memory}"(ptr nonnull %0)
+// CHECK:        ret void
+// CHECK-NEXT: }
+
+#[unsafe(no_mangle)]
+#[inline(never)]
+pub fn kernel_1(x: &mut [f32; 256]) {
+    for i in 0..256 {
+        x[i] = 21.0;
+    }
+}
diff --git a/tests/codegen/hint/cold_path.rs b/tests/codegen-llvm/hint/cold_path.rs
index 149abe474f6..149abe474f6 100644
--- a/tests/codegen/hint/cold_path.rs
+++ b/tests/codegen-llvm/hint/cold_path.rs
diff --git a/tests/codegen/hint/likely.rs b/tests/codegen-llvm/hint/likely.rs
index 75f9e7aae36..75f9e7aae36 100644
--- a/tests/codegen/hint/likely.rs
+++ b/tests/codegen-llvm/hint/likely.rs
diff --git a/tests/codegen/hint/unlikely.rs b/tests/codegen-llvm/hint/unlikely.rs
index 248b1e2537e..248b1e2537e 100644
--- a/tests/codegen/hint/unlikely.rs
+++ b/tests/codegen-llvm/hint/unlikely.rs
diff --git a/tests/codegen/i128-wasm32-callconv.rs b/tests/codegen-llvm/i128-wasm32-callconv.rs
index 9d73d270ef3..9d73d270ef3 100644
--- a/tests/codegen/i128-wasm32-callconv.rs
+++ b/tests/codegen-llvm/i128-wasm32-callconv.rs
diff --git a/tests/codegen/i128-x86-align.rs b/tests/codegen-llvm/i128-x86-align.rs
index 75802b0c505..75802b0c505 100644
--- a/tests/codegen/i128-x86-align.rs
+++ b/tests/codegen-llvm/i128-x86-align.rs
diff --git a/tests/codegen/i128-x86-callconv.rs b/tests/codegen-llvm/i128-x86-callconv.rs
index 41c30c09c1a..41c30c09c1a 100644
--- a/tests/codegen/i128-x86-callconv.rs
+++ b/tests/codegen-llvm/i128-x86-callconv.rs
diff --git a/tests/codegen/infallible-unwrap-in-opt-z.rs b/tests/codegen-llvm/infallible-unwrap-in-opt-z.rs
index c2297c58e77..c2297c58e77 100644
--- a/tests/codegen/infallible-unwrap-in-opt-z.rs
+++ b/tests/codegen-llvm/infallible-unwrap-in-opt-z.rs
diff --git a/tests/codegen/inherit_overflow.rs b/tests/codegen-llvm/inherit_overflow.rs
index e4a5ef39fc5..e4a5ef39fc5 100644
--- a/tests/codegen/inherit_overflow.rs
+++ b/tests/codegen-llvm/inherit_overflow.rs
diff --git a/tests/codegen/inline-always-works-always.rs b/tests/codegen-llvm/inline-always-works-always.rs
index 07200fd9e37..07200fd9e37 100644
--- a/tests/codegen/inline-always-works-always.rs
+++ b/tests/codegen-llvm/inline-always-works-always.rs
diff --git a/tests/codegen/inline-debuginfo.rs b/tests/codegen-llvm/inline-debuginfo.rs
index 1e1c9037f5c..1e1c9037f5c 100644
--- a/tests/codegen/inline-debuginfo.rs
+++ b/tests/codegen-llvm/inline-debuginfo.rs
diff --git a/tests/codegen/inline-function-args-debug-info.rs b/tests/codegen-llvm/inline-function-args-debug-info.rs
index c31419cb914..c31419cb914 100644
--- a/tests/codegen/inline-function-args-debug-info.rs
+++ b/tests/codegen-llvm/inline-function-args-debug-info.rs
diff --git a/tests/codegen/inline-hint.rs b/tests/codegen-llvm/inline-hint.rs
index 3d46885d5a2..3d46885d5a2 100644
--- a/tests/codegen/inline-hint.rs
+++ b/tests/codegen-llvm/inline-hint.rs
diff --git a/tests/codegen/instrument-coverage/instrument-coverage-off.rs b/tests/codegen-llvm/instrument-coverage/instrument-coverage-off.rs
index e44d6c65874..e44d6c65874 100644
--- a/tests/codegen/instrument-coverage/instrument-coverage-off.rs
+++ b/tests/codegen-llvm/instrument-coverage/instrument-coverage-off.rs
diff --git a/tests/codegen/instrument-coverage/instrument-coverage.rs b/tests/codegen-llvm/instrument-coverage/instrument-coverage.rs
index 23d23651c72..23d23651c72 100644
--- a/tests/codegen/instrument-coverage/instrument-coverage.rs
+++ b/tests/codegen-llvm/instrument-coverage/instrument-coverage.rs
diff --git a/tests/codegen/instrument-coverage/testprog.rs b/tests/codegen-llvm/instrument-coverage/testprog.rs
index 9e918499d57..9e918499d57 100644
--- a/tests/codegen/instrument-coverage/testprog.rs
+++ b/tests/codegen-llvm/instrument-coverage/testprog.rs
diff --git a/tests/codegen/instrument-mcount.rs b/tests/codegen-llvm/instrument-mcount.rs
index 8c97535d4a8..8c97535d4a8 100644
--- a/tests/codegen/instrument-mcount.rs
+++ b/tests/codegen-llvm/instrument-mcount.rs
diff --git a/tests/codegen/instrument-xray/basic.rs b/tests/codegen-llvm/instrument-xray/basic.rs
index 7aaebf41e36..7aaebf41e36 100644
--- a/tests/codegen/instrument-xray/basic.rs
+++ b/tests/codegen-llvm/instrument-xray/basic.rs
diff --git a/tests/codegen/instrument-xray/options-combine.rs b/tests/codegen-llvm/instrument-xray/options-combine.rs
index d1e3b78e6b2..d1e3b78e6b2 100644
--- a/tests/codegen/instrument-xray/options-combine.rs
+++ b/tests/codegen-llvm/instrument-xray/options-combine.rs
diff --git a/tests/codegen/instrument-xray/options-override.rs b/tests/codegen-llvm/instrument-xray/options-override.rs
index 428fb723edb..428fb723edb 100644
--- a/tests/codegen/instrument-xray/options-override.rs
+++ b/tests/codegen-llvm/instrument-xray/options-override.rs
diff --git a/tests/codegen/integer-cmp.rs b/tests/codegen-llvm/integer-cmp.rs
index 812fa8e4a42..812fa8e4a42 100644
--- a/tests/codegen/integer-cmp.rs
+++ b/tests/codegen-llvm/integer-cmp.rs
diff --git a/tests/codegen/integer-overflow.rs b/tests/codegen-llvm/integer-overflow.rs
index 80362247a86..80362247a86 100644
--- a/tests/codegen/integer-overflow.rs
+++ b/tests/codegen-llvm/integer-overflow.rs
diff --git a/tests/codegen/internalize-closures.rs b/tests/codegen-llvm/internalize-closures.rs
index f226ea6faac..f226ea6faac 100644
--- a/tests/codegen/internalize-closures.rs
+++ b/tests/codegen-llvm/internalize-closures.rs
diff --git a/tests/codegen/intrinsic-no-unnamed-attr.rs b/tests/codegen-llvm/intrinsic-no-unnamed-attr.rs
index 4bec579831d..4bec579831d 100644
--- a/tests/codegen/intrinsic-no-unnamed-attr.rs
+++ b/tests/codegen-llvm/intrinsic-no-unnamed-attr.rs
diff --git a/tests/codegen/intrinsics/aggregate-thin-pointer.rs b/tests/codegen-llvm/intrinsics/aggregate-thin-pointer.rs
index bd590ce9180..bd590ce9180 100644
--- a/tests/codegen/intrinsics/aggregate-thin-pointer.rs
+++ b/tests/codegen-llvm/intrinsics/aggregate-thin-pointer.rs
diff --git a/tests/codegen/intrinsics/carrying_mul_add.rs b/tests/codegen-llvm/intrinsics/carrying_mul_add.rs
index 21fb49a3786..21fb49a3786 100644
--- a/tests/codegen/intrinsics/carrying_mul_add.rs
+++ b/tests/codegen-llvm/intrinsics/carrying_mul_add.rs
diff --git a/tests/codegen/intrinsics/cold_path.rs b/tests/codegen-llvm/intrinsics/cold_path.rs
index fd75324b671..fd75324b671 100644
--- a/tests/codegen/intrinsics/cold_path.rs
+++ b/tests/codegen-llvm/intrinsics/cold_path.rs
diff --git a/tests/codegen/intrinsics/cold_path2.rs b/tests/codegen-llvm/intrinsics/cold_path2.rs
index 0891c878fd9..0891c878fd9 100644
--- a/tests/codegen/intrinsics/cold_path2.rs
+++ b/tests/codegen-llvm/intrinsics/cold_path2.rs
diff --git a/tests/codegen/intrinsics/cold_path3.rs b/tests/codegen-llvm/intrinsics/cold_path3.rs
index bf3347de665..bf3347de665 100644
--- a/tests/codegen/intrinsics/cold_path3.rs
+++ b/tests/codegen-llvm/intrinsics/cold_path3.rs
diff --git a/tests/codegen/intrinsics/compare_bytes.rs b/tests/codegen-llvm/intrinsics/compare_bytes.rs
index 3ab0e4e97e0..3ab0e4e97e0 100644
--- a/tests/codegen/intrinsics/compare_bytes.rs
+++ b/tests/codegen-llvm/intrinsics/compare_bytes.rs
diff --git a/tests/codegen/intrinsics/const_eval_select.rs b/tests/codegen-llvm/intrinsics/const_eval_select.rs
index baa985b00cd..baa985b00cd 100644
--- a/tests/codegen/intrinsics/const_eval_select.rs
+++ b/tests/codegen-llvm/intrinsics/const_eval_select.rs
diff --git a/tests/codegen/intrinsics/ctlz.rs b/tests/codegen-llvm/intrinsics/ctlz.rs
index 0d54d21ce12..0d54d21ce12 100644
--- a/tests/codegen/intrinsics/ctlz.rs
+++ b/tests/codegen-llvm/intrinsics/ctlz.rs
diff --git a/tests/codegen/intrinsics/ctpop.rs b/tests/codegen-llvm/intrinsics/ctpop.rs
index f4043325de9..f4043325de9 100644
--- a/tests/codegen/intrinsics/ctpop.rs
+++ b/tests/codegen-llvm/intrinsics/ctpop.rs
diff --git a/tests/codegen/intrinsics/disjoint_bitor.rs b/tests/codegen-llvm/intrinsics/disjoint_bitor.rs
index fc45439ee0b..fc45439ee0b 100644
--- a/tests/codegen/intrinsics/disjoint_bitor.rs
+++ b/tests/codegen-llvm/intrinsics/disjoint_bitor.rs
diff --git a/tests/codegen/intrinsics/exact_div.rs b/tests/codegen-llvm/intrinsics/exact_div.rs
index dc625ba7fe4..dc625ba7fe4 100644
--- a/tests/codegen/intrinsics/exact_div.rs
+++ b/tests/codegen-llvm/intrinsics/exact_div.rs
diff --git a/tests/codegen/intrinsics/likely.rs b/tests/codegen-llvm/intrinsics/likely.rs
index c5e3c466f45..c5e3c466f45 100644
--- a/tests/codegen/intrinsics/likely.rs
+++ b/tests/codegen-llvm/intrinsics/likely.rs
diff --git a/tests/codegen/intrinsics/likely_assert.rs b/tests/codegen-llvm/intrinsics/likely_assert.rs
index 87ffb4ee3fb..87ffb4ee3fb 100644
--- a/tests/codegen/intrinsics/likely_assert.rs
+++ b/tests/codegen-llvm/intrinsics/likely_assert.rs
diff --git a/tests/codegen/intrinsics/mask.rs b/tests/codegen-llvm/intrinsics/mask.rs
index 5344274678c..5344274678c 100644
--- a/tests/codegen/intrinsics/mask.rs
+++ b/tests/codegen-llvm/intrinsics/mask.rs
diff --git a/tests/codegen/intrinsics/nontemporal.rs b/tests/codegen-llvm/intrinsics/nontemporal.rs
index a151d4bd297..a151d4bd297 100644
--- a/tests/codegen/intrinsics/nontemporal.rs
+++ b/tests/codegen-llvm/intrinsics/nontemporal.rs
diff --git a/tests/codegen/intrinsics/offset.rs b/tests/codegen-llvm/intrinsics/offset.rs
index cf0c7c7ac7d..cf0c7c7ac7d 100644
--- a/tests/codegen/intrinsics/offset.rs
+++ b/tests/codegen-llvm/intrinsics/offset.rs
diff --git a/tests/codegen/intrinsics/offset_from.rs b/tests/codegen-llvm/intrinsics/offset_from.rs
index ef1a77ef184..ef1a77ef184 100644
--- a/tests/codegen/intrinsics/offset_from.rs
+++ b/tests/codegen-llvm/intrinsics/offset_from.rs
diff --git a/tests/codegen/intrinsics/prefetch.rs b/tests/codegen-llvm/intrinsics/prefetch.rs
index 3f9f21c85cb..3f9f21c85cb 100644
--- a/tests/codegen/intrinsics/prefetch.rs
+++ b/tests/codegen-llvm/intrinsics/prefetch.rs
diff --git a/tests/codegen/intrinsics/ptr_metadata.rs b/tests/codegen-llvm/intrinsics/ptr_metadata.rs
index 044dbc20486..044dbc20486 100644
--- a/tests/codegen/intrinsics/ptr_metadata.rs
+++ b/tests/codegen-llvm/intrinsics/ptr_metadata.rs
diff --git a/tests/codegen/intrinsics/rotate_left.rs b/tests/codegen-llvm/intrinsics/rotate_left.rs
index 4f6c5cbaed6..4f6c5cbaed6 100644
--- a/tests/codegen/intrinsics/rotate_left.rs
+++ b/tests/codegen-llvm/intrinsics/rotate_left.rs
diff --git a/tests/codegen/intrinsics/rustc_intrinsic_must_be_overridden.rs b/tests/codegen-llvm/intrinsics/rustc_intrinsic_must_be_overridden.rs
index b41e441d309..b41e441d309 100644
--- a/tests/codegen/intrinsics/rustc_intrinsic_must_be_overridden.rs
+++ b/tests/codegen-llvm/intrinsics/rustc_intrinsic_must_be_overridden.rs
diff --git a/tests/codegen/intrinsics/select_unpredictable.rs b/tests/codegen-llvm/intrinsics/select_unpredictable.rs
index ad7120c6fb8..ad7120c6fb8 100644
--- a/tests/codegen/intrinsics/select_unpredictable.rs
+++ b/tests/codegen-llvm/intrinsics/select_unpredictable.rs
diff --git a/tests/codegen/intrinsics/three_way_compare.rs b/tests/codegen-llvm/intrinsics/three_way_compare.rs
index 95fcb636f7c..95fcb636f7c 100644
--- a/tests/codegen/intrinsics/three_way_compare.rs
+++ b/tests/codegen-llvm/intrinsics/three_way_compare.rs
diff --git a/tests/codegen/intrinsics/transmute-niched.rs b/tests/codegen-llvm/intrinsics/transmute-niched.rs
index 8ff5cc8ee4f..8ff5cc8ee4f 100644
--- a/tests/codegen/intrinsics/transmute-niched.rs
+++ b/tests/codegen-llvm/intrinsics/transmute-niched.rs
diff --git a/tests/codegen/intrinsics/transmute-x64.rs b/tests/codegen-llvm/intrinsics/transmute-x64.rs
index 8c9480ab091..8c9480ab091 100644
--- a/tests/codegen/intrinsics/transmute-x64.rs
+++ b/tests/codegen-llvm/intrinsics/transmute-x64.rs
diff --git a/tests/codegen/intrinsics/transmute.rs b/tests/codegen-llvm/intrinsics/transmute.rs
index c9a1cd58af3..c9a1cd58af3 100644
--- a/tests/codegen/intrinsics/transmute.rs
+++ b/tests/codegen-llvm/intrinsics/transmute.rs
diff --git a/tests/codegen/intrinsics/typed_swap.rs b/tests/codegen-llvm/intrinsics/typed_swap.rs
index 6b55078407a..6b55078407a 100644
--- a/tests/codegen/intrinsics/typed_swap.rs
+++ b/tests/codegen-llvm/intrinsics/typed_swap.rs
diff --git a/tests/codegen/intrinsics/unchecked_math.rs b/tests/codegen-llvm/intrinsics/unchecked_math.rs
index 419c120ede9..419c120ede9 100644
--- a/tests/codegen/intrinsics/unchecked_math.rs
+++ b/tests/codegen-llvm/intrinsics/unchecked_math.rs
diff --git a/tests/codegen/intrinsics/unlikely.rs b/tests/codegen-llvm/intrinsics/unlikely.rs
index 90ebf070d27..90ebf070d27 100644
--- a/tests/codegen/intrinsics/unlikely.rs
+++ b/tests/codegen-llvm/intrinsics/unlikely.rs
diff --git a/tests/codegen/intrinsics/volatile.rs b/tests/codegen-llvm/intrinsics/volatile.rs
index 2dea5ecb2ca..2dea5ecb2ca 100644
--- a/tests/codegen/intrinsics/volatile.rs
+++ b/tests/codegen-llvm/intrinsics/volatile.rs
diff --git a/tests/codegen/intrinsics/volatile_order.rs b/tests/codegen-llvm/intrinsics/volatile_order.rs
index 99469831a6c..99469831a6c 100644
--- a/tests/codegen/intrinsics/volatile_order.rs
+++ b/tests/codegen-llvm/intrinsics/volatile_order.rs
diff --git a/tests/codegen/is_val_statically_known.rs b/tests/codegen-llvm/is_val_statically_known.rs
index 8119d3a3bf6..8119d3a3bf6 100644
--- a/tests/codegen/is_val_statically_known.rs
+++ b/tests/codegen-llvm/is_val_statically_known.rs
diff --git a/tests/codegen/issue-97217.rs b/tests/codegen-llvm/issue-97217.rs
index ef9acc5fc93..ef9acc5fc93 100644
--- a/tests/codegen/issue-97217.rs
+++ b/tests/codegen-llvm/issue-97217.rs
diff --git a/tests/codegen/issues/issue-101048.rs b/tests/codegen-llvm/issues/issue-101048.rs
index cfe65e758fd..cfe65e758fd 100644
--- a/tests/codegen/issues/issue-101048.rs
+++ b/tests/codegen-llvm/issues/issue-101048.rs
diff --git a/tests/codegen/issues/issue-101082.rs b/tests/codegen-llvm/issues/issue-101082.rs
index 8d15921ddb4..8d15921ddb4 100644
--- a/tests/codegen/issues/issue-101082.rs
+++ b/tests/codegen-llvm/issues/issue-101082.rs
diff --git a/tests/codegen/issues/issue-101814.rs b/tests/codegen-llvm/issues/issue-101814.rs
index 668ec8476e8..668ec8476e8 100644
--- a/tests/codegen/issues/issue-101814.rs
+++ b/tests/codegen-llvm/issues/issue-101814.rs
diff --git a/tests/codegen/issues/issue-103132.rs b/tests/codegen-llvm/issues/issue-103132.rs
index 623cab92806..623cab92806 100644
--- a/tests/codegen/issues/issue-103132.rs
+++ b/tests/codegen-llvm/issues/issue-103132.rs
diff --git a/tests/codegen/issues/issue-103285-ptr-addr-overflow-check.rs b/tests/codegen-llvm/issues/issue-103285-ptr-addr-overflow-check.rs
index 3ada5412e83..3ada5412e83 100644
--- a/tests/codegen/issues/issue-103285-ptr-addr-overflow-check.rs
+++ b/tests/codegen-llvm/issues/issue-103285-ptr-addr-overflow-check.rs
diff --git a/tests/codegen/issues/issue-103327.rs b/tests/codegen-llvm/issues/issue-103327.rs
index 4de3cfd12a0..4de3cfd12a0 100644
--- a/tests/codegen/issues/issue-103327.rs
+++ b/tests/codegen-llvm/issues/issue-103327.rs
diff --git a/tests/codegen/issues/issue-103840.rs b/tests/codegen-llvm/issues/issue-103840.rs
index c6c5098bdd0..c6c5098bdd0 100644
--- a/tests/codegen/issues/issue-103840.rs
+++ b/tests/codegen-llvm/issues/issue-103840.rs
diff --git a/tests/codegen/issues/issue-105386-ub-in-debuginfo.rs b/tests/codegen-llvm/issues/issue-105386-ub-in-debuginfo.rs
index 848aa910b58..848aa910b58 100644
--- a/tests/codegen/issues/issue-105386-ub-in-debuginfo.rs
+++ b/tests/codegen-llvm/issues/issue-105386-ub-in-debuginfo.rs
diff --git a/tests/codegen/issues/issue-106369.rs b/tests/codegen-llvm/issues/issue-106369.rs
index 3583d20c9fa..3583d20c9fa 100644
--- a/tests/codegen/issues/issue-106369.rs
+++ b/tests/codegen-llvm/issues/issue-106369.rs
diff --git a/tests/codegen/issues/issue-107681-unwrap_unchecked.rs b/tests/codegen-llvm/issues/issue-107681-unwrap_unchecked.rs
index 69aefc6b1fb..69aefc6b1fb 100644
--- a/tests/codegen/issues/issue-107681-unwrap_unchecked.rs
+++ b/tests/codegen-llvm/issues/issue-107681-unwrap_unchecked.rs
diff --git a/tests/codegen/issues/issue-108395-branchy-bool-match.rs b/tests/codegen-llvm/issues/issue-108395-branchy-bool-match.rs
index 96387e791b0..96387e791b0 100644
--- a/tests/codegen/issues/issue-108395-branchy-bool-match.rs
+++ b/tests/codegen-llvm/issues/issue-108395-branchy-bool-match.rs
diff --git a/tests/codegen/issues/issue-109328-split_first.rs b/tests/codegen-llvm/issues/issue-109328-split_first.rs
index 26235edfc19..26235edfc19 100644
--- a/tests/codegen/issues/issue-109328-split_first.rs
+++ b/tests/codegen-llvm/issues/issue-109328-split_first.rs
diff --git a/tests/codegen/issues/issue-110797-enum-jump-same.rs b/tests/codegen-llvm/issues/issue-110797-enum-jump-same.rs
index b5f7c08795b..b5f7c08795b 100644
--- a/tests/codegen/issues/issue-110797-enum-jump-same.rs
+++ b/tests/codegen-llvm/issues/issue-110797-enum-jump-same.rs
diff --git a/tests/codegen/issues/issue-111603.rs b/tests/codegen-llvm/issues/issue-111603.rs
index 2ba5a3f876a..2ba5a3f876a 100644
--- a/tests/codegen/issues/issue-111603.rs
+++ b/tests/codegen-llvm/issues/issue-111603.rs
diff --git a/tests/codegen/issues/issue-112509-slice-get-andthen-get.rs b/tests/codegen-llvm/issues/issue-112509-slice-get-andthen-get.rs
index 3909b203d08..3909b203d08 100644
--- a/tests/codegen/issues/issue-112509-slice-get-andthen-get.rs
+++ b/tests/codegen-llvm/issues/issue-112509-slice-get-andthen-get.rs
diff --git a/tests/codegen/issues/issue-113757-bounds-check-after-cmp-max.rs b/tests/codegen-llvm/issues/issue-113757-bounds-check-after-cmp-max.rs
index d495adf9980..d495adf9980 100644
--- a/tests/codegen/issues/issue-113757-bounds-check-after-cmp-max.rs
+++ b/tests/codegen-llvm/issues/issue-113757-bounds-check-after-cmp-max.rs
diff --git a/tests/codegen/issues/issue-114312.rs b/tests/codegen-llvm/issues/issue-114312.rs
index 61355dd5873..61355dd5873 100644
--- a/tests/codegen/issues/issue-114312.rs
+++ b/tests/codegen-llvm/issues/issue-114312.rs
diff --git a/tests/codegen/issues/issue-115385-llvm-jump-threading.rs b/tests/codegen-llvm/issues/issue-115385-llvm-jump-threading.rs
index 8cabd94f202..8cabd94f202 100644
--- a/tests/codegen/issues/issue-115385-llvm-jump-threading.rs
+++ b/tests/codegen-llvm/issues/issue-115385-llvm-jump-threading.rs
diff --git a/tests/codegen/issues/issue-116878.rs b/tests/codegen-llvm/issues/issue-116878.rs
index daf46c8bb55..daf46c8bb55 100644
--- a/tests/codegen/issues/issue-116878.rs
+++ b/tests/codegen-llvm/issues/issue-116878.rs
diff --git a/tests/codegen/issues/issue-118306.rs b/tests/codegen-llvm/issues/issue-118306.rs
index f12dc7cdfe2..f12dc7cdfe2 100644
--- a/tests/codegen/issues/issue-118306.rs
+++ b/tests/codegen-llvm/issues/issue-118306.rs
diff --git a/tests/codegen/issues/issue-118392.rs b/tests/codegen-llvm/issues/issue-118392.rs
index 07de8d9b237..07de8d9b237 100644
--- a/tests/codegen/issues/issue-118392.rs
+++ b/tests/codegen-llvm/issues/issue-118392.rs
diff --git a/tests/codegen/issues/issue-119422.rs b/tests/codegen-llvm/issues/issue-119422.rs
index 17ae71605b5..17ae71605b5 100644
--- a/tests/codegen/issues/issue-119422.rs
+++ b/tests/codegen-llvm/issues/issue-119422.rs
diff --git a/tests/codegen/issues/issue-121719-common-field-offset.rs b/tests/codegen-llvm/issues/issue-121719-common-field-offset.rs
index 9f5f44e0375..9f5f44e0375 100644
--- a/tests/codegen/issues/issue-121719-common-field-offset.rs
+++ b/tests/codegen-llvm/issues/issue-121719-common-field-offset.rs
diff --git a/tests/codegen/issues/issue-122600-ptr-discriminant-update.rs b/tests/codegen-llvm/issues/issue-122600-ptr-discriminant-update.rs
index 853a1ff36b1..853a1ff36b1 100644
--- a/tests/codegen/issues/issue-122600-ptr-discriminant-update.rs
+++ b/tests/codegen-llvm/issues/issue-122600-ptr-discriminant-update.rs
diff --git a/tests/codegen/issues/issue-123712-str-to-lower-autovectorization.rs b/tests/codegen-llvm/issues/issue-123712-str-to-lower-autovectorization.rs
index 11ee10e8cc3..11ee10e8cc3 100644
--- a/tests/codegen/issues/issue-123712-str-to-lower-autovectorization.rs
+++ b/tests/codegen-llvm/issues/issue-123712-str-to-lower-autovectorization.rs
diff --git a/tests/codegen/issues/issue-126585.rs b/tests/codegen-llvm/issues/issue-126585.rs
index 466dab64cdc..466dab64cdc 100644
--- a/tests/codegen/issues/issue-126585.rs
+++ b/tests/codegen-llvm/issues/issue-126585.rs
diff --git a/tests/codegen/issues/issue-129795.rs b/tests/codegen-llvm/issues/issue-129795.rs
index dc64ee35c97..dc64ee35c97 100644
--- a/tests/codegen/issues/issue-129795.rs
+++ b/tests/codegen-llvm/issues/issue-129795.rs
diff --git a/tests/codegen/issues/issue-13018.rs b/tests/codegen-llvm/issues/issue-13018.rs
index 8040018b931..8040018b931 100644
--- a/tests/codegen/issues/issue-13018.rs
+++ b/tests/codegen-llvm/issues/issue-13018.rs
diff --git a/tests/codegen/issues/issue-136329-optnone-noinline.rs b/tests/codegen-llvm/issues/issue-136329-optnone-noinline.rs
index 57c9e47a499..57c9e47a499 100644
--- a/tests/codegen/issues/issue-136329-optnone-noinline.rs
+++ b/tests/codegen-llvm/issues/issue-136329-optnone-noinline.rs
diff --git a/tests/codegen/issues/issue-15953.rs b/tests/codegen-llvm/issues/issue-15953.rs
index 70e597ac1dd..70e597ac1dd 100644
--- a/tests/codegen/issues/issue-15953.rs
+++ b/tests/codegen-llvm/issues/issue-15953.rs
diff --git a/tests/codegen/issues/issue-27130.rs b/tests/codegen-llvm/issues/issue-27130.rs
index 594e02af097..594e02af097 100644
--- a/tests/codegen/issues/issue-27130.rs
+++ b/tests/codegen-llvm/issues/issue-27130.rs
diff --git a/tests/codegen/issues/issue-32031.rs b/tests/codegen-llvm/issues/issue-32031.rs
index 559e8d947fb..559e8d947fb 100644
--- a/tests/codegen/issues/issue-32031.rs
+++ b/tests/codegen-llvm/issues/issue-32031.rs
diff --git a/tests/codegen/issues/issue-32364.rs b/tests/codegen-llvm/issues/issue-32364.rs
index 016981d1947..016981d1947 100644
--- a/tests/codegen/issues/issue-32364.rs
+++ b/tests/codegen-llvm/issues/issue-32364.rs
diff --git a/tests/codegen/issues/issue-34634.rs b/tests/codegen-llvm/issues/issue-34634.rs
index d32fa97ec38..d32fa97ec38 100644
--- a/tests/codegen/issues/issue-34634.rs
+++ b/tests/codegen-llvm/issues/issue-34634.rs
diff --git a/tests/codegen/issues/issue-34947-pow-i32.rs b/tests/codegen-llvm/issues/issue-34947-pow-i32.rs
index b4750cd35bc..b4750cd35bc 100644
--- a/tests/codegen/issues/issue-34947-pow-i32.rs
+++ b/tests/codegen-llvm/issues/issue-34947-pow-i32.rs
diff --git a/tests/codegen/issues/issue-36010-some-box-is_some.rs b/tests/codegen-llvm/issues/issue-36010-some-box-is_some.rs
index c9a8262162d..c9a8262162d 100644
--- a/tests/codegen/issues/issue-36010-some-box-is_some.rs
+++ b/tests/codegen-llvm/issues/issue-36010-some-box-is_some.rs
diff --git a/tests/codegen/issues/issue-37945.rs b/tests/codegen-llvm/issues/issue-37945.rs
index 23d0eab8ae4..23d0eab8ae4 100644
--- a/tests/codegen/issues/issue-37945.rs
+++ b/tests/codegen-llvm/issues/issue-37945.rs
diff --git a/tests/codegen/issues/issue-45222.rs b/tests/codegen-llvm/issues/issue-45222.rs
index 0201363c41a..0201363c41a 100644
--- a/tests/codegen/issues/issue-45222.rs
+++ b/tests/codegen-llvm/issues/issue-45222.rs
diff --git a/tests/codegen/issues/issue-45466.rs b/tests/codegen-llvm/issues/issue-45466.rs
index 164a27ef5d4..164a27ef5d4 100644
--- a/tests/codegen/issues/issue-45466.rs
+++ b/tests/codegen-llvm/issues/issue-45466.rs
diff --git a/tests/codegen/issues/issue-45964-bounds-check-slice-pos.rs b/tests/codegen-llvm/issues/issue-45964-bounds-check-slice-pos.rs
index a48bb2a1ccf..a48bb2a1ccf 100644
--- a/tests/codegen/issues/issue-45964-bounds-check-slice-pos.rs
+++ b/tests/codegen-llvm/issues/issue-45964-bounds-check-slice-pos.rs
diff --git a/tests/codegen/issues/issue-47278.rs b/tests/codegen-llvm/issues/issue-47278.rs
index 4f0a5bdf36f..4f0a5bdf36f 100644
--- a/tests/codegen/issues/issue-47278.rs
+++ b/tests/codegen-llvm/issues/issue-47278.rs
diff --git a/tests/codegen/issues/issue-47442.rs b/tests/codegen-llvm/issues/issue-47442.rs
index 445234e55ad..445234e55ad 100644
--- a/tests/codegen/issues/issue-47442.rs
+++ b/tests/codegen-llvm/issues/issue-47442.rs
diff --git a/tests/codegen/issues/issue-56267-2.rs b/tests/codegen-llvm/issues/issue-56267-2.rs
index 98e3732777e..98e3732777e 100644
--- a/tests/codegen/issues/issue-56267-2.rs
+++ b/tests/codegen-llvm/issues/issue-56267-2.rs
diff --git a/tests/codegen/issues/issue-56267.rs b/tests/codegen-llvm/issues/issue-56267.rs
index cabcc298482..cabcc298482 100644
--- a/tests/codegen/issues/issue-56267.rs
+++ b/tests/codegen-llvm/issues/issue-56267.rs
diff --git a/tests/codegen/issues/issue-56927.rs b/tests/codegen-llvm/issues/issue-56927.rs
index 415ef073e03..415ef073e03 100644
--- a/tests/codegen/issues/issue-56927.rs
+++ b/tests/codegen-llvm/issues/issue-56927.rs
diff --git a/tests/codegen/issues/issue-58881.rs b/tests/codegen-llvm/issues/issue-58881.rs
index ba6285f3972..ba6285f3972 100644
--- a/tests/codegen/issues/issue-58881.rs
+++ b/tests/codegen-llvm/issues/issue-58881.rs
diff --git a/tests/codegen/issues/issue-59352.rs b/tests/codegen-llvm/issues/issue-59352.rs
index cb4383d4a30..cb4383d4a30 100644
--- a/tests/codegen/issues/issue-59352.rs
+++ b/tests/codegen-llvm/issues/issue-59352.rs
diff --git a/tests/codegen/issues/issue-64219-fn-ptr-call-returning-never-is-noreturn.rs b/tests/codegen-llvm/issues/issue-64219-fn-ptr-call-returning-never-is-noreturn.rs
index 86d020e1751..86d020e1751 100644
--- a/tests/codegen/issues/issue-64219-fn-ptr-call-returning-never-is-noreturn.rs
+++ b/tests/codegen-llvm/issues/issue-64219-fn-ptr-call-returning-never-is-noreturn.rs
diff --git a/tests/codegen/issues/issue-68667-unwrap-combinators.rs b/tests/codegen-llvm/issues/issue-68667-unwrap-combinators.rs
index 7f4a32109fe..7f4a32109fe 100644
--- a/tests/codegen/issues/issue-68667-unwrap-combinators.rs
+++ b/tests/codegen-llvm/issues/issue-68667-unwrap-combinators.rs
diff --git a/tests/codegen/issues/issue-69101-bounds-check.rs b/tests/codegen-llvm/issues/issue-69101-bounds-check.rs
index 953b79aa263..953b79aa263 100644
--- a/tests/codegen/issues/issue-69101-bounds-check.rs
+++ b/tests/codegen-llvm/issues/issue-69101-bounds-check.rs
diff --git a/tests/codegen/issues/issue-73031.rs b/tests/codegen-llvm/issues/issue-73031.rs
index 80dea9b5bc2..80dea9b5bc2 100644
--- a/tests/codegen/issues/issue-73031.rs
+++ b/tests/codegen-llvm/issues/issue-73031.rs
diff --git a/tests/codegen/issues/issue-73258.rs b/tests/codegen-llvm/issues/issue-73258.rs
index 936a7554496..936a7554496 100644
--- a/tests/codegen/issues/issue-73258.rs
+++ b/tests/codegen-llvm/issues/issue-73258.rs
diff --git a/tests/codegen/issues/issue-73338-effecient-cmp.rs b/tests/codegen-llvm/issues/issue-73338-effecient-cmp.rs
index 71641a5457b..71641a5457b 100644
--- a/tests/codegen/issues/issue-73338-effecient-cmp.rs
+++ b/tests/codegen-llvm/issues/issue-73338-effecient-cmp.rs
diff --git a/tests/codegen/issues/issue-73396-bounds-check-after-position.rs b/tests/codegen-llvm/issues/issue-73396-bounds-check-after-position.rs
index 1e2c25babe0..1e2c25babe0 100644
--- a/tests/codegen/issues/issue-73396-bounds-check-after-position.rs
+++ b/tests/codegen-llvm/issues/issue-73396-bounds-check-after-position.rs
diff --git a/tests/codegen/issues/issue-73827-bounds-check-index-in-subexpr.rs b/tests/codegen-llvm/issues/issue-73827-bounds-check-index-in-subexpr.rs
index e9dd0d1bf23..e9dd0d1bf23 100644
--- a/tests/codegen/issues/issue-73827-bounds-check-index-in-subexpr.rs
+++ b/tests/codegen-llvm/issues/issue-73827-bounds-check-index-in-subexpr.rs
diff --git a/tests/codegen/issues/issue-74938-array-split-at.rs b/tests/codegen-llvm/issues/issue-74938-array-split-at.rs
index 9d3e23d642b..9d3e23d642b 100644
--- a/tests/codegen/issues/issue-74938-array-split-at.rs
+++ b/tests/codegen-llvm/issues/issue-74938-array-split-at.rs
diff --git a/tests/codegen/issues/issue-75525-bounds-checks.rs b/tests/codegen-llvm/issues/issue-75525-bounds-checks.rs
index 5dfbd350010..5dfbd350010 100644
--- a/tests/codegen/issues/issue-75525-bounds-checks.rs
+++ b/tests/codegen-llvm/issues/issue-75525-bounds-checks.rs
diff --git a/tests/codegen/issues/issue-75546.rs b/tests/codegen-llvm/issues/issue-75546.rs
index 1e1e6543a88..1e1e6543a88 100644
--- a/tests/codegen/issues/issue-75546.rs
+++ b/tests/codegen-llvm/issues/issue-75546.rs
diff --git a/tests/codegen/issues/issue-75659.rs b/tests/codegen-llvm/issues/issue-75659.rs
index 0960bfdb6b0..0960bfdb6b0 100644
--- a/tests/codegen/issues/issue-75659.rs
+++ b/tests/codegen-llvm/issues/issue-75659.rs
diff --git a/tests/codegen/issues/issue-75978.rs b/tests/codegen-llvm/issues/issue-75978.rs
index f4b0bc36329..f4b0bc36329 100644
--- a/tests/codegen/issues/issue-75978.rs
+++ b/tests/codegen-llvm/issues/issue-75978.rs
diff --git a/tests/codegen/issues/issue-77812.rs b/tests/codegen-llvm/issues/issue-77812.rs
index 09e2376c30d..09e2376c30d 100644
--- a/tests/codegen/issues/issue-77812.rs
+++ b/tests/codegen-llvm/issues/issue-77812.rs
diff --git a/tests/codegen/issues/issue-84268.rs b/tests/codegen-llvm/issues/issue-84268.rs
index 1dc55a909ad..1dc55a909ad 100644
--- a/tests/codegen/issues/issue-84268.rs
+++ b/tests/codegen-llvm/issues/issue-84268.rs
diff --git a/tests/codegen/issues/issue-85872-multiple-reverse.rs b/tests/codegen-llvm/issues/issue-85872-multiple-reverse.rs
index 6f566ddee6b..6f566ddee6b 100644
--- a/tests/codegen/issues/issue-85872-multiple-reverse.rs
+++ b/tests/codegen-llvm/issues/issue-85872-multiple-reverse.rs
diff --git a/tests/codegen/issues/issue-86106.rs b/tests/codegen-llvm/issues/issue-86106.rs
index 8d1ce116d26..8d1ce116d26 100644
--- a/tests/codegen/issues/issue-86106.rs
+++ b/tests/codegen-llvm/issues/issue-86106.rs
diff --git a/tests/codegen/issues/issue-86109-eliminate-div-by-zero-check.rs b/tests/codegen-llvm/issues/issue-86109-eliminate-div-by-zero-check.rs
index 345c09738b6..345c09738b6 100644
--- a/tests/codegen/issues/issue-86109-eliminate-div-by-zero-check.rs
+++ b/tests/codegen-llvm/issues/issue-86109-eliminate-div-by-zero-check.rs
diff --git a/tests/codegen/issues/issue-93036-assert-index.rs b/tests/codegen-llvm/issues/issue-93036-assert-index.rs
index 46f45c2f06e..46f45c2f06e 100644
--- a/tests/codegen/issues/issue-93036-assert-index.rs
+++ b/tests/codegen-llvm/issues/issue-93036-assert-index.rs
diff --git a/tests/codegen/issues/issue-96274.rs b/tests/codegen-llvm/issues/issue-96274.rs
index 2425ec53e4e..2425ec53e4e 100644
--- a/tests/codegen/issues/issue-96274.rs
+++ b/tests/codegen-llvm/issues/issue-96274.rs
diff --git a/tests/codegen/issues/issue-96497-slice-size-nowrap.rs b/tests/codegen-llvm/issues/issue-96497-slice-size-nowrap.rs
index 7b3a20a295e..7b3a20a295e 100644
--- a/tests/codegen/issues/issue-96497-slice-size-nowrap.rs
+++ b/tests/codegen-llvm/issues/issue-96497-slice-size-nowrap.rs
diff --git a/tests/codegen/issues/issue-98294-get-mut-copy-from-slice-opt.rs b/tests/codegen-llvm/issues/issue-98294-get-mut-copy-from-slice-opt.rs
index 76adcf9fd45..76adcf9fd45 100644
--- a/tests/codegen/issues/issue-98294-get-mut-copy-from-slice-opt.rs
+++ b/tests/codegen-llvm/issues/issue-98294-get-mut-copy-from-slice-opt.rs
diff --git a/tests/codegen/issues/issue-98678-async.rs b/tests/codegen-llvm/issues/issue-98678-async.rs
index 3dd06bb5194..3dd06bb5194 100644
--- a/tests/codegen/issues/issue-98678-async.rs
+++ b/tests/codegen-llvm/issues/issue-98678-async.rs
diff --git a/tests/codegen/issues/issue-98678-closure-coroutine.rs b/tests/codegen-llvm/issues/issue-98678-closure-coroutine.rs
index 8763bcb799d..8763bcb799d 100644
--- a/tests/codegen/issues/issue-98678-closure-coroutine.rs
+++ b/tests/codegen-llvm/issues/issue-98678-closure-coroutine.rs
diff --git a/tests/codegen/issues/issue-98678-enum.rs b/tests/codegen-llvm/issues/issue-98678-enum.rs
index 87bf8797293..87bf8797293 100644
--- a/tests/codegen/issues/issue-98678-enum.rs
+++ b/tests/codegen-llvm/issues/issue-98678-enum.rs
diff --git a/tests/codegen/issues/issue-98678-struct-union.rs b/tests/codegen-llvm/issues/issue-98678-struct-union.rs
index a83a585a433..a83a585a433 100644
--- a/tests/codegen/issues/issue-98678-struct-union.rs
+++ b/tests/codegen-llvm/issues/issue-98678-struct-union.rs
diff --git a/tests/codegen/issues/issue-99960.rs b/tests/codegen-llvm/issues/issue-99960.rs
index 571a9be967d..571a9be967d 100644
--- a/tests/codegen/issues/issue-99960.rs
+++ b/tests/codegen-llvm/issues/issue-99960.rs
diff --git a/tests/codegen/issues/looping-over-ne-bytes-133528.rs b/tests/codegen-llvm/issues/looping-over-ne-bytes-133528.rs
index 35acf765d69..35acf765d69 100644
--- a/tests/codegen/issues/looping-over-ne-bytes-133528.rs
+++ b/tests/codegen-llvm/issues/looping-over-ne-bytes-133528.rs
diff --git a/tests/codegen/issues/str-to-string-128690.rs b/tests/codegen-llvm/issues/str-to-string-128690.rs
index d9e69764be2..d9e69764be2 100644
--- a/tests/codegen/issues/str-to-string-128690.rs
+++ b/tests/codegen-llvm/issues/str-to-string-128690.rs
diff --git a/tests/codegen/iter-repeat-n-trivial-drop.rs b/tests/codegen-llvm/iter-repeat-n-trivial-drop.rs
index 28173530324..28173530324 100644
--- a/tests/codegen/iter-repeat-n-trivial-drop.rs
+++ b/tests/codegen-llvm/iter-repeat-n-trivial-drop.rs
diff --git a/tests/codegen/layout-size-checks.rs b/tests/codegen-llvm/layout-size-checks.rs
index d64a7055e0b..d64a7055e0b 100644
--- a/tests/codegen/layout-size-checks.rs
+++ b/tests/codegen-llvm/layout-size-checks.rs
diff --git a/tests/codegen/lib-optimizations/iter-sum.rs b/tests/codegen-llvm/lib-optimizations/iter-sum.rs
index a054ffffe74..a054ffffe74 100644
--- a/tests/codegen/lib-optimizations/iter-sum.rs
+++ b/tests/codegen-llvm/lib-optimizations/iter-sum.rs
diff --git a/tests/codegen/lib-optimizations/slice_rotate.rs b/tests/codegen-llvm/lib-optimizations/slice_rotate.rs
index aa4bb3b528c..aa4bb3b528c 100644
--- a/tests/codegen/lib-optimizations/slice_rotate.rs
+++ b/tests/codegen-llvm/lib-optimizations/slice_rotate.rs
diff --git a/tests/codegen/lifetime_start_end.rs b/tests/codegen-llvm/lifetime_start_end.rs
index 0639e7640aa..0639e7640aa 100644
--- a/tests/codegen/lifetime_start_end.rs
+++ b/tests/codegen-llvm/lifetime_start_end.rs
diff --git a/tests/codegen/link-dead-code.rs b/tests/codegen-llvm/link-dead-code.rs
index 93e1d84d9c7..93e1d84d9c7 100644
--- a/tests/codegen/link-dead-code.rs
+++ b/tests/codegen-llvm/link-dead-code.rs
diff --git a/tests/codegen/link_section.rs b/tests/codegen-llvm/link_section.rs
index f62f6948079..f62f6948079 100644
--- a/tests/codegen/link_section.rs
+++ b/tests/codegen-llvm/link_section.rs
diff --git a/tests/codegen/llvm-ident.rs b/tests/codegen-llvm/llvm-ident.rs
index 923e99bb282..923e99bb282 100644
--- a/tests/codegen/llvm-ident.rs
+++ b/tests/codegen-llvm/llvm-ident.rs
diff --git a/tests/codegen/llvm_module_flags.rs b/tests/codegen-llvm/llvm_module_flags.rs
index d3fae0c3927..d3fae0c3927 100644
--- a/tests/codegen/llvm_module_flags.rs
+++ b/tests/codegen-llvm/llvm_module_flags.rs
diff --git a/tests/codegen/loads.rs b/tests/codegen-llvm/loads.rs
index 88d67642b72..88d67642b72 100644
--- a/tests/codegen/loads.rs
+++ b/tests/codegen-llvm/loads.rs
diff --git a/tests/codegen/local-generics-in-exe-internalized.rs b/tests/codegen-llvm/local-generics-in-exe-internalized.rs
index 8dbc41382b5..8dbc41382b5 100644
--- a/tests/codegen/local-generics-in-exe-internalized.rs
+++ b/tests/codegen-llvm/local-generics-in-exe-internalized.rs
diff --git a/tests/codegen/loongarch-abi/call-llvm-intrinsics.rs b/tests/codegen-llvm/loongarch-abi/call-llvm-intrinsics.rs
index 9a50f7b8e3a..9a50f7b8e3a 100644
--- a/tests/codegen/loongarch-abi/call-llvm-intrinsics.rs
+++ b/tests/codegen-llvm/loongarch-abi/call-llvm-intrinsics.rs
diff --git a/tests/codegen/loongarch-abi/loongarch64-lp64d-abi.rs b/tests/codegen-llvm/loongarch-abi/loongarch64-lp64d-abi.rs
index 93c8d60930b..93c8d60930b 100644
--- a/tests/codegen/loongarch-abi/loongarch64-lp64d-abi.rs
+++ b/tests/codegen-llvm/loongarch-abi/loongarch64-lp64d-abi.rs
diff --git a/tests/codegen/lto-removes-invokes.rs b/tests/codegen-llvm/lto-removes-invokes.rs
index 3640bd1ab86..3640bd1ab86 100644
--- a/tests/codegen/lto-removes-invokes.rs
+++ b/tests/codegen-llvm/lto-removes-invokes.rs
diff --git a/tests/codegen/macos/i686-macosx-deployment-target.rs b/tests/codegen-llvm/macos/i686-macosx-deployment-target.rs
index cfa91e61cb0..cfa91e61cb0 100644
--- a/tests/codegen/macos/i686-macosx-deployment-target.rs
+++ b/tests/codegen-llvm/macos/i686-macosx-deployment-target.rs
diff --git a/tests/codegen/macos/i686-no-macosx-deployment-target.rs b/tests/codegen-llvm/macos/i686-no-macosx-deployment-target.rs
index 25ec5f6acbb..25ec5f6acbb 100644
--- a/tests/codegen/macos/i686-no-macosx-deployment-target.rs
+++ b/tests/codegen-llvm/macos/i686-no-macosx-deployment-target.rs
diff --git a/tests/codegen/macos/x86_64-macosx-deployment-target.rs b/tests/codegen-llvm/macos/x86_64-macosx-deployment-target.rs
index 8ea95ba0575..8ea95ba0575 100644
--- a/tests/codegen/macos/x86_64-macosx-deployment-target.rs
+++ b/tests/codegen-llvm/macos/x86_64-macosx-deployment-target.rs
diff --git a/tests/codegen/macos/x86_64-no-macosx-deployment-target.rs b/tests/codegen-llvm/macos/x86_64-no-macosx-deployment-target.rs
index 474094957ae..474094957ae 100644
--- a/tests/codegen/macos/x86_64-no-macosx-deployment-target.rs
+++ b/tests/codegen-llvm/macos/x86_64-no-macosx-deployment-target.rs
diff --git a/tests/codegen/mainsubprogram.rs b/tests/codegen-llvm/mainsubprogram.rs
index ce3fe3c8608..ce3fe3c8608 100644
--- a/tests/codegen/mainsubprogram.rs
+++ b/tests/codegen-llvm/mainsubprogram.rs
diff --git a/tests/codegen/match-optimized.rs b/tests/codegen-llvm/match-optimized.rs
index 7b409e619a8..7b409e619a8 100644
--- a/tests/codegen/match-optimized.rs
+++ b/tests/codegen-llvm/match-optimized.rs
diff --git a/tests/codegen/match-optimizes-away.rs b/tests/codegen-llvm/match-optimizes-away.rs
index 5e9be72a09f..5e9be72a09f 100644
--- a/tests/codegen/match-optimizes-away.rs
+++ b/tests/codegen-llvm/match-optimizes-away.rs
diff --git a/tests/codegen/match-unoptimized.rs b/tests/codegen-llvm/match-unoptimized.rs
index 3dfe78c3e16..3dfe78c3e16 100644
--- a/tests/codegen/match-unoptimized.rs
+++ b/tests/codegen-llvm/match-unoptimized.rs
diff --git a/tests/codegen/maybeuninit-rvo.rs b/tests/codegen-llvm/maybeuninit-rvo.rs
index 097aa610f1b..097aa610f1b 100644
--- a/tests/codegen/maybeuninit-rvo.rs
+++ b/tests/codegen-llvm/maybeuninit-rvo.rs
diff --git a/tests/codegen/mem-replace-big-type.rs b/tests/codegen-llvm/mem-replace-big-type.rs
index 0b2229ba7d1..0b2229ba7d1 100644
--- a/tests/codegen/mem-replace-big-type.rs
+++ b/tests/codegen-llvm/mem-replace-big-type.rs
diff --git a/tests/codegen/mem-replace-simple-type.rs b/tests/codegen-llvm/mem-replace-simple-type.rs
index 9f3c6bacb71..9f3c6bacb71 100644
--- a/tests/codegen/mem-replace-simple-type.rs
+++ b/tests/codegen-llvm/mem-replace-simple-type.rs
diff --git a/tests/codegen/merge-functions.rs b/tests/codegen-llvm/merge-functions.rs
index b9d3727ce11..b9d3727ce11 100644
--- a/tests/codegen/merge-functions.rs
+++ b/tests/codegen-llvm/merge-functions.rs
diff --git a/tests/codegen/meta-filecheck/check-prefix.rs b/tests/codegen-llvm/meta-filecheck/check-prefix.rs
index 98bec68627e..98bec68627e 100644
--- a/tests/codegen/meta-filecheck/check-prefix.rs
+++ b/tests/codegen-llvm/meta-filecheck/check-prefix.rs
diff --git a/tests/codegen/meta-filecheck/filecheck-flags.rs b/tests/codegen-llvm/meta-filecheck/filecheck-flags.rs
index 8e451cf4fdc..8e451cf4fdc 100644
--- a/tests/codegen/meta-filecheck/filecheck-flags.rs
+++ b/tests/codegen-llvm/meta-filecheck/filecheck-flags.rs
diff --git a/tests/codegen/meta-filecheck/msvc-prefix-bad.rs b/tests/codegen-llvm/meta-filecheck/msvc-prefix-bad.rs
index f9984c74e2a..f9984c74e2a 100644
--- a/tests/codegen/meta-filecheck/msvc-prefix-bad.rs
+++ b/tests/codegen-llvm/meta-filecheck/msvc-prefix-bad.rs
diff --git a/tests/codegen/meta-filecheck/no-directives.rs b/tests/codegen-llvm/meta-filecheck/no-directives.rs
index 2cab263604e..2cab263604e 100644
--- a/tests/codegen/meta-filecheck/no-directives.rs
+++ b/tests/codegen-llvm/meta-filecheck/no-directives.rs
diff --git a/tests/codegen/meta-filecheck/revision-prefix.rs b/tests/codegen-llvm/meta-filecheck/revision-prefix.rs
index 431066e3acc..431066e3acc 100644
--- a/tests/codegen/meta-filecheck/revision-prefix.rs
+++ b/tests/codegen-llvm/meta-filecheck/revision-prefix.rs
diff --git a/tests/codegen/method-declaration.rs b/tests/codegen-llvm/method-declaration.rs
index de2f96a5151..de2f96a5151 100644
--- a/tests/codegen/method-declaration.rs
+++ b/tests/codegen-llvm/method-declaration.rs
diff --git a/tests/codegen/min-function-alignment.rs b/tests/codegen-llvm/min-function-alignment.rs
index 6a3843b0f4f..ea5f957e81f 100644
--- a/tests/codegen/min-function-alignment.rs
+++ b/tests/codegen-llvm/min-function-alignment.rs
@@ -5,6 +5,8 @@
 //@ ignore-wasm32 aligning functions is not currently supported on wasm (#143368)
 
 #![crate_type = "lib"]
+// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
+#![feature(rustc_attrs)]
 #![feature(fn_align)]
 
 // Functions without explicit alignment use the global minimum.
@@ -21,7 +23,7 @@ pub fn no_explicit_align() {}
 // align16: align 16
 // align1024: align 1024
 #[no_mangle]
-#[align(8)]
+#[rustc_align(8)]
 pub fn lower_align() {}
 
 // the higher value of min-function-alignment and the align attribute wins out
@@ -30,7 +32,7 @@ pub fn lower_align() {}
 // align16: align 32
 // align1024: align 1024
 #[no_mangle]
-#[align(32)]
+#[rustc_align(32)]
 pub fn higher_align() {}
 
 // cold functions follow the same rules as other functions
diff --git a/tests/codegen/mir-aggregate-no-alloca.rs b/tests/codegen-llvm/mir-aggregate-no-alloca.rs
index 77d367ed5da..77d367ed5da 100644
--- a/tests/codegen/mir-aggregate-no-alloca.rs
+++ b/tests/codegen-llvm/mir-aggregate-no-alloca.rs
diff --git a/tests/codegen/mir-inlined-line-numbers.rs b/tests/codegen-llvm/mir-inlined-line-numbers.rs
index cfe43a6cf89..cfe43a6cf89 100644
--- a/tests/codegen/mir-inlined-line-numbers.rs
+++ b/tests/codegen-llvm/mir-inlined-line-numbers.rs
diff --git a/tests/codegen/mir_zst_stores.rs b/tests/codegen-llvm/mir_zst_stores.rs
index ff1d429cffd..ff1d429cffd 100644
--- a/tests/codegen/mir_zst_stores.rs
+++ b/tests/codegen-llvm/mir_zst_stores.rs
diff --git a/tests/codegen/move-before-nocapture-ref-arg.rs b/tests/codegen-llvm/move-before-nocapture-ref-arg.rs
index 2ebd645e1c3..2ebd645e1c3 100644
--- a/tests/codegen/move-before-nocapture-ref-arg.rs
+++ b/tests/codegen-llvm/move-before-nocapture-ref-arg.rs
diff --git a/tests/codegen/move-operands.rs b/tests/codegen-llvm/move-operands.rs
index ddad231b762..ddad231b762 100644
--- a/tests/codegen/move-operands.rs
+++ b/tests/codegen-llvm/move-operands.rs
diff --git a/tests/codegen/naked-asan.rs b/tests/codegen-llvm/naked-asan.rs
index 46218cf79d6..46218cf79d6 100644
--- a/tests/codegen/naked-asan.rs
+++ b/tests/codegen-llvm/naked-asan.rs
diff --git a/tests/codegen/naked-fn/aligned.rs b/tests/codegen-llvm/naked-fn/aligned.rs
index 2648b0213ca..d7281c4219a 100644
--- a/tests/codegen/naked-fn/aligned.rs
+++ b/tests/codegen-llvm/naked-fn/aligned.rs
@@ -4,12 +4,15 @@
 //@ ignore-wasm32 aligning functions is not currently supported on wasm (#143368)
 
 #![crate_type = "lib"]
+// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
+#![feature(rustc_attrs)]
 #![feature(fn_align)]
+
 use std::arch::naked_asm;
 
 // CHECK: .balign 16
 // CHECK-LABEL: naked_empty:
-#[align(16)]
+#[rustc_align(16)]
 #[no_mangle]
 #[unsafe(naked)]
 pub extern "C" fn naked_empty() {
diff --git a/tests/codegen/naked-fn/generics.rs b/tests/codegen-llvm/naked-fn/generics.rs
index 865be00d91e..865be00d91e 100644
--- a/tests/codegen/naked-fn/generics.rs
+++ b/tests/codegen-llvm/naked-fn/generics.rs
diff --git a/tests/codegen/naked-fn/instruction-set.rs b/tests/codegen-llvm/naked-fn/instruction-set.rs
index 67560c5aba7..67560c5aba7 100644
--- a/tests/codegen/naked-fn/instruction-set.rs
+++ b/tests/codegen-llvm/naked-fn/instruction-set.rs
diff --git a/tests/codegen/naked-fn/min-function-alignment.rs b/tests/codegen-llvm/naked-fn/min-function-alignment.rs
index 4ebaacd3eff..406e9334fa5 100644
--- a/tests/codegen/naked-fn/min-function-alignment.rs
+++ b/tests/codegen-llvm/naked-fn/min-function-alignment.rs
@@ -3,6 +3,8 @@
 //@ ignore-arm no "ret" mnemonic
 //@ ignore-wasm32 aligning functions is not currently supported on wasm (#143368)
 
+// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
+#![feature(rustc_attrs)]
 #![feature(fn_align)]
 #![crate_type = "lib"]
 
@@ -17,7 +19,7 @@ pub extern "C" fn naked_no_explicit_align() {
 
 // CHECK: .balign 16
 #[no_mangle]
-#[align(8)]
+#[rustc_align(8)]
 #[unsafe(naked)]
 pub extern "C" fn naked_lower_align() {
     core::arch::naked_asm!("ret")
@@ -25,7 +27,7 @@ pub extern "C" fn naked_lower_align() {
 
 // CHECK: .balign 32
 #[no_mangle]
-#[align(32)]
+#[rustc_align(32)]
 #[unsafe(naked)]
 pub extern "C" fn naked_higher_align() {
     core::arch::naked_asm!("ret")
diff --git a/tests/codegen/naked-fn/naked-functions.rs b/tests/codegen-llvm/naked-fn/naked-functions.rs
index 344af6eb42f..344af6eb42f 100644
--- a/tests/codegen/naked-fn/naked-functions.rs
+++ b/tests/codegen-llvm/naked-fn/naked-functions.rs
diff --git a/tests/codegen/no-alloca-inside-if-false.rs b/tests/codegen-llvm/no-alloca-inside-if-false.rs
index a231c7e808a..a231c7e808a 100644
--- a/tests/codegen/no-alloca-inside-if-false.rs
+++ b/tests/codegen-llvm/no-alloca-inside-if-false.rs
diff --git a/tests/codegen/no-assumes-on-casts.rs b/tests/codegen-llvm/no-assumes-on-casts.rs
index 9c00dc2c015..9c00dc2c015 100644
--- a/tests/codegen/no-assumes-on-casts.rs
+++ b/tests/codegen-llvm/no-assumes-on-casts.rs
diff --git a/tests/codegen/no-dllimport-w-cross-lang-lto.rs b/tests/codegen-llvm/no-dllimport-w-cross-lang-lto.rs
index c71eddfa287..c71eddfa287 100644
--- a/tests/codegen/no-dllimport-w-cross-lang-lto.rs
+++ b/tests/codegen-llvm/no-dllimport-w-cross-lang-lto.rs
diff --git a/tests/codegen/no-jump-tables.rs b/tests/codegen-llvm/no-jump-tables.rs
index e49de7e9dc1..e49de7e9dc1 100644
--- a/tests/codegen/no-jump-tables.rs
+++ b/tests/codegen-llvm/no-jump-tables.rs
diff --git a/tests/codegen/no-plt.rs b/tests/codegen-llvm/no-plt.rs
index 3a3546ff7c4..3a3546ff7c4 100644
--- a/tests/codegen/no-plt.rs
+++ b/tests/codegen-llvm/no-plt.rs
diff --git a/tests/codegen/no-redundant-item-monomorphization.rs b/tests/codegen-llvm/no-redundant-item-monomorphization.rs
index 466037c3770..466037c3770 100644
--- a/tests/codegen/no-redundant-item-monomorphization.rs
+++ b/tests/codegen-llvm/no-redundant-item-monomorphization.rs
diff --git a/tests/codegen/no_builtins-at-crate.rs b/tests/codegen-llvm/no_builtins-at-crate.rs
index ba1d31f60c3..ba1d31f60c3 100644
--- a/tests/codegen/no_builtins-at-crate.rs
+++ b/tests/codegen-llvm/no_builtins-at-crate.rs
diff --git a/tests/codegen/noalias-box-off.rs b/tests/codegen-llvm/noalias-box-off.rs
index 664c7950280..664c7950280 100644
--- a/tests/codegen/noalias-box-off.rs
+++ b/tests/codegen-llvm/noalias-box-off.rs
diff --git a/tests/codegen/noalias-box.rs b/tests/codegen-llvm/noalias-box.rs
index cccde775977..cccde775977 100644
--- a/tests/codegen/noalias-box.rs
+++ b/tests/codegen-llvm/noalias-box.rs
diff --git a/tests/codegen/noalias-flag.rs b/tests/codegen-llvm/noalias-flag.rs
index 67ba68ee6f8..67ba68ee6f8 100644
--- a/tests/codegen/noalias-flag.rs
+++ b/tests/codegen-llvm/noalias-flag.rs
diff --git a/tests/codegen/noalias-freeze.rs b/tests/codegen-llvm/noalias-freeze.rs
index 32c84014026..32c84014026 100644
--- a/tests/codegen/noalias-freeze.rs
+++ b/tests/codegen-llvm/noalias-freeze.rs
diff --git a/tests/codegen/noalias-refcell.rs b/tests/codegen-llvm/noalias-refcell.rs
index b37adf92b9c..b37adf92b9c 100644
--- a/tests/codegen/noalias-refcell.rs
+++ b/tests/codegen-llvm/noalias-refcell.rs
diff --git a/tests/codegen/noalias-rwlockreadguard.rs b/tests/codegen-llvm/noalias-rwlockreadguard.rs
index c676dc32399..c676dc32399 100644
--- a/tests/codegen/noalias-rwlockreadguard.rs
+++ b/tests/codegen-llvm/noalias-rwlockreadguard.rs
diff --git a/tests/codegen/noalias-unpin.rs b/tests/codegen-llvm/noalias-unpin.rs
index 30a8b399b97..30a8b399b97 100644
--- a/tests/codegen/noalias-unpin.rs
+++ b/tests/codegen-llvm/noalias-unpin.rs
diff --git a/tests/codegen/non-terminate/infinite-loop-1.rs b/tests/codegen-llvm/non-terminate/infinite-loop-1.rs
index 9eab4939aee..9eab4939aee 100644
--- a/tests/codegen/non-terminate/infinite-loop-1.rs
+++ b/tests/codegen-llvm/non-terminate/infinite-loop-1.rs
diff --git a/tests/codegen/non-terminate/infinite-loop-2.rs b/tests/codegen-llvm/non-terminate/infinite-loop-2.rs
index da29361cc96..da29361cc96 100644
--- a/tests/codegen/non-terminate/infinite-loop-2.rs
+++ b/tests/codegen-llvm/non-terminate/infinite-loop-2.rs
diff --git a/tests/codegen/non-terminate/infinite-recursion.rs b/tests/codegen-llvm/non-terminate/infinite-recursion.rs
index 19123639896..19123639896 100644
--- a/tests/codegen/non-terminate/infinite-recursion.rs
+++ b/tests/codegen-llvm/non-terminate/infinite-recursion.rs
diff --git a/tests/codegen/non-terminate/nonempty-infinite-loop.rs b/tests/codegen-llvm/non-terminate/nonempty-infinite-loop.rs
index 0db4ee61b1b..0db4ee61b1b 100644
--- a/tests/codegen/non-terminate/nonempty-infinite-loop.rs
+++ b/tests/codegen-llvm/non-terminate/nonempty-infinite-loop.rs
diff --git a/tests/codegen/noreturn-uninhabited.rs b/tests/codegen-llvm/noreturn-uninhabited.rs
index a10795d3f3c..a10795d3f3c 100644
--- a/tests/codegen/noreturn-uninhabited.rs
+++ b/tests/codegen-llvm/noreturn-uninhabited.rs
diff --git a/tests/codegen/noreturnflag.rs b/tests/codegen-llvm/noreturnflag.rs
index d9bb30b2703..d9bb30b2703 100644
--- a/tests/codegen/noreturnflag.rs
+++ b/tests/codegen-llvm/noreturnflag.rs
diff --git a/tests/codegen/nounwind.rs b/tests/codegen-llvm/nounwind.rs
index c910644458a..c910644458a 100644
--- a/tests/codegen/nounwind.rs
+++ b/tests/codegen-llvm/nounwind.rs
diff --git a/tests/codegen/nrvo.rs b/tests/codegen-llvm/nrvo.rs
index 7972186bfe5..7972186bfe5 100644
--- a/tests/codegen/nrvo.rs
+++ b/tests/codegen-llvm/nrvo.rs
diff --git a/tests/codegen/optimize-attr-1.rs b/tests/codegen-llvm/optimize-attr-1.rs
index db6bdcf9a8b..db6bdcf9a8b 100644
--- a/tests/codegen/optimize-attr-1.rs
+++ b/tests/codegen-llvm/optimize-attr-1.rs
diff --git a/tests/codegen/option-as-slice.rs b/tests/codegen-llvm/option-as-slice.rs
index 39b34a2035b..39b34a2035b 100644
--- a/tests/codegen/option-as-slice.rs
+++ b/tests/codegen-llvm/option-as-slice.rs
diff --git a/tests/codegen/option-niche-eq.rs b/tests/codegen-llvm/option-niche-eq.rs
index 3900cb79aa2..3900cb79aa2 100644
--- a/tests/codegen/option-niche-eq.rs
+++ b/tests/codegen-llvm/option-niche-eq.rs
diff --git a/tests/codegen/option-niche-unfixed/option-nonzero-eq.rs b/tests/codegen-llvm/option-niche-unfixed/option-nonzero-eq.rs
index 308856cfb7e..308856cfb7e 100644
--- a/tests/codegen/option-niche-unfixed/option-nonzero-eq.rs
+++ b/tests/codegen-llvm/option-niche-unfixed/option-nonzero-eq.rs
diff --git a/tests/codegen/overaligned-constant.rs b/tests/codegen-llvm/overaligned-constant.rs
index 0f5977880f2..0f5977880f2 100644
--- a/tests/codegen/overaligned-constant.rs
+++ b/tests/codegen-llvm/overaligned-constant.rs
diff --git a/tests/codegen/packed.rs b/tests/codegen-llvm/packed.rs
index 6f62719282e..6f62719282e 100644
--- a/tests/codegen/packed.rs
+++ b/tests/codegen-llvm/packed.rs
diff --git a/tests/codegen/panic-abort-windows.rs b/tests/codegen-llvm/panic-abort-windows.rs
index 17fdd9cc726..17fdd9cc726 100644
--- a/tests/codegen/panic-abort-windows.rs
+++ b/tests/codegen-llvm/panic-abort-windows.rs
diff --git a/tests/codegen/panic-in-drop-abort.rs b/tests/codegen-llvm/panic-in-drop-abort.rs
index e89170e56ed..e89170e56ed 100644
--- a/tests/codegen/panic-in-drop-abort.rs
+++ b/tests/codegen-llvm/panic-in-drop-abort.rs
diff --git a/tests/codegen/panic-unwind-default-uwtable.rs b/tests/codegen-llvm/panic-unwind-default-uwtable.rs
index 06f616c519b..06f616c519b 100644
--- a/tests/codegen/panic-unwind-default-uwtable.rs
+++ b/tests/codegen-llvm/panic-unwind-default-uwtable.rs
diff --git a/tests/codegen/patchable-function-entry/patchable-function-entry-both-flags.rs b/tests/codegen-llvm/patchable-function-entry/patchable-function-entry-both-flags.rs
index 72204c78a49..72204c78a49 100644
--- a/tests/codegen/patchable-function-entry/patchable-function-entry-both-flags.rs
+++ b/tests/codegen-llvm/patchable-function-entry/patchable-function-entry-both-flags.rs
diff --git a/tests/codegen/patchable-function-entry/patchable-function-entry-no-flag.rs b/tests/codegen-llvm/patchable-function-entry/patchable-function-entry-no-flag.rs
index 3a7078fe551..3a7078fe551 100644
--- a/tests/codegen/patchable-function-entry/patchable-function-entry-no-flag.rs
+++ b/tests/codegen-llvm/patchable-function-entry/patchable-function-entry-no-flag.rs
diff --git a/tests/codegen/patchable-function-entry/patchable-function-entry-one-flag.rs b/tests/codegen-llvm/patchable-function-entry/patchable-function-entry-one-flag.rs
index 8bdd61e461b..8bdd61e461b 100644
--- a/tests/codegen/patchable-function-entry/patchable-function-entry-one-flag.rs
+++ b/tests/codegen-llvm/patchable-function-entry/patchable-function-entry-one-flag.rs
diff --git a/tests/codegen/pattern_type_symbols.rs b/tests/codegen-llvm/pattern_type_symbols.rs
index e86a9ef27de..e86a9ef27de 100644
--- a/tests/codegen/pattern_type_symbols.rs
+++ b/tests/codegen-llvm/pattern_type_symbols.rs
diff --git a/tests/codegen/personality_lifetimes.rs b/tests/codegen-llvm/personality_lifetimes.rs
index cd81db63953..cd81db63953 100644
--- a/tests/codegen/personality_lifetimes.rs
+++ b/tests/codegen-llvm/personality_lifetimes.rs
diff --git a/tests/codegen/pgo-counter-bias.rs b/tests/codegen-llvm/pgo-counter-bias.rs
index 48e815dda04..48e815dda04 100644
--- a/tests/codegen/pgo-counter-bias.rs
+++ b/tests/codegen-llvm/pgo-counter-bias.rs
diff --git a/tests/codegen/pgo-instrumentation.rs b/tests/codegen-llvm/pgo-instrumentation.rs
index a8f12ccce1c..a8f12ccce1c 100644
--- a/tests/codegen/pgo-instrumentation.rs
+++ b/tests/codegen-llvm/pgo-instrumentation.rs
diff --git a/tests/codegen/pic-relocation-model.rs b/tests/codegen-llvm/pic-relocation-model.rs
index a1d1678a6bd..a1d1678a6bd 100644
--- a/tests/codegen/pic-relocation-model.rs
+++ b/tests/codegen-llvm/pic-relocation-model.rs
diff --git a/tests/codegen/pie-relocation-model.rs b/tests/codegen-llvm/pie-relocation-model.rs
index cb8de91ccd7..cb8de91ccd7 100644
--- a/tests/codegen/pie-relocation-model.rs
+++ b/tests/codegen-llvm/pie-relocation-model.rs
diff --git a/tests/codegen/placement-new.rs b/tests/codegen-llvm/placement-new.rs
index 7f7f0033bec..7f7f0033bec 100644
--- a/tests/codegen/placement-new.rs
+++ b/tests/codegen-llvm/placement-new.rs
diff --git a/tests/codegen/powerpc64le-struct-align-128.rs b/tests/codegen-llvm/powerpc64le-struct-align-128.rs
index c1c1ac26485..c1c1ac26485 100644
--- a/tests/codegen/powerpc64le-struct-align-128.rs
+++ b/tests/codegen-llvm/powerpc64le-struct-align-128.rs
diff --git a/tests/codegen/precondition-checks.rs b/tests/codegen-llvm/precondition-checks.rs
index 16812ca1720..16812ca1720 100644
--- a/tests/codegen/precondition-checks.rs
+++ b/tests/codegen-llvm/precondition-checks.rs
diff --git a/tests/codegen/ptr-arithmetic.rs b/tests/codegen-llvm/ptr-arithmetic.rs
index fc4441ef448..fc4441ef448 100644
--- a/tests/codegen/ptr-arithmetic.rs
+++ b/tests/codegen-llvm/ptr-arithmetic.rs
diff --git a/tests/codegen/ptr-read-metadata.rs b/tests/codegen-llvm/ptr-read-metadata.rs
index b38cfdbff88..b38cfdbff88 100644
--- a/tests/codegen/ptr-read-metadata.rs
+++ b/tests/codegen-llvm/ptr-read-metadata.rs
diff --git a/tests/codegen/range-attribute.rs b/tests/codegen-llvm/range-attribute.rs
index b81ff9ab3e2..b81ff9ab3e2 100644
--- a/tests/codegen/range-attribute.rs
+++ b/tests/codegen-llvm/range-attribute.rs
diff --git a/tests/codegen/range-loop.rs b/tests/codegen-llvm/range-loop.rs
index b131beb40dd..b131beb40dd 100644
--- a/tests/codegen/range-loop.rs
+++ b/tests/codegen-llvm/range-loop.rs
diff --git a/tests/codegen/range_to_inclusive.rs b/tests/codegen-llvm/range_to_inclusive.rs
index 6d939f40f55..6d939f40f55 100644
--- a/tests/codegen/range_to_inclusive.rs
+++ b/tests/codegen-llvm/range_to_inclusive.rs
diff --git a/tests/codegen/refs.rs b/tests/codegen-llvm/refs.rs
index 97c36295085..97c36295085 100644
--- a/tests/codegen/refs.rs
+++ b/tests/codegen-llvm/refs.rs
diff --git a/tests/codegen/reg-struct-return.rs b/tests/codegen-llvm/reg-struct-return.rs
index dfc9f8c519c..dfc9f8c519c 100644
--- a/tests/codegen/reg-struct-return.rs
+++ b/tests/codegen-llvm/reg-struct-return.rs
diff --git a/tests/codegen/regparm-inreg.rs b/tests/codegen-llvm/regparm-inreg.rs
index 15702804dfd..15702804dfd 100644
--- a/tests/codegen/regparm-inreg.rs
+++ b/tests/codegen-llvm/regparm-inreg.rs
diff --git a/tests/codegen/remap_path_prefix/aux_mod.rs b/tests/codegen-llvm/remap_path_prefix/aux_mod.rs
index 3217e9e51e7..3217e9e51e7 100644
--- a/tests/codegen/remap_path_prefix/aux_mod.rs
+++ b/tests/codegen-llvm/remap_path_prefix/aux_mod.rs
diff --git a/tests/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs b/tests/codegen-llvm/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs
index 7afc16ec72f..7afc16ec72f 100644
--- a/tests/codegen/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs
+++ b/tests/codegen-llvm/remap_path_prefix/auxiliary/remap_path_prefix_aux.rs
diff --git a/tests/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs b/tests/codegen-llvm/remap_path_prefix/auxiliary/xcrate-generic.rs
index 9d5cdfe063b..9d5cdfe063b 100644
--- a/tests/codegen/remap_path_prefix/auxiliary/xcrate-generic.rs
+++ b/tests/codegen-llvm/remap_path_prefix/auxiliary/xcrate-generic.rs
diff --git a/tests/codegen/remap_path_prefix/issue-73167-remap-std.rs b/tests/codegen-llvm/remap_path_prefix/issue-73167-remap-std.rs
index eb610168dd3..eb610168dd3 100644
--- a/tests/codegen/remap_path_prefix/issue-73167-remap-std.rs
+++ b/tests/codegen-llvm/remap_path_prefix/issue-73167-remap-std.rs
diff --git a/tests/codegen/remap_path_prefix/main.rs b/tests/codegen-llvm/remap_path_prefix/main.rs
index 7d17b3b67cf..7d17b3b67cf 100644
--- a/tests/codegen/remap_path_prefix/main.rs
+++ b/tests/codegen-llvm/remap_path_prefix/main.rs
diff --git a/tests/codegen/remap_path_prefix/xcrate-generic.rs b/tests/codegen-llvm/remap_path_prefix/xcrate-generic.rs
index db69b72d904..db69b72d904 100644
--- a/tests/codegen/remap_path_prefix/xcrate-generic.rs
+++ b/tests/codegen-llvm/remap_path_prefix/xcrate-generic.rs
diff --git a/tests/codegen/repeat-operand-zero-len.rs b/tests/codegen-llvm/repeat-operand-zero-len.rs
index b4cec42a07c..b4cec42a07c 100644
--- a/tests/codegen/repeat-operand-zero-len.rs
+++ b/tests/codegen-llvm/repeat-operand-zero-len.rs
diff --git a/tests/codegen/repeat-operand-zst-elem.rs b/tests/codegen-llvm/repeat-operand-zst-elem.rs
index c3637759afa..c3637759afa 100644
--- a/tests/codegen/repeat-operand-zst-elem.rs
+++ b/tests/codegen-llvm/repeat-operand-zst-elem.rs
diff --git a/tests/codegen/repeat-trusted-len.rs b/tests/codegen-llvm/repeat-trusted-len.rs
index 95379535971..95379535971 100644
--- a/tests/codegen/repeat-trusted-len.rs
+++ b/tests/codegen-llvm/repeat-trusted-len.rs
diff --git a/tests/codegen/repr/transparent-byval-struct-ptr.rs b/tests/codegen-llvm/repr/transparent-byval-struct-ptr.rs
index 0918884144f..0918884144f 100644
--- a/tests/codegen/repr/transparent-byval-struct-ptr.rs
+++ b/tests/codegen-llvm/repr/transparent-byval-struct-ptr.rs
diff --git a/tests/codegen/repr/transparent-imm-array.rs b/tests/codegen-llvm/repr/transparent-imm-array.rs
index 6dad0447784..6dad0447784 100644
--- a/tests/codegen/repr/transparent-imm-array.rs
+++ b/tests/codegen-llvm/repr/transparent-imm-array.rs
diff --git a/tests/codegen/repr/transparent-mips64.rs b/tests/codegen-llvm/repr/transparent-mips64.rs
index 98901350154..98901350154 100644
--- a/tests/codegen/repr/transparent-mips64.rs
+++ b/tests/codegen-llvm/repr/transparent-mips64.rs
diff --git a/tests/codegen/repr/transparent-opaque-ptr.rs b/tests/codegen-llvm/repr/transparent-opaque-ptr.rs
index 7911370c478..7911370c478 100644
--- a/tests/codegen/repr/transparent-opaque-ptr.rs
+++ b/tests/codegen-llvm/repr/transparent-opaque-ptr.rs
diff --git a/tests/codegen/repr/transparent-sparc64.rs b/tests/codegen-llvm/repr/transparent-sparc64.rs
index 62bfc8a5fce..62bfc8a5fce 100644
--- a/tests/codegen/repr/transparent-sparc64.rs
+++ b/tests/codegen-llvm/repr/transparent-sparc64.rs
diff --git a/tests/codegen/repr/transparent-sysv64.rs b/tests/codegen-llvm/repr/transparent-sysv64.rs
index 3efc3f7c391..3efc3f7c391 100644
--- a/tests/codegen/repr/transparent-sysv64.rs
+++ b/tests/codegen-llvm/repr/transparent-sysv64.rs
diff --git a/tests/codegen/repr/transparent.rs b/tests/codegen-llvm/repr/transparent.rs
index 29b627462a4..29b627462a4 100644
--- a/tests/codegen/repr/transparent.rs
+++ b/tests/codegen-llvm/repr/transparent.rs
diff --git a/tests/codegen/retpoline.rs b/tests/codegen-llvm/retpoline.rs
index 915c2c3d797..915c2c3d797 100644
--- a/tests/codegen/retpoline.rs
+++ b/tests/codegen-llvm/retpoline.rs
diff --git a/tests/codegen/riscv-abi/call-llvm-intrinsics.rs b/tests/codegen-llvm/riscv-abi/call-llvm-intrinsics.rs
index e72a649a530..e72a649a530 100644
--- a/tests/codegen/riscv-abi/call-llvm-intrinsics.rs
+++ b/tests/codegen-llvm/riscv-abi/call-llvm-intrinsics.rs
diff --git a/tests/codegen/riscv-abi/cast-local-large-enough.rs b/tests/codegen-llvm/riscv-abi/cast-local-large-enough.rs
index 9d21d73b459..9d21d73b459 100644
--- a/tests/codegen/riscv-abi/cast-local-large-enough.rs
+++ b/tests/codegen-llvm/riscv-abi/cast-local-large-enough.rs
diff --git a/tests/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs b/tests/codegen-llvm/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs
index df99f6969fc..df99f6969fc 100644
--- a/tests/codegen/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs
+++ b/tests/codegen-llvm/riscv-abi/riscv64-lp64-lp64f-lp64d-abi.rs
diff --git a/tests/codegen/riscv-abi/riscv64-lp64d-abi.rs b/tests/codegen-llvm/riscv-abi/riscv64-lp64d-abi.rs
index d768ab9381a..d768ab9381a 100644
--- a/tests/codegen/riscv-abi/riscv64-lp64d-abi.rs
+++ b/tests/codegen-llvm/riscv-abi/riscv64-lp64d-abi.rs
diff --git a/tests/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs b/tests/codegen-llvm/riscv-abi/riscv64-lp64f-lp64d-abi.rs
index 361f0322690..361f0322690 100644
--- a/tests/codegen/riscv-abi/riscv64-lp64f-lp64d-abi.rs
+++ b/tests/codegen-llvm/riscv-abi/riscv64-lp64f-lp64d-abi.rs
diff --git a/tests/codegen/riscv-target-abi.rs b/tests/codegen-llvm/riscv-target-abi.rs
index d41fcb4dd84..d41fcb4dd84 100644
--- a/tests/codegen/riscv-target-abi.rs
+++ b/tests/codegen-llvm/riscv-target-abi.rs
diff --git a/tests/codegen/rust-abi-arch-specific-adjustment.rs b/tests/codegen-llvm/rust-abi-arch-specific-adjustment.rs
index 561f081c700..561f081c700 100644
--- a/tests/codegen/rust-abi-arch-specific-adjustment.rs
+++ b/tests/codegen-llvm/rust-abi-arch-specific-adjustment.rs
diff --git a/tests/codegen/s390x-simd.rs b/tests/codegen-llvm/s390x-simd.rs
index ac39357519e..ac39357519e 100644
--- a/tests/codegen/s390x-simd.rs
+++ b/tests/codegen-llvm/s390x-simd.rs
diff --git a/tests/codegen/sanitizer/aarch64-shadow-call-stack-with-fixed-x18.rs b/tests/codegen-llvm/sanitizer/aarch64-shadow-call-stack-with-fixed-x18.rs
index e1d7dc2d631..e1d7dc2d631 100644
--- a/tests/codegen/sanitizer/aarch64-shadow-call-stack-with-fixed-x18.rs
+++ b/tests/codegen-llvm/sanitizer/aarch64-shadow-call-stack-with-fixed-x18.rs
diff --git a/tests/codegen/sanitizer/address-sanitizer-globals-tracking.rs b/tests/codegen-llvm/sanitizer/address-sanitizer-globals-tracking.rs
index f319306f93f..f319306f93f 100644
--- a/tests/codegen/sanitizer/address-sanitizer-globals-tracking.rs
+++ b/tests/codegen-llvm/sanitizer/address-sanitizer-globals-tracking.rs
diff --git a/tests/codegen/sanitizer/cfi/add-canonical-jump-tables-flag.rs b/tests/codegen-llvm/sanitizer/cfi/add-canonical-jump-tables-flag.rs
index 22577e2a3c4..22577e2a3c4 100644
--- a/tests/codegen/sanitizer/cfi/add-canonical-jump-tables-flag.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/add-canonical-jump-tables-flag.rs
diff --git a/tests/codegen/sanitizer/cfi/add-cfi-normalize-integers-flag.rs b/tests/codegen-llvm/sanitizer/cfi/add-cfi-normalize-integers-flag.rs
index a54a6d84a80..a54a6d84a80 100644
--- a/tests/codegen/sanitizer/cfi/add-cfi-normalize-integers-flag.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/add-cfi-normalize-integers-flag.rs
diff --git a/tests/codegen/sanitizer/cfi/add-enable-split-lto-unit-flag.rs b/tests/codegen-llvm/sanitizer/cfi/add-enable-split-lto-unit-flag.rs
index 283b8f26102..283b8f26102 100644
--- a/tests/codegen/sanitizer/cfi/add-enable-split-lto-unit-flag.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/add-enable-split-lto-unit-flag.rs
diff --git a/tests/codegen/sanitizer/cfi/dbg-location-on-cfi-blocks.rs b/tests/codegen-llvm/sanitizer/cfi/dbg-location-on-cfi-blocks.rs
index df65960dfe0..df65960dfe0 100644
--- a/tests/codegen/sanitizer/cfi/dbg-location-on-cfi-blocks.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/dbg-location-on-cfi-blocks.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-checks-attr-no-sanitize.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-checks-attr-no-sanitize.rs
index 71ccdc8ca62..71ccdc8ca62 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-checks-attr-no-sanitize.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-checks-attr-no-sanitize.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-checks.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-checks.rs
index ebc66a015df..ebc66a015df 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-checks.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-checks.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-attr-cfi-encoding.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-attr-cfi-encoding.rs
index 9bc2e42db0f..9bc2e42db0f 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-attr-cfi-encoding.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-attr-cfi-encoding.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-const-generics.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-const-generics.rs
index 9048c6a1f18..9048c6a1f18 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-const-generics.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-const-generics.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-drop-in-place.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-drop-in-place.rs
index 8fec275fd06..8fec275fd06 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-drop-in-place.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-drop-in-place.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-function-types.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-function-types.rs
index 7e60aafff68..7e60aafff68 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-function-types.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-function-types.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-lifetimes.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-lifetimes.rs
index 36d2e8c9f25..36d2e8c9f25 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-lifetimes.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-lifetimes.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-method-secondary-typeid.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-method-secondary-typeid.rs
index 9d611777ff0..9d611777ff0 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-method-secondary-typeid.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-method-secondary-typeid.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-paths.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-paths.rs
index a8ba8db1be3..a8ba8db1be3 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-paths.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-paths.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-pointer-types.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-pointer-types.rs
index d37bb740f55..d37bb740f55 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-pointer-types.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-pointer-types.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-primitive-types.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-primitive-types.rs
index 7d9e4d05872..7d9e4d05872 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-primitive-types.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-primitive-types.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-repr-transparent-types.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-repr-transparent-types.rs
index 0f97c70f3f9..0f97c70f3f9 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-repr-transparent-types.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-repr-transparent-types.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-sequence-types.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-sequence-types.rs
index bdee3f47a83..bdee3f47a83 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-sequence-types.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-sequence-types.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-trait-types.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-trait-types.rs
index 55e816178f8..55e816178f8 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-trait-types.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-trait-types.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-user-defined-types.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-user-defined-types.rs
index c1f3ca61afe..c1f3ca61afe 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-user-defined-types.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-id-itanium-cxx-abi-user-defined-types.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-generalized.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-generalized.rs
index 32637b64b3e..32637b64b3e 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-generalized.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-generalized.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized-generalized.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized-generalized.rs
index 51121b0aef1..51121b0aef1 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized-generalized.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized-generalized.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized.rs
index 1cfdd23006e..1cfdd23006e 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi-normalized.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi.rs
index 56ab1ce4b35..56ab1ce4b35 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-itanium-cxx-abi.rs
diff --git a/tests/codegen/sanitizer/cfi/emit-type-metadata-trait-objects.rs b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-trait-objects.rs
index 0e57ce322d1..0e57ce322d1 100644
--- a/tests/codegen/sanitizer/cfi/emit-type-metadata-trait-objects.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/emit-type-metadata-trait-objects.rs
diff --git a/tests/codegen/sanitizer/cfi/external_weak_symbols.rs b/tests/codegen-llvm/sanitizer/cfi/external_weak_symbols.rs
index 00e9b5029af..00e9b5029af 100644
--- a/tests/codegen/sanitizer/cfi/external_weak_symbols.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/external_weak_symbols.rs
diff --git a/tests/codegen/sanitizer/cfi/generalize-pointers.rs b/tests/codegen-llvm/sanitizer/cfi/generalize-pointers.rs
index 57004da6f8e..57004da6f8e 100644
--- a/tests/codegen/sanitizer/cfi/generalize-pointers.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/generalize-pointers.rs
diff --git a/tests/codegen/sanitizer/cfi/normalize-integers.rs b/tests/codegen-llvm/sanitizer/cfi/normalize-integers.rs
index 770ee4e64e0..770ee4e64e0 100644
--- a/tests/codegen/sanitizer/cfi/normalize-integers.rs
+++ b/tests/codegen-llvm/sanitizer/cfi/normalize-integers.rs
diff --git a/tests/codegen/sanitizer/dataflow-instrument-functions.rs b/tests/codegen-llvm/sanitizer/dataflow-instrument-functions.rs
index a2d0d63cc17..a2d0d63cc17 100644
--- a/tests/codegen/sanitizer/dataflow-instrument-functions.rs
+++ b/tests/codegen-llvm/sanitizer/dataflow-instrument-functions.rs
diff --git a/tests/codegen/sanitizer/kasan-emits-instrumentation.rs b/tests/codegen-llvm/sanitizer/kasan-emits-instrumentation.rs
index 774c9ab53f1..774c9ab53f1 100644
--- a/tests/codegen/sanitizer/kasan-emits-instrumentation.rs
+++ b/tests/codegen-llvm/sanitizer/kasan-emits-instrumentation.rs
diff --git a/tests/codegen/sanitizer/kcfi/add-cfi-normalize-integers-flag.rs b/tests/codegen-llvm/sanitizer/kcfi/add-cfi-normalize-integers-flag.rs
index 0be1ff19774..0be1ff19774 100644
--- a/tests/codegen/sanitizer/kcfi/add-cfi-normalize-integers-flag.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/add-cfi-normalize-integers-flag.rs
diff --git a/tests/codegen/sanitizer/kcfi/add-kcfi-arity-flag.rs b/tests/codegen-llvm/sanitizer/kcfi/add-kcfi-arity-flag.rs
index 9a2290901d6..9a2290901d6 100644
--- a/tests/codegen/sanitizer/kcfi/add-kcfi-arity-flag.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/add-kcfi-arity-flag.rs
diff --git a/tests/codegen/sanitizer/kcfi/add-kcfi-flag.rs b/tests/codegen-llvm/sanitizer/kcfi/add-kcfi-flag.rs
index eabe0409c9a..eabe0409c9a 100644
--- a/tests/codegen/sanitizer/kcfi/add-kcfi-flag.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/add-kcfi-flag.rs
diff --git a/tests/codegen/sanitizer/kcfi/add-kcfi-offset-flag.rs b/tests/codegen-llvm/sanitizer/kcfi/add-kcfi-offset-flag.rs
index 2f18c9d84b9..2f18c9d84b9 100644
--- a/tests/codegen/sanitizer/kcfi/add-kcfi-offset-flag.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/add-kcfi-offset-flag.rs
diff --git a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-attr-no-sanitize.rs b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-attr-no-sanitize.rs
index 6b40918dd3a..6b40918dd3a 100644
--- a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-attr-no-sanitize.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-attr-no-sanitize.rs
diff --git a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-generalized.rs b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-generalized.rs
index 942b50deb02..942b50deb02 100644
--- a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-generalized.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-generalized.rs
diff --git a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized-generalized.rs b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized-generalized.rs
index c89d9bdd121..c89d9bdd121 100644
--- a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized-generalized.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized-generalized.rs
diff --git a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized.rs b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized.rs
index 220cae1a4fa..220cae1a4fa 100644
--- a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi-normalized.rs
diff --git a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi.rs b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi.rs
index bb9a0005903..bb9a0005903 100644
--- a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle-itanium-cxx-abi.rs
diff --git a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle.rs b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle.rs
index 8b844b99142..8b844b99142 100644
--- a/tests/codegen/sanitizer/kcfi/emit-kcfi-operand-bundle.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/emit-kcfi-operand-bundle.rs
diff --git a/tests/codegen/sanitizer/kcfi/emit-type-metadata-trait-objects.rs b/tests/codegen-llvm/sanitizer/kcfi/emit-type-metadata-trait-objects.rs
index 15c107bea15..15c107bea15 100644
--- a/tests/codegen/sanitizer/kcfi/emit-type-metadata-trait-objects.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/emit-type-metadata-trait-objects.rs
diff --git a/tests/codegen/sanitizer/kcfi/naked-function.rs b/tests/codegen-llvm/sanitizer/kcfi/naked-function.rs
index 2c8cdc919b8..2c8cdc919b8 100644
--- a/tests/codegen/sanitizer/kcfi/naked-function.rs
+++ b/tests/codegen-llvm/sanitizer/kcfi/naked-function.rs
diff --git a/tests/codegen/sanitizer/memory-track-origins.rs b/tests/codegen-llvm/sanitizer/memory-track-origins.rs
index 318c277e10c..318c277e10c 100644
--- a/tests/codegen/sanitizer/memory-track-origins.rs
+++ b/tests/codegen-llvm/sanitizer/memory-track-origins.rs
diff --git a/tests/codegen/sanitizer/memtag-attr-check.rs b/tests/codegen-llvm/sanitizer/memtag-attr-check.rs
index ffe3a2322a2..ffe3a2322a2 100644
--- a/tests/codegen/sanitizer/memtag-attr-check.rs
+++ b/tests/codegen-llvm/sanitizer/memtag-attr-check.rs
diff --git a/tests/codegen/sanitizer/no-sanitize-inlining.rs b/tests/codegen-llvm/sanitizer/no-sanitize-inlining.rs
index 4bd832d2ab1..4bd832d2ab1 100644
--- a/tests/codegen/sanitizer/no-sanitize-inlining.rs
+++ b/tests/codegen-llvm/sanitizer/no-sanitize-inlining.rs
diff --git a/tests/codegen/sanitizer/no-sanitize.rs b/tests/codegen-llvm/sanitizer/no-sanitize.rs
index 2a309f6b9c6..2a309f6b9c6 100644
--- a/tests/codegen/sanitizer/no-sanitize.rs
+++ b/tests/codegen-llvm/sanitizer/no-sanitize.rs
diff --git a/tests/codegen/sanitizer/riscv64-shadow-call-stack.rs b/tests/codegen-llvm/sanitizer/riscv64-shadow-call-stack.rs
index 945e46218d0..945e46218d0 100644
--- a/tests/codegen/sanitizer/riscv64-shadow-call-stack.rs
+++ b/tests/codegen-llvm/sanitizer/riscv64-shadow-call-stack.rs
diff --git a/tests/codegen/sanitizer/safestack-attr-check.rs b/tests/codegen-llvm/sanitizer/safestack-attr-check.rs
index 050a60333af..050a60333af 100644
--- a/tests/codegen/sanitizer/safestack-attr-check.rs
+++ b/tests/codegen-llvm/sanitizer/safestack-attr-check.rs
diff --git a/tests/codegen/sanitizer/sanitizer-recover.rs b/tests/codegen-llvm/sanitizer/sanitizer-recover.rs
index 6b659320481..6b659320481 100644
--- a/tests/codegen/sanitizer/sanitizer-recover.rs
+++ b/tests/codegen-llvm/sanitizer/sanitizer-recover.rs
diff --git a/tests/codegen/sanitizer/scs-attr-check.rs b/tests/codegen-llvm/sanitizer/scs-attr-check.rs
index 6f4cbc2c0a6..6f4cbc2c0a6 100644
--- a/tests/codegen/sanitizer/scs-attr-check.rs
+++ b/tests/codegen-llvm/sanitizer/scs-attr-check.rs
diff --git a/tests/codegen/scalar-pair-bool.rs b/tests/codegen-llvm/scalar-pair-bool.rs
index def3b32f71a..def3b32f71a 100644
--- a/tests/codegen/scalar-pair-bool.rs
+++ b/tests/codegen-llvm/scalar-pair-bool.rs
diff --git a/tests/codegen/set-discriminant-invalid.rs b/tests/codegen-llvm/set-discriminant-invalid.rs
index dd584ef1c14..dd584ef1c14 100644
--- a/tests/codegen/set-discriminant-invalid.rs
+++ b/tests/codegen-llvm/set-discriminant-invalid.rs
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-abs.rs
index 485ba92272d..baf445d0a1b 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-abs.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_fabs;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_fabs;
 
 // CHECK-LABEL: @fabs_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn fabs_32x16(a: f32x16) -> f32x16 {
     simd_fabs(a)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @fabs_64x4
 #[no_mangle]
 pub unsafe fn fabs_64x4(a: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-ceil.rs
index e8bda7c29c4..096de569274 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-ceil.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_ceil;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_ceil;
 
 // CHECK-LABEL: @ceil_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn ceil_32x16(a: f32x16) -> f32x16 {
     simd_ceil(a)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @ceil_64x4
 #[no_mangle]
 pub unsafe fn ceil_64x4(a: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-cos.rs
index 8dc967bc3ad..5b2197924bc 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-cos.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_fcos;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_fcos;
 
 // CHECK-LABEL: @fcos_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn fcos_32x16(a: f32x16) -> f32x16 {
     simd_fcos(a)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @fcos_64x4
 #[no_mangle]
 pub unsafe fn fcos_64x4(a: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-exp.rs
index 00caca2f294..d4eadb36c65 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-exp.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_fexp;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_fexp;
 
 // CHECK-LABEL: @exp_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn exp_32x16(a: f32x16) -> f32x16 {
     simd_fexp(a)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @exp_64x4
 #[no_mangle]
 pub unsafe fn exp_64x4(a: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-exp2.rs
index eda4053189c..d32015b7990 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-exp2.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_fexp2;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_fexp2;
 
 // CHECK-LABEL: @exp2_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn exp2_32x16(a: f32x16) -> f32x16 {
     simd_fexp2(a)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @exp2_64x4
 #[no_mangle]
 pub unsafe fn exp2_64x4(a: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-floor.rs
index ad69d4cdd88..1e1c8ce0c35 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-floor.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_floor;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_floor;
 
 // CHECK-LABEL: @floor_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn floor_32x16(a: f32x16) -> f32x16 {
     simd_floor(a)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @floor_64x4
 #[no_mangle]
 pub unsafe fn floor_64x4(a: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-fma.rs
index cbeefdc31c0..982077d81f9 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-fma.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_fma;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_fma;
 
 // CHECK-LABEL: @fma_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn fma_32x16(a: f32x16, b: f32x16, c: f32x16) -> f32x16 {
     simd_fma(a, b, c)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @fma_64x4
 #[no_mangle]
 pub unsafe fn fma_64x4(a: f64x4, b: f64x4, c: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-fsqrt.rs
index 618daa4b44d..e20a591f573 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-fsqrt.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_fsqrt;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_fsqrt;
 
 // CHECK-LABEL: @fsqrt_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn fsqrt_32x16(a: f32x16) -> f32x16 {
     simd_fsqrt(a)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @fsqrt_64x4
 #[no_mangle]
 pub unsafe fn fsqrt_64x4(a: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-log.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-log.rs
index 98a481e4004..bf1ffc76330 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-log.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-log.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_flog;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_flog;
 
 // CHECK-LABEL: @log_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn log_32x16(a: f32x16) -> f32x16 {
     simd_flog(a)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @log_64x4
 #[no_mangle]
 pub unsafe fn log_64x4(a: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-log10.rs
index 9108cd963f0..ccf484e0e41 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-log10.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_flog10;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_flog10;
 
 // CHECK-LABEL: @log10_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn log10_32x16(a: f32x16) -> f32x16 {
     simd_flog10(a)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @log10_64x4
 #[no_mangle]
 pub unsafe fn log10_64x4(a: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-log2.rs
index 2b20850dbd9..677d8b01e84 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-log2.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_flog2;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_flog2;
 
 // CHECK-LABEL: @log2_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn log2_32x16(a: f32x16) -> f32x16 {
     simd_flog2(a)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @log2_64x4
 #[no_mangle]
 pub unsafe fn log2_64x4(a: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-minmax.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-minmax.rs
index ce07b212e84..8dd464a1bff 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-minmax.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-minmax.rs
@@ -4,11 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::{simd_fmax, simd_fmin};
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
+use std::intrinsics::simd::{simd_fmax, simd_fmin};
 
 // CHECK-LABEL: @fmin
 #[no_mangle]
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-sin.rs
index 7de26b415bb..48becc72c0b 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-float-sin.rs
@@ -4,23 +4,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_fsin;
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x2(pub [f32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8(pub [f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x16(pub [f32; 16]);
+use std::intrinsics::simd::simd_fsin;
 
 // CHECK-LABEL: @fsin_32x2
 #[no_mangle]
@@ -50,18 +38,6 @@ pub unsafe fn fsin_32x16(a: f32x16) -> f32x16 {
     simd_fsin(a)
 }
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x2(pub [f64; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x4(pub [f64; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f64x8(pub [f64; 8]);
-
 // CHECK-LABEL: @fsin_64x4
 #[no_mangle]
 pub unsafe fn fsin_64x4(a: f64x4) -> f64x4 {
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs
index ecf5eb24ee5..06d46889715 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-arithmetic-saturating.rs
@@ -5,66 +5,11 @@
 #![allow(non_camel_case_types)]
 #![deny(unused)]
 
-use std::intrinsics::simd::{simd_saturating_add, simd_saturating_sub};
-
-#[rustfmt::skip]
-mod types {
-    // signed integer types
-
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i8x2([i8; 2]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i8x4([i8; 4]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i8x8([i8; 8]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i8x16([i8; 16]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i8x32([i8; 32]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i8x64([i8; 64]);
-
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i16x2([i16; 2]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i16x4([i16; 4]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i16x8([i16; 8]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i16x16([i16; 16]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i16x32([i16; 32]);
-
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i32x2([i32; 2]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i32x4([i32; 4]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i32x8([i32; 8]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i32x16([i32; 16]);
-
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i64x2([i64; 2]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i64x4([i64; 4]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i64x8([i64; 8]);
-
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i128x2([i128; 2]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct i128x4([i128; 4]);
-
-    // unsigned integer types
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u8x2([u8; 2]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u8x4([u8; 4]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u8x8([u8; 8]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u8x16([u8; 16]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u8x32([u8; 32]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u8x64([u8; 64]);
-
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u16x2([u16; 2]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u16x4([u16; 4]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u16x8([u16; 8]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u16x16([u16; 16]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u16x32([u16; 32]);
-
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u32x2([u32; 2]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u32x4([u32; 4]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u32x8([u32; 8]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u32x16([u32; 16]);
-
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u64x2([u64; 2]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u64x4([u64; 4]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u64x8([u64; 8]);
-
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u128x2([u128; 2]);
-    #[repr(simd)] #[derive(Copy, Clone)] pub struct u128x4([u128; 4]);
-}
-
-use types::*;
+use std::intrinsics::simd::{simd_saturating_add, simd_saturating_sub};
 
 // NOTE(eddyb) `%{{x|0}}` is used because on some targets (e.g. WASM)
 // SIMD vectors are passed directly, resulting in `%x` being a vector,
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-bitmask.rs
index a2c40aa91b5..294262d8152 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-bitmask.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-bitmask.rs
@@ -5,19 +5,11 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_bitmask;
-
-#[repr(simd)]
-#[derive(Copy, Clone)]
-pub struct u32x2([u32; 2]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-pub struct i32x2([i32; 2]);
-
-#[repr(simd)]
-#[derive(Copy, Clone)]
-pub struct i8x16([i8; 16]);
+use std::intrinsics::simd::simd_bitmask;
 
 // NOTE(eddyb) `%{{x|1}}` is used because on some targets (e.g. WASM)
 // SIMD vectors are passed directly, resulting in `%x` being a vector,
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-gather.rs
index c06b36d68b9..690bfb432f9 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-gather.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-gather.rs
@@ -6,15 +6,14 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_gather;
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct Vec2<T>(pub [T; 2]);
+use std::intrinsics::simd::simd_gather;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct Vec4<T>(pub [T; 4]);
+pub type Vec2<T> = Simd<T, 2>;
+pub type Vec4<T> = Simd<T, 4>;
 
 // CHECK-LABEL: @gather_f32x2
 #[no_mangle]
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-masked-load.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-masked-load.rs
index 21578e67cff..fda315dc66c 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-masked-load.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-masked-load.rs
@@ -4,15 +4,14 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_masked_load;
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct Vec2<T>(pub [T; 2]);
+use std::intrinsics::simd::simd_masked_load;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct Vec4<T>(pub [T; 4]);
+pub type Vec2<T> = Simd<T, 2>;
+pub type Vec4<T> = Simd<T, 4>;
 
 // CHECK-LABEL: @load_f32x2
 #[no_mangle]
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-masked-store.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-masked-store.rs
index 22a8f7e54bd..6ca7388d464 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-masked-store.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-masked-store.rs
@@ -4,15 +4,14 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_masked_store;
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct Vec2<T>(pub [T; 2]);
+use std::intrinsics::simd::simd_masked_store;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct Vec4<T>(pub [T; 4]);
+pub type Vec2<T> = Simd<T, 2>;
+pub type Vec4<T> = Simd<T, 4>;
 
 // CHECK-LABEL: @store_f32x2
 #[no_mangle]
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-scatter.rs
index 0cc9e6ae59a..743652966e1 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-scatter.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-scatter.rs
@@ -6,15 +6,14 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_scatter;
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct Vec2<T>(pub [T; 2]);
+use std::intrinsics::simd::simd_scatter;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct Vec4<T>(pub [T; 4]);
+pub type Vec2<T> = Simd<T, 2>;
+pub type Vec4<T> = Simd<T, 4>;
 
 // CHECK-LABEL: @scatter_f32x2
 #[no_mangle]
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-select.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-select.rs
index f6531c1b23a..2c0bad21f44 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-generic-select.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-generic-select.rs
@@ -4,27 +4,13 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::{simd_select, simd_select_bitmask};
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x4(pub [f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct f32x8([f32; 8]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct b8x4(pub [i8; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct i32x4([i32; 4]);
+use std::intrinsics::simd::{simd_select, simd_select_bitmask};
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-pub struct u32x4([u32; 4]);
+pub type b8x4 = i8x4;
 
 // CHECK-LABEL: @select_m8
 #[no_mangle]
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-mask-reduce.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-mask-reduce.rs
index 269fe41225e..79f00a6ed60 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-mask-reduce.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-mask-reduce.rs
@@ -4,15 +4,14 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::{simd_reduce_all, simd_reduce_any};
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-pub struct mask32x2([i32; 2]);
+use std::intrinsics::simd::{simd_reduce_all, simd_reduce_any};
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-pub struct mask8x16([i8; 16]);
+pub type mask32x2 = Simd<i32, 2>;
+pub type mask8x16 = Simd<i8, 16>;
 
 // NOTE(eddyb) `%{{x|1}}` is used because on some targets (e.g. WASM)
 // SIMD vectors are passed directly, resulting in `%x` being a vector,
diff --git a/tests/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-transmute-array.rs
index 301f06c2d74..05c2f7e1bdf 100644
--- a/tests/codegen/simd-intrinsic/simd-intrinsic-transmute-array.rs
+++ b/tests/codegen-llvm/simd-intrinsic/simd-intrinsic-transmute-array.rs
@@ -8,13 +8,12 @@
 #![allow(non_camel_case_types)]
 #![feature(repr_simd, core_intrinsics)]
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-pub struct S<const N: usize>([f32; N]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-pub struct T([f32; 4]);
+pub type S<const N: usize> = Simd<f32, N>;
+pub type T = Simd<f32, 4>;
 
 // CHECK-LABEL: @array_align(
 #[no_mangle]
@@ -34,7 +33,7 @@ pub fn vector_align() -> usize {
 #[no_mangle]
 pub fn build_array_s(x: [f32; 4]) -> S<4> {
     // CHECK: call void @llvm.memcpy.{{.+}}({{.*}} align [[VECTOR_ALIGN]] {{.*}} align [[ARRAY_ALIGN]] {{.*}}, [[USIZE]] 16, i1 false)
-    S::<4>(x)
+    Simd(x)
 }
 
 // CHECK-LABEL: @build_array_transmute_s
@@ -48,7 +47,7 @@ pub fn build_array_transmute_s(x: [f32; 4]) -> S<4> {
 #[no_mangle]
 pub fn build_array_t(x: [f32; 4]) -> T {
     // CHECK: call void @llvm.memcpy.{{.+}}({{.*}} align [[VECTOR_ALIGN]] {{.*}} align [[ARRAY_ALIGN]] {{.*}}, [[USIZE]] 16, i1 false)
-    T(x)
+    Simd(x)
 }
 
 // CHECK-LABEL: @build_array_transmute_t
diff --git a/tests/codegen/simd/aggregate-simd.rs b/tests/codegen-llvm/simd/aggregate-simd.rs
index 065e429a4c7..57a301d634c 100644
--- a/tests/codegen/simd/aggregate-simd.rs
+++ b/tests/codegen-llvm/simd/aggregate-simd.rs
@@ -5,15 +5,11 @@
 #![no_std]
 #![crate_type = "lib"]
 
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
 use core::intrinsics::simd::{simd_add, simd_extract};
 
-#[repr(simd)]
-#[derive(Clone, Copy)]
-pub struct Simd<T, const N: usize>([T; N]);
-
-#[repr(simd, packed)]
-#[derive(Clone, Copy)]
-pub struct PackedSimd<T, const N: usize>([T; N]);
+use minisimd::*;
 
 #[repr(transparent)]
 pub struct Transparent<T>(T);
diff --git a/tests/codegen/simd/extract-insert-dyn.rs b/tests/codegen-llvm/simd/extract-insert-dyn.rs
index 729f0145314..729f0145314 100644
--- a/tests/codegen/simd/extract-insert-dyn.rs
+++ b/tests/codegen-llvm/simd/extract-insert-dyn.rs
diff --git a/tests/codegen/simd/packed-simd-alignment.rs b/tests/codegen-llvm/simd/packed-simd-alignment.rs
index 53e88d8e5cf..53e88d8e5cf 100644
--- a/tests/codegen/simd/packed-simd-alignment.rs
+++ b/tests/codegen-llvm/simd/packed-simd-alignment.rs
diff --git a/tests/codegen/simd/packed-simd.rs b/tests/codegen-llvm/simd/packed-simd.rs
index 73e0d29d7d6..70c03fcc955 100644
--- a/tests/codegen/simd/packed-simd.rs
+++ b/tests/codegen-llvm/simd/packed-simd.rs
@@ -9,18 +9,14 @@
 use core::intrinsics::simd as intrinsics;
 use core::{mem, ptr};
 
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::{PackedSimd, Simd as FullSimd};
+
 // Test codegen for not only "packed" but also "fully aligned" SIMD types, and conversion between
 // them. A repr(packed,simd) type with 3 elements can't exceed its element alignment, whereas the
 // same type as repr(simd) will instead have padding.
 
-#[repr(simd, packed)]
-#[derive(Copy, Clone)]
-pub struct PackedSimd<T, const N: usize>([T; N]);
-
-#[repr(simd)]
-#[derive(Copy, Clone)]
-pub struct FullSimd<T, const N: usize>([T; N]);
-
 // non-powers-of-two have padding and need to be expanded to full vectors
 fn load<T, const N: usize>(v: PackedSimd<T, N>) -> FullSimd<T, N> {
     unsafe {
diff --git a/tests/codegen/simd/simd-wide-sum.rs b/tests/codegen-llvm/simd/simd-wide-sum.rs
index 95117b2c748..95117b2c748 100644
--- a/tests/codegen/simd/simd-wide-sum.rs
+++ b/tests/codegen-llvm/simd/simd-wide-sum.rs
diff --git a/tests/codegen/simd/simd_arith_offset.rs b/tests/codegen-llvm/simd/simd_arith_offset.rs
index b8af6fce332..210b4e9bb50 100644
--- a/tests/codegen/simd/simd_arith_offset.rs
+++ b/tests/codegen-llvm/simd/simd_arith_offset.rs
@@ -5,16 +5,14 @@
 #![crate_type = "lib"]
 #![feature(repr_simd, core_intrinsics)]
 
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
 use std::intrinsics::simd::simd_arith_offset;
 
-/// A vector of *const T.
-#[derive(Debug, Copy, Clone)]
-#[repr(simd)]
-pub struct SimdConstPtr<T, const LANES: usize>([*const T; LANES]);
+use minisimd::*;
 
-#[derive(Debug, Copy, Clone)]
-#[repr(simd)]
-pub struct Simd<T, const LANES: usize>([T; LANES]);
+/// A vector of *const T.
+pub type SimdConstPtr<T, const LANES: usize> = Simd<*const T, LANES>;
 
 // CHECK-LABEL: smoke
 #[no_mangle]
diff --git a/tests/codegen/simd/swap-simd-types.rs b/tests/codegen-llvm/simd/swap-simd-types.rs
index c063cc683a6..c063cc683a6 100644
--- a/tests/codegen/simd/swap-simd-types.rs
+++ b/tests/codegen-llvm/simd/swap-simd-types.rs
diff --git a/tests/codegen/simd/unpadded-simd.rs b/tests/codegen-llvm/simd/unpadded-simd.rs
index ef067a15702..ef067a15702 100644
--- a/tests/codegen/simd/unpadded-simd.rs
+++ b/tests/codegen-llvm/simd/unpadded-simd.rs
diff --git a/tests/codegen/skip-mono-inside-if-false.rs b/tests/codegen-llvm/skip-mono-inside-if-false.rs
index 8b95de99dd3..8b95de99dd3 100644
--- a/tests/codegen/skip-mono-inside-if-false.rs
+++ b/tests/codegen-llvm/skip-mono-inside-if-false.rs
diff --git a/tests/codegen/slice-as_chunks.rs b/tests/codegen-llvm/slice-as_chunks.rs
index 337eb8981f6..337eb8981f6 100644
--- a/tests/codegen/slice-as_chunks.rs
+++ b/tests/codegen-llvm/slice-as_chunks.rs
diff --git a/tests/codegen/slice-indexing.rs b/tests/codegen-llvm/slice-indexing.rs
index d957ccfb5ef..d957ccfb5ef 100644
--- a/tests/codegen/slice-indexing.rs
+++ b/tests/codegen-llvm/slice-indexing.rs
diff --git a/tests/codegen/slice-init.rs b/tests/codegen-llvm/slice-init.rs
index 950e0b0c10d..950e0b0c10d 100644
--- a/tests/codegen/slice-init.rs
+++ b/tests/codegen-llvm/slice-init.rs
diff --git a/tests/codegen/slice-is-ascii.rs b/tests/codegen-llvm/slice-is-ascii.rs
index 67537c871a0..67537c871a0 100644
--- a/tests/codegen/slice-is-ascii.rs
+++ b/tests/codegen-llvm/slice-is-ascii.rs
diff --git a/tests/codegen/slice-iter-fold.rs b/tests/codegen-llvm/slice-iter-fold.rs
index 55ab34661c3..55ab34661c3 100644
--- a/tests/codegen/slice-iter-fold.rs
+++ b/tests/codegen-llvm/slice-iter-fold.rs
diff --git a/tests/codegen/slice-iter-len-eq-zero.rs b/tests/codegen-llvm/slice-iter-len-eq-zero.rs
index 6998d98e498..6998d98e498 100644
--- a/tests/codegen/slice-iter-len-eq-zero.rs
+++ b/tests/codegen-llvm/slice-iter-len-eq-zero.rs
diff --git a/tests/codegen/slice-iter-nonnull.rs b/tests/codegen-llvm/slice-iter-nonnull.rs
index 87907e7ad0a..87907e7ad0a 100644
--- a/tests/codegen/slice-iter-nonnull.rs
+++ b/tests/codegen-llvm/slice-iter-nonnull.rs
diff --git a/tests/codegen/slice-last-elements-optimization.rs b/tests/codegen-llvm/slice-last-elements-optimization.rs
index b90f91d7b17..b90f91d7b17 100644
--- a/tests/codegen/slice-last-elements-optimization.rs
+++ b/tests/codegen-llvm/slice-last-elements-optimization.rs
diff --git a/tests/codegen/slice-pointer-nonnull-unwrap.rs b/tests/codegen-llvm/slice-pointer-nonnull-unwrap.rs
index 35e4bf2c661..35e4bf2c661 100644
--- a/tests/codegen/slice-pointer-nonnull-unwrap.rs
+++ b/tests/codegen-llvm/slice-pointer-nonnull-unwrap.rs
diff --git a/tests/codegen/slice-position-bounds-check.rs b/tests/codegen-llvm/slice-position-bounds-check.rs
index 0d1d1d869ae..0d1d1d869ae 100644
--- a/tests/codegen/slice-position-bounds-check.rs
+++ b/tests/codegen-llvm/slice-position-bounds-check.rs
diff --git a/tests/codegen/slice-ref-equality.rs b/tests/codegen-llvm/slice-ref-equality.rs
index 2940378da3c..2940378da3c 100644
--- a/tests/codegen/slice-ref-equality.rs
+++ b/tests/codegen-llvm/slice-ref-equality.rs
diff --git a/tests/codegen/slice-reverse.rs b/tests/codegen-llvm/slice-reverse.rs
index e58d1c1d9d8..e58d1c1d9d8 100644
--- a/tests/codegen/slice-reverse.rs
+++ b/tests/codegen-llvm/slice-reverse.rs
diff --git a/tests/codegen/slice-split-at.rs b/tests/codegen-llvm/slice-split-at.rs
index 07018cf9c91..07018cf9c91 100644
--- a/tests/codegen/slice-split-at.rs
+++ b/tests/codegen-llvm/slice-split-at.rs
diff --git a/tests/codegen/slice-windows-no-bounds-check.rs b/tests/codegen-llvm/slice-windows-no-bounds-check.rs
index 87e89b14f06..87e89b14f06 100644
--- a/tests/codegen/slice-windows-no-bounds-check.rs
+++ b/tests/codegen-llvm/slice-windows-no-bounds-check.rs
diff --git a/tests/codegen/slice_as_from_ptr_range.rs b/tests/codegen-llvm/slice_as_from_ptr_range.rs
index 2073f05c07f..2073f05c07f 100644
--- a/tests/codegen/slice_as_from_ptr_range.rs
+++ b/tests/codegen-llvm/slice_as_from_ptr_range.rs
diff --git a/tests/codegen/some-abis-do-extend-params-to-32-bits.rs b/tests/codegen-llvm/some-abis-do-extend-params-to-32-bits.rs
index 6ca6697588f..6ca6697588f 100644
--- a/tests/codegen/some-abis-do-extend-params-to-32-bits.rs
+++ b/tests/codegen-llvm/some-abis-do-extend-params-to-32-bits.rs
diff --git a/tests/codegen/some-global-nonnull.rs b/tests/codegen-llvm/some-global-nonnull.rs
index bb4d12e1c76..bb4d12e1c76 100644
--- a/tests/codegen/some-global-nonnull.rs
+++ b/tests/codegen-llvm/some-global-nonnull.rs
diff --git a/tests/codegen/sparc-struct-abi.rs b/tests/codegen-llvm/sparc-struct-abi.rs
index 32d2c5bb0ef..32d2c5bb0ef 100644
--- a/tests/codegen/sparc-struct-abi.rs
+++ b/tests/codegen-llvm/sparc-struct-abi.rs
diff --git a/tests/codegen/split-lto-unit.rs b/tests/codegen-llvm/split-lto-unit.rs
index 7858a0e7b79..7858a0e7b79 100644
--- a/tests/codegen/split-lto-unit.rs
+++ b/tests/codegen-llvm/split-lto-unit.rs
diff --git a/tests/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs b/tests/codegen-llvm/src-hash-algorithm/src-hash-algorithm-md5.rs
index 7aec8d545dc..7aec8d545dc 100644
--- a/tests/codegen/src-hash-algorithm/src-hash-algorithm-md5.rs
+++ b/tests/codegen-llvm/src-hash-algorithm/src-hash-algorithm-md5.rs
diff --git a/tests/codegen/src-hash-algorithm/src-hash-algorithm-sha1.rs b/tests/codegen-llvm/src-hash-algorithm/src-hash-algorithm-sha1.rs
index 5389c32f938..5389c32f938 100644
--- a/tests/codegen/src-hash-algorithm/src-hash-algorithm-sha1.rs
+++ b/tests/codegen-llvm/src-hash-algorithm/src-hash-algorithm-sha1.rs
diff --git a/tests/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs b/tests/codegen-llvm/src-hash-algorithm/src-hash-algorithm-sha256.rs
index 520890c47f1..520890c47f1 100644
--- a/tests/codegen/src-hash-algorithm/src-hash-algorithm-sha256.rs
+++ b/tests/codegen-llvm/src-hash-algorithm/src-hash-algorithm-sha256.rs
diff --git a/tests/codegen/sroa-fragment-debuginfo.rs b/tests/codegen-llvm/sroa-fragment-debuginfo.rs
index 0413cf96894..0413cf96894 100644
--- a/tests/codegen/sroa-fragment-debuginfo.rs
+++ b/tests/codegen-llvm/sroa-fragment-debuginfo.rs
diff --git a/tests/codegen/sse42-implies-crc32.rs b/tests/codegen-llvm/sse42-implies-crc32.rs
index 8a9c496a3a5..8a9c496a3a5 100644
--- a/tests/codegen/sse42-implies-crc32.rs
+++ b/tests/codegen-llvm/sse42-implies-crc32.rs
diff --git a/tests/codegen/stack-probes-inline.rs b/tests/codegen-llvm/stack-probes-inline.rs
index 746272b0994..746272b0994 100644
--- a/tests/codegen/stack-probes-inline.rs
+++ b/tests/codegen-llvm/stack-probes-inline.rs
diff --git a/tests/codegen/stack-protector.rs b/tests/codegen-llvm/stack-protector.rs
index 8ab25b470cd..8ab25b470cd 100644
--- a/tests/codegen/stack-protector.rs
+++ b/tests/codegen-llvm/stack-protector.rs
diff --git a/tests/codegen/static-relocation-model-msvc.rs b/tests/codegen-llvm/static-relocation-model-msvc.rs
index 4d30e6ec505..4d30e6ec505 100644
--- a/tests/codegen/static-relocation-model-msvc.rs
+++ b/tests/codegen-llvm/static-relocation-model-msvc.rs
diff --git a/tests/codegen/staticlib-external-inline-fns.rs b/tests/codegen-llvm/staticlib-external-inline-fns.rs
index 23316a2d9a5..23316a2d9a5 100644
--- a/tests/codegen/staticlib-external-inline-fns.rs
+++ b/tests/codegen-llvm/staticlib-external-inline-fns.rs
diff --git a/tests/codegen/step_by-overflow-checks.rs b/tests/codegen-llvm/step_by-overflow-checks.rs
index 53800e9f879..53800e9f879 100644
--- a/tests/codegen/step_by-overflow-checks.rs
+++ b/tests/codegen-llvm/step_by-overflow-checks.rs
diff --git a/tests/codegen/stores.rs b/tests/codegen-llvm/stores.rs
index aa3090db6d3..aa3090db6d3 100644
--- a/tests/codegen/stores.rs
+++ b/tests/codegen-llvm/stores.rs
diff --git a/tests/codegen/string-push.rs b/tests/codegen-llvm/string-push.rs
index cf5f6bb1aa3..cf5f6bb1aa3 100644
--- a/tests/codegen/string-push.rs
+++ b/tests/codegen-llvm/string-push.rs
diff --git a/tests/codegen/swap-large-types.rs b/tests/codegen-llvm/swap-large-types.rs
index 08c486affd9..08c486affd9 100644
--- a/tests/codegen/swap-large-types.rs
+++ b/tests/codegen-llvm/swap-large-types.rs
diff --git a/tests/codegen/swap-small-types.rs b/tests/codegen-llvm/swap-small-types.rs
index 7aa613ae9c2..7aa613ae9c2 100644
--- a/tests/codegen/swap-small-types.rs
+++ b/tests/codegen-llvm/swap-small-types.rs
diff --git a/tests/codegen/target-cpu-on-functions.rs b/tests/codegen-llvm/target-cpu-on-functions.rs
index 25c10e7ce44..25c10e7ce44 100644
--- a/tests/codegen/target-cpu-on-functions.rs
+++ b/tests/codegen-llvm/target-cpu-on-functions.rs
diff --git a/tests/codegen/target-feature-inline-closure.rs b/tests/codegen-llvm/target-feature-inline-closure.rs
index 5d54444f994..5d54444f994 100644
--- a/tests/codegen/target-feature-inline-closure.rs
+++ b/tests/codegen-llvm/target-feature-inline-closure.rs
diff --git a/tests/codegen/target-feature-negative-implication.rs b/tests/codegen-llvm/target-feature-negative-implication.rs
index 36cd82dd8cf..36cd82dd8cf 100644
--- a/tests/codegen/target-feature-negative-implication.rs
+++ b/tests/codegen-llvm/target-feature-negative-implication.rs
diff --git a/tests/codegen/target-feature-overrides.rs b/tests/codegen-llvm/target-feature-overrides.rs
index eb19b0de2fa..63a586d388b 100644
--- a/tests/codegen/target-feature-overrides.rs
+++ b/tests/codegen-llvm/target-feature-overrides.rs
@@ -6,7 +6,7 @@
 //@ [COMPAT] compile-flags: -Ctarget-feature=+avx2
 //@ [INCOMPAT] compile-flags: -Ctarget-feature=-avx2,-avx
 
-// See also tests/assembly/target-feature-multiple.rs
+// See also tests/assembly-llvm/target-feature-multiple.rs
 #![feature(no_core, lang_items)]
 #![crate_type = "lib"]
 #![no_core]
diff --git a/tests/codegen/terminating-catchpad.rs b/tests/codegen-llvm/terminating-catchpad.rs
index a2ec19871d1..a2ec19871d1 100644
--- a/tests/codegen/terminating-catchpad.rs
+++ b/tests/codegen-llvm/terminating-catchpad.rs
diff --git a/tests/codegen/thread-local.rs b/tests/codegen-llvm/thread-local.rs
index 41df8c9be1b..41df8c9be1b 100644
--- a/tests/codegen/thread-local.rs
+++ b/tests/codegen-llvm/thread-local.rs
diff --git a/tests/codegen/tied-features-strength.rs b/tests/codegen-llvm/tied-features-strength.rs
index 81499c070d1..81499c070d1 100644
--- a/tests/codegen/tied-features-strength.rs
+++ b/tests/codegen-llvm/tied-features-strength.rs
diff --git a/tests/codegen/to_vec.rs b/tests/codegen-llvm/to_vec.rs
index 4f6e77188d8..4f6e77188d8 100644
--- a/tests/codegen/to_vec.rs
+++ b/tests/codegen-llvm/to_vec.rs
diff --git a/tests/codegen/trailing_zeros.rs b/tests/codegen-llvm/trailing_zeros.rs
index 0816a980992..0816a980992 100644
--- a/tests/codegen/trailing_zeros.rs
+++ b/tests/codegen-llvm/trailing_zeros.rs
diff --git a/tests/codegen/transmute-optimized.rs b/tests/codegen-llvm/transmute-optimized.rs
index 477fdc6de90..477fdc6de90 100644
--- a/tests/codegen/transmute-optimized.rs
+++ b/tests/codegen-llvm/transmute-optimized.rs
diff --git a/tests/codegen/transmute-scalar.rs b/tests/codegen-llvm/transmute-scalar.rs
index ce1b0558b2e..ce1b0558b2e 100644
--- a/tests/codegen/transmute-scalar.rs
+++ b/tests/codegen-llvm/transmute-scalar.rs
diff --git a/tests/codegen/try_question_mark_nop.rs b/tests/codegen-llvm/try_question_mark_nop.rs
index 398c9a580bc..398c9a580bc 100644
--- a/tests/codegen/try_question_mark_nop.rs
+++ b/tests/codegen-llvm/try_question_mark_nop.rs
diff --git a/tests/codegen/tune-cpu-on-functions.rs b/tests/codegen-llvm/tune-cpu-on-functions.rs
index f50245b797f..f50245b797f 100644
--- a/tests/codegen/tune-cpu-on-functions.rs
+++ b/tests/codegen-llvm/tune-cpu-on-functions.rs
diff --git a/tests/codegen/tuple-layout-opt.rs b/tests/codegen-llvm/tuple-layout-opt.rs
index 5b2f65e7aa7..5b2f65e7aa7 100644
--- a/tests/codegen/tuple-layout-opt.rs
+++ b/tests/codegen-llvm/tuple-layout-opt.rs
diff --git a/tests/codegen/ub-checks.rs b/tests/codegen-llvm/ub-checks.rs
index 67f5bff08d5..67f5bff08d5 100644
--- a/tests/codegen/ub-checks.rs
+++ b/tests/codegen-llvm/ub-checks.rs
diff --git a/tests/codegen/unchecked-float-casts.rs b/tests/codegen-llvm/unchecked-float-casts.rs
index d1869abc87b..d1869abc87b 100644
--- a/tests/codegen/unchecked-float-casts.rs
+++ b/tests/codegen-llvm/unchecked-float-casts.rs
diff --git a/tests/codegen/unchecked_shifts.rs b/tests/codegen-llvm/unchecked_shifts.rs
index 3f533718a2d..3f533718a2d 100644
--- a/tests/codegen/unchecked_shifts.rs
+++ b/tests/codegen-llvm/unchecked_shifts.rs
diff --git a/tests/codegen/uninhabited-transparent-return-abi.rs b/tests/codegen-llvm/uninhabited-transparent-return-abi.rs
index face1577c3f..face1577c3f 100644
--- a/tests/codegen/uninhabited-transparent-return-abi.rs
+++ b/tests/codegen-llvm/uninhabited-transparent-return-abi.rs
diff --git a/tests/codegen/uninit-consts.rs b/tests/codegen-llvm/uninit-consts.rs
index bde71a35c47..bde71a35c47 100644
--- a/tests/codegen/uninit-consts.rs
+++ b/tests/codegen-llvm/uninit-consts.rs
diff --git a/tests/codegen/uninit-repeat-in-aggregate.rs b/tests/codegen-llvm/uninit-repeat-in-aggregate.rs
index 0fa2eb7d56c..0fa2eb7d56c 100644
--- a/tests/codegen/uninit-repeat-in-aggregate.rs
+++ b/tests/codegen-llvm/uninit-repeat-in-aggregate.rs
diff --git a/tests/codegen/union-abi.rs b/tests/codegen-llvm/union-abi.rs
index 28acc4de2f3..28acc4de2f3 100644
--- a/tests/codegen/union-abi.rs
+++ b/tests/codegen-llvm/union-abi.rs
diff --git a/tests/codegen/union-aggregate.rs b/tests/codegen-llvm/union-aggregate.rs
index aac66c5dcdd..aac66c5dcdd 100644
--- a/tests/codegen/union-aggregate.rs
+++ b/tests/codegen-llvm/union-aggregate.rs
diff --git a/tests/codegen/unwind-abis/aapcs-unwind-abi.rs b/tests/codegen-llvm/unwind-abis/aapcs-unwind-abi.rs
index ecace722e0d..ecace722e0d 100644
--- a/tests/codegen/unwind-abis/aapcs-unwind-abi.rs
+++ b/tests/codegen-llvm/unwind-abis/aapcs-unwind-abi.rs
diff --git a/tests/codegen/unwind-abis/c-unwind-abi-panic-abort.rs b/tests/codegen-llvm/unwind-abis/c-unwind-abi-panic-abort.rs
index 8d2745ba2f7..8d2745ba2f7 100644
--- a/tests/codegen/unwind-abis/c-unwind-abi-panic-abort.rs
+++ b/tests/codegen-llvm/unwind-abis/c-unwind-abi-panic-abort.rs
diff --git a/tests/codegen/unwind-abis/c-unwind-abi.rs b/tests/codegen-llvm/unwind-abis/c-unwind-abi.rs
index 46c08b5fc4f..46c08b5fc4f 100644
--- a/tests/codegen/unwind-abis/c-unwind-abi.rs
+++ b/tests/codegen-llvm/unwind-abis/c-unwind-abi.rs
diff --git a/tests/codegen/unwind-abis/cdecl-unwind-abi.rs b/tests/codegen-llvm/unwind-abis/cdecl-unwind-abi.rs
index 8e643d6ce49..8e643d6ce49 100644
--- a/tests/codegen/unwind-abis/cdecl-unwind-abi.rs
+++ b/tests/codegen-llvm/unwind-abis/cdecl-unwind-abi.rs
diff --git a/tests/codegen/unwind-abis/fastcall-unwind-abi.rs b/tests/codegen-llvm/unwind-abis/fastcall-unwind-abi.rs
index 7df46813ed1..7df46813ed1 100644
--- a/tests/codegen/unwind-abis/fastcall-unwind-abi.rs
+++ b/tests/codegen-llvm/unwind-abis/fastcall-unwind-abi.rs
diff --git a/tests/codegen/unwind-abis/nounwind-on-stable-panic-abort.rs b/tests/codegen-llvm/unwind-abis/nounwind-on-stable-panic-abort.rs
index d27cbd60437..d27cbd60437 100644
--- a/tests/codegen/unwind-abis/nounwind-on-stable-panic-abort.rs
+++ b/tests/codegen-llvm/unwind-abis/nounwind-on-stable-panic-abort.rs
diff --git a/tests/codegen/unwind-abis/nounwind.rs b/tests/codegen-llvm/unwind-abis/nounwind.rs
index e40ed48ca73..e40ed48ca73 100644
--- a/tests/codegen/unwind-abis/nounwind.rs
+++ b/tests/codegen-llvm/unwind-abis/nounwind.rs
diff --git a/tests/codegen/unwind-abis/stdcall-unwind-abi.rs b/tests/codegen-llvm/unwind-abis/stdcall-unwind-abi.rs
index cc06ee12549..cc06ee12549 100644
--- a/tests/codegen/unwind-abis/stdcall-unwind-abi.rs
+++ b/tests/codegen-llvm/unwind-abis/stdcall-unwind-abi.rs
diff --git a/tests/codegen/unwind-abis/system-unwind-abi.rs b/tests/codegen-llvm/unwind-abis/system-unwind-abi.rs
index 5f910248346..5f910248346 100644
--- a/tests/codegen/unwind-abis/system-unwind-abi.rs
+++ b/tests/codegen-llvm/unwind-abis/system-unwind-abi.rs
diff --git a/tests/codegen/unwind-abis/sysv64-unwind-abi.rs b/tests/codegen-llvm/unwind-abis/sysv64-unwind-abi.rs
index 69bfaf80b4b..69bfaf80b4b 100644
--- a/tests/codegen/unwind-abis/sysv64-unwind-abi.rs
+++ b/tests/codegen-llvm/unwind-abis/sysv64-unwind-abi.rs
diff --git a/tests/codegen/unwind-abis/thiscall-unwind-abi.rs b/tests/codegen-llvm/unwind-abis/thiscall-unwind-abi.rs
index 05f6b8b70e1..05f6b8b70e1 100644
--- a/tests/codegen/unwind-abis/thiscall-unwind-abi.rs
+++ b/tests/codegen-llvm/unwind-abis/thiscall-unwind-abi.rs
diff --git a/tests/codegen/unwind-abis/vectorcall-unwind-abi.rs b/tests/codegen-llvm/unwind-abis/vectorcall-unwind-abi.rs
index d001a16b32a..d001a16b32a 100644
--- a/tests/codegen/unwind-abis/vectorcall-unwind-abi.rs
+++ b/tests/codegen-llvm/unwind-abis/vectorcall-unwind-abi.rs
diff --git a/tests/codegen/unwind-abis/win64-unwind-abi.rs b/tests/codegen-llvm/unwind-abis/win64-unwind-abi.rs
index 257f00b54e4..257f00b54e4 100644
--- a/tests/codegen/unwind-abis/win64-unwind-abi.rs
+++ b/tests/codegen-llvm/unwind-abis/win64-unwind-abi.rs
diff --git a/tests/codegen/unwind-and-panic-abort.rs b/tests/codegen-llvm/unwind-and-panic-abort.rs
index 8efa140058a..8efa140058a 100644
--- a/tests/codegen/unwind-and-panic-abort.rs
+++ b/tests/codegen-llvm/unwind-and-panic-abort.rs
diff --git a/tests/codegen/unwind-extern-exports.rs b/tests/codegen-llvm/unwind-extern-exports.rs
index e692fd1a547..e692fd1a547 100644
--- a/tests/codegen/unwind-extern-exports.rs
+++ b/tests/codegen-llvm/unwind-extern-exports.rs
diff --git a/tests/codegen/unwind-extern-imports.rs b/tests/codegen-llvm/unwind-extern-imports.rs
index dfae8aae64a..dfae8aae64a 100644
--- a/tests/codegen/unwind-extern-imports.rs
+++ b/tests/codegen-llvm/unwind-extern-imports.rs
diff --git a/tests/codegen/unwind-landingpad-cold.rs b/tests/codegen-llvm/unwind-landingpad-cold.rs
index fb095e04650..fb095e04650 100644
--- a/tests/codegen/unwind-landingpad-cold.rs
+++ b/tests/codegen-llvm/unwind-landingpad-cold.rs
diff --git a/tests/codegen/unwind-landingpad-inline.rs b/tests/codegen-llvm/unwind-landingpad-inline.rs
index 1cf606279e6..1cf606279e6 100644
--- a/tests/codegen/unwind-landingpad-inline.rs
+++ b/tests/codegen-llvm/unwind-landingpad-inline.rs
diff --git a/tests/codegen/used_with_arg.rs b/tests/codegen-llvm/used_with_arg.rs
index 4515cb2aed0..4515cb2aed0 100644
--- a/tests/codegen/used_with_arg.rs
+++ b/tests/codegen-llvm/used_with_arg.rs
diff --git a/tests/codegen/var-names.rs b/tests/codegen-llvm/var-names.rs
index 40720e19761..40720e19761 100644
--- a/tests/codegen/var-names.rs
+++ b/tests/codegen-llvm/var-names.rs
diff --git a/tests/codegen/vec-as-ptr.rs b/tests/codegen-llvm/vec-as-ptr.rs
index 5c997802640..5c997802640 100644
--- a/tests/codegen/vec-as-ptr.rs
+++ b/tests/codegen-llvm/vec-as-ptr.rs
diff --git a/tests/codegen/vec-calloc.rs b/tests/codegen-llvm/vec-calloc.rs
index d1c320ead01..d1c320ead01 100644
--- a/tests/codegen/vec-calloc.rs
+++ b/tests/codegen-llvm/vec-calloc.rs
diff --git a/tests/codegen/vec-in-place.rs b/tests/codegen-llvm/vec-in-place.rs
index a5ef8653b99..a5ef8653b99 100644
--- a/tests/codegen/vec-in-place.rs
+++ b/tests/codegen-llvm/vec-in-place.rs
diff --git a/tests/codegen/vec-iter-collect-len.rs b/tests/codegen-llvm/vec-iter-collect-len.rs
index 807548ef883..807548ef883 100644
--- a/tests/codegen/vec-iter-collect-len.rs
+++ b/tests/codegen-llvm/vec-iter-collect-len.rs
diff --git a/tests/codegen/vec-iter.rs b/tests/codegen-llvm/vec-iter.rs
index 4ed00d2d34f..4ed00d2d34f 100644
--- a/tests/codegen/vec-iter.rs
+++ b/tests/codegen-llvm/vec-iter.rs
diff --git a/tests/codegen/vec-len-invariant.rs b/tests/codegen-llvm/vec-len-invariant.rs
index 033181c2bfb..033181c2bfb 100644
--- a/tests/codegen/vec-len-invariant.rs
+++ b/tests/codegen-llvm/vec-len-invariant.rs
diff --git a/tests/codegen/vec-optimizes-away.rs b/tests/codegen-llvm/vec-optimizes-away.rs
index 93b55454b10..93b55454b10 100644
--- a/tests/codegen/vec-optimizes-away.rs
+++ b/tests/codegen-llvm/vec-optimizes-away.rs
diff --git a/tests/codegen/vec-reserve-extend.rs b/tests/codegen-llvm/vec-reserve-extend.rs
index 4d3f23ccecf..4d3f23ccecf 100644
--- a/tests/codegen/vec-reserve-extend.rs
+++ b/tests/codegen-llvm/vec-reserve-extend.rs
diff --git a/tests/codegen/vec-shrink-panik.rs b/tests/codegen-llvm/vec-shrink-panik.rs
index 23dd300d48c..23dd300d48c 100644
--- a/tests/codegen/vec-shrink-panik.rs
+++ b/tests/codegen-llvm/vec-shrink-panik.rs
diff --git a/tests/codegen/vec-with-capacity.rs b/tests/codegen-llvm/vec-with-capacity.rs
index 777bbcc4fcb..777bbcc4fcb 100644
--- a/tests/codegen/vec-with-capacity.rs
+++ b/tests/codegen-llvm/vec-with-capacity.rs
diff --git a/tests/codegen/vec_pop_push_noop.rs b/tests/codegen-llvm/vec_pop_push_noop.rs
index 3e375219fe0..3e375219fe0 100644
--- a/tests/codegen/vec_pop_push_noop.rs
+++ b/tests/codegen-llvm/vec_pop_push_noop.rs
diff --git a/tests/codegen/vecdeque-drain.rs b/tests/codegen-llvm/vecdeque-drain.rs
index a5e5da65013..a5e5da65013 100644
--- a/tests/codegen/vecdeque-drain.rs
+++ b/tests/codegen-llvm/vecdeque-drain.rs
diff --git a/tests/codegen/vecdeque-nonempty-get-no-panic.rs b/tests/codegen-llvm/vecdeque-nonempty-get-no-panic.rs
index 1f886b096bb..1f886b096bb 100644
--- a/tests/codegen/vecdeque-nonempty-get-no-panic.rs
+++ b/tests/codegen-llvm/vecdeque-nonempty-get-no-panic.rs
diff --git a/tests/codegen/vecdeque_no_panic.rs b/tests/codegen-llvm/vecdeque_no_panic.rs
index 3166842afca..3166842afca 100644
--- a/tests/codegen/vecdeque_no_panic.rs
+++ b/tests/codegen-llvm/vecdeque_no_panic.rs
diff --git a/tests/codegen/vecdeque_pop_push.rs b/tests/codegen-llvm/vecdeque_pop_push.rs
index 5afa1b2248b..5afa1b2248b 100644
--- a/tests/codegen/vecdeque_pop_push.rs
+++ b/tests/codegen-llvm/vecdeque_pop_push.rs
diff --git a/tests/codegen/virtual-call-attrs-issue-137646.rs b/tests/codegen-llvm/virtual-call-attrs-issue-137646.rs
index 5e453947f27..5e453947f27 100644
--- a/tests/codegen/virtual-call-attrs-issue-137646.rs
+++ b/tests/codegen-llvm/virtual-call-attrs-issue-137646.rs
diff --git a/tests/codegen/virtual-function-elimination-32bit.rs b/tests/codegen-llvm/virtual-function-elimination-32bit.rs
index c9919cecccf..c9919cecccf 100644
--- a/tests/codegen/virtual-function-elimination-32bit.rs
+++ b/tests/codegen-llvm/virtual-function-elimination-32bit.rs
diff --git a/tests/codegen/virtual-function-elimination.rs b/tests/codegen-llvm/virtual-function-elimination.rs
index 26604478c11..26604478c11 100644
--- a/tests/codegen/virtual-function-elimination.rs
+++ b/tests/codegen-llvm/virtual-function-elimination.rs
diff --git a/tests/codegen/vtable-loads.rs b/tests/codegen-llvm/vtable-loads.rs
index aa103ec6f7c..aa103ec6f7c 100644
--- a/tests/codegen/vtable-loads.rs
+++ b/tests/codegen-llvm/vtable-loads.rs
diff --git a/tests/codegen/vtable-upcast.rs b/tests/codegen-llvm/vtable-upcast.rs
index 9e13e8dd68a..9e13e8dd68a 100644
--- a/tests/codegen/vtable-upcast.rs
+++ b/tests/codegen-llvm/vtable-upcast.rs
diff --git a/tests/codegen/wasm_casts_trapping.rs b/tests/codegen-llvm/wasm_casts_trapping.rs
index 0908acd85fc..0908acd85fc 100644
--- a/tests/codegen/wasm_casts_trapping.rs
+++ b/tests/codegen-llvm/wasm_casts_trapping.rs
diff --git a/tests/codegen/wasm_exceptions.rs b/tests/codegen-llvm/wasm_exceptions.rs
index 07b8ae6e9d7..07b8ae6e9d7 100644
--- a/tests/codegen/wasm_exceptions.rs
+++ b/tests/codegen-llvm/wasm_exceptions.rs
diff --git a/tests/codegen/zip.rs b/tests/codegen-llvm/zip.rs
index 38ecf7c15c6..38ecf7c15c6 100644
--- a/tests/codegen/zip.rs
+++ b/tests/codegen-llvm/zip.rs
diff --git a/tests/codegen/zst-offset.rs b/tests/codegen-llvm/zst-offset.rs
index 475394a8815..475394a8815 100644
--- a/tests/codegen/zst-offset.rs
+++ b/tests/codegen-llvm/zst-offset.rs
diff --git a/tests/codegen/simd/project-to-simd-array-field.rs b/tests/codegen/simd/project-to-simd-array-field.rs
deleted file mode 100644
index 29fab640633..00000000000
--- a/tests/codegen/simd/project-to-simd-array-field.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-//@compile-flags: -Copt-level=3
-
-#![crate_type = "lib"]
-#![feature(repr_simd, core_intrinsics)]
-
-#[allow(non_camel_case_types)]
-#[derive(Clone, Copy)]
-#[repr(simd)]
-struct i32x4([i32; 4]);
-
-#[inline(always)]
-fn to_array4(a: i32x4) -> [i32; 4] {
-    a.0
-}
-
-// CHECK-LABEL: simd_add_self_then_return_array(
-// CHECK-SAME: ptr{{.+}}sret{{.+}}%[[RET:.+]],
-// CHECK-SAME: ptr{{.+}}%a)
-#[no_mangle]
-pub fn simd_add_self_then_return_array(a: &i32x4) -> [i32; 4] {
-    // It would be nice to just ban `.0` into simd types,
-    // but until we do this has to keep working.
-    // See also <https://github.com/rust-lang/rust/issues/105439>
-
-    // CHECK: %[[T1:.+]] = load <4 x i32>, ptr %a
-    // CHECK: %[[T2:.+]] = shl <4 x i32> %[[T1]], {{splat \(i32 1\)|<i32 1, i32 1, i32 1, i32 1>}}
-    // CHECK: store <4 x i32> %[[T2]], ptr %[[RET]]
-    let a = *a;
-    let b = unsafe { core::intrinsics::simd::simd_add(a, a) };
-    to_array4(b)
-}
diff --git a/tests/coverage/async_closure.cov-map b/tests/coverage/async_closure.cov-map
index 9f8dc8d6cbb..53128dd7a48 100644
--- a/tests/coverage/async_closure.cov-map
+++ b/tests/coverage/async_closure.cov-map
@@ -37,32 +37,29 @@ Number of file 0 mappings: 8
 Highest counter ID seen: c0
 
 Function name: async_closure::main::{closure#0}
-Raw bytes (14): 0x[01, 01, 00, 02, 01, 0b, 22, 00, 23, 01, 00, 23, 00, 24]
+Raw bytes (9): 0x[01, 01, 00, 01, 01, 0b, 22, 00, 24]
 Number of files: 1
 - file 0 => $DIR/async_closure.rs
 Number of expressions: 0
-Number of file 0 mappings: 2
-- Code(Counter(0)) at (prev + 11, 34) to (start + 0, 35)
-- Code(Counter(0)) at (prev + 0, 35) to (start + 0, 36)
+Number of file 0 mappings: 1
+- Code(Counter(0)) at (prev + 11, 34) to (start + 0, 36)
 Highest counter ID seen: c0
 
 Function name: async_closure::main::{closure#0}
-Raw bytes (14): 0x[01, 01, 00, 02, 01, 0b, 22, 00, 23, 01, 00, 23, 00, 24]
+Raw bytes (9): 0x[01, 01, 00, 01, 01, 0b, 22, 00, 24]
 Number of files: 1
 - file 0 => $DIR/async_closure.rs
 Number of expressions: 0
-Number of file 0 mappings: 2
-- Code(Counter(0)) at (prev + 11, 34) to (start + 0, 35)
-- Code(Counter(0)) at (prev + 0, 35) to (start + 0, 36)
+Number of file 0 mappings: 1
+- Code(Counter(0)) at (prev + 11, 34) to (start + 0, 36)
 Highest counter ID seen: c0
 
 Function name: async_closure::main::{closure#0}::{closure#0}::<i16>
-Raw bytes (14): 0x[01, 01, 00, 02, 01, 0b, 22, 00, 23, 01, 00, 23, 00, 24]
+Raw bytes (9): 0x[01, 01, 00, 01, 01, 0b, 22, 00, 24]
 Number of files: 1
 - file 0 => $DIR/async_closure.rs
 Number of expressions: 0
-Number of file 0 mappings: 2
-- Code(Counter(0)) at (prev + 11, 34) to (start + 0, 35)
-- Code(Counter(0)) at (prev + 0, 35) to (start + 0, 36)
+Number of file 0 mappings: 1
+- Code(Counter(0)) at (prev + 11, 34) to (start + 0, 36)
 Highest counter ID seen: c0
 
diff --git a/tests/crashes/140100.rs b/tests/crashes/140100.rs
deleted file mode 100644
index 0836ffe2d92..00000000000
--- a/tests/crashes/140100.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-//@ known-bug: #140100
-fn a()
-where
-    b: Sized,
-{
-    println!()
-}
diff --git a/tests/crashes/140365.rs b/tests/crashes/140365.rs
deleted file mode 100644
index 809ceaf35a0..00000000000
--- a/tests/crashes/140365.rs
+++ /dev/null
@@ -1,8 +0,0 @@
-//@ known-bug: #140365
-//@compile-flags: -C opt-level=1 -Zvalidate-mir
-fn f() -> &'static str
-where
-    Self: Sized,
-{
-    ""
-}
diff --git a/tests/mir-opt/coverage/branch_match_arms.main.InstrumentCoverage.diff b/tests/mir-opt/coverage/branch_match_arms.main.InstrumentCoverage.diff
index d465b8bded2..fa88211383a 100644
--- a/tests/mir-opt/coverage/branch_match_arms.main.InstrumentCoverage.diff
+++ b/tests/mir-opt/coverage/branch_match_arms.main.InstrumentCoverage.diff
@@ -40,7 +40,7 @@
 +     coverage Code { bcb: bcb5 } => $DIR/branch_match_arms.rs:19:17: 19:18 (#0);
 +     coverage Code { bcb: bcb5 } => $DIR/branch_match_arms.rs:19:23: 19:30 (#0);
 +     coverage Code { bcb: bcb5 } => $DIR/branch_match_arms.rs:19:31: 19:32 (#0);
-+     coverage Code { bcb: bcb2 } => $DIR/branch_match_arms.rs:21:2: 21:2 (#0);
++     coverage Code { bcb: bcb2 } => $DIR/branch_match_arms.rs:21:1: 21:2 (#0);
 + 
       bb0: {
 +         Coverage::VirtualCounter(bcb0);
diff --git a/tests/mir-opt/coverage/instrument_coverage.bar.InstrumentCoverage.diff b/tests/mir-opt/coverage/instrument_coverage.bar.InstrumentCoverage.diff
index cf6d85abd80..9b6d2b22087 100644
--- a/tests/mir-opt/coverage/instrument_coverage.bar.InstrumentCoverage.diff
+++ b/tests/mir-opt/coverage/instrument_coverage.bar.InstrumentCoverage.diff
@@ -6,7 +6,7 @@
   
 +     coverage Code { bcb: bcb0 } => $DIR/instrument_coverage.rs:27:1: 27:17 (#0);
 +     coverage Code { bcb: bcb0 } => $DIR/instrument_coverage.rs:28:5: 28:9 (#0);
-+     coverage Code { bcb: bcb0 } => $DIR/instrument_coverage.rs:29:2: 29:2 (#0);
++     coverage Code { bcb: bcb0 } => $DIR/instrument_coverage.rs:29:1: 29:2 (#0);
 + 
       bb0: {
 +         Coverage::VirtualCounter(bcb0);
diff --git a/tests/mir-opt/coverage/instrument_coverage.main.InstrumentCoverage.diff b/tests/mir-opt/coverage/instrument_coverage.main.InstrumentCoverage.diff
index 980c5e202ff..b2bb2375aee 100644
--- a/tests/mir-opt/coverage/instrument_coverage.main.InstrumentCoverage.diff
+++ b/tests/mir-opt/coverage/instrument_coverage.main.InstrumentCoverage.diff
@@ -10,8 +10,8 @@
 +     coverage Code { bcb: bcb0 } => $DIR/instrument_coverage.rs:13:1: 13:10 (#0);
 +     coverage Code { bcb: bcb1 } => $DIR/instrument_coverage.rs:15:12: 15:15 (#0);
 +     coverage Code { bcb: bcb2 } => $DIR/instrument_coverage.rs:16:13: 16:18 (#0);
-+     coverage Code { bcb: bcb3 } => $DIR/instrument_coverage.rs:17:10: 17:10 (#0);
-+     coverage Code { bcb: bcb2 } => $DIR/instrument_coverage.rs:19:2: 19:2 (#0);
++     coverage Code { bcb: bcb3 } => $DIR/instrument_coverage.rs:17:9: 17:10 (#0);
++     coverage Code { bcb: bcb2 } => $DIR/instrument_coverage.rs:19:1: 19:2 (#0);
 + 
       bb0: {
 +         Coverage::VirtualCounter(bcb0);
diff --git a/tests/mir-opt/coverage/instrument_coverage_cleanup.main.CleanupPostBorrowck.diff b/tests/mir-opt/coverage/instrument_coverage_cleanup.main.CleanupPostBorrowck.diff
index b707cd41788..2eb78c08ee8 100644
--- a/tests/mir-opt/coverage/instrument_coverage_cleanup.main.CleanupPostBorrowck.diff
+++ b/tests/mir-opt/coverage/instrument_coverage_cleanup.main.CleanupPostBorrowck.diff
@@ -10,8 +10,8 @@
       coverage Code { bcb: bcb0 } => $DIR/instrument_coverage_cleanup.rs:13:1: 13:10 (#0);
       coverage Code { bcb: bcb0 } => $DIR/instrument_coverage_cleanup.rs:14:8: 14:36 (#0);
       coverage Code { bcb: bcb3 } => $DIR/instrument_coverage_cleanup.rs:14:37: 14:39 (#0);
-      coverage Code { bcb: bcb1 } => $DIR/instrument_coverage_cleanup.rs:14:39: 14:39 (#0);
-      coverage Code { bcb: bcb2 } => $DIR/instrument_coverage_cleanup.rs:15:2: 15:2 (#0);
+      coverage Code { bcb: bcb1 } => $DIR/instrument_coverage_cleanup.rs:14:38: 14:39 (#0);
+      coverage Code { bcb: bcb2 } => $DIR/instrument_coverage_cleanup.rs:15:1: 15:2 (#0);
       coverage Branch { true_bcb: bcb3, false_bcb: bcb1 } => $DIR/instrument_coverage_cleanup.rs:14:8: 14:36 (#0);
   
       bb0: {
diff --git a/tests/mir-opt/coverage/instrument_coverage_cleanup.main.InstrumentCoverage.diff b/tests/mir-opt/coverage/instrument_coverage_cleanup.main.InstrumentCoverage.diff
index 239b845c231..0c1bc24b6dc 100644
--- a/tests/mir-opt/coverage/instrument_coverage_cleanup.main.InstrumentCoverage.diff
+++ b/tests/mir-opt/coverage/instrument_coverage_cleanup.main.InstrumentCoverage.diff
@@ -10,8 +10,8 @@
 +     coverage Code { bcb: bcb0 } => $DIR/instrument_coverage_cleanup.rs:13:1: 13:10 (#0);
 +     coverage Code { bcb: bcb0 } => $DIR/instrument_coverage_cleanup.rs:14:8: 14:36 (#0);
 +     coverage Code { bcb: bcb3 } => $DIR/instrument_coverage_cleanup.rs:14:37: 14:39 (#0);
-+     coverage Code { bcb: bcb1 } => $DIR/instrument_coverage_cleanup.rs:14:39: 14:39 (#0);
-+     coverage Code { bcb: bcb2 } => $DIR/instrument_coverage_cleanup.rs:15:2: 15:2 (#0);
++     coverage Code { bcb: bcb1 } => $DIR/instrument_coverage_cleanup.rs:14:38: 14:39 (#0);
++     coverage Code { bcb: bcb2 } => $DIR/instrument_coverage_cleanup.rs:15:1: 15:2 (#0);
 +     coverage Branch { true_bcb: bcb3, false_bcb: bcb1 } => $DIR/instrument_coverage_cleanup.rs:14:8: 14:36 (#0);
 + 
       bb0: {
diff --git a/tests/pretty/hir-delegation.pp b/tests/pretty/hir-delegation.pp
index e452cee6365..c0d724cccb5 100644
--- a/tests/pretty/hir-delegation.pp
+++ b/tests/pretty/hir-delegation.pp
@@ -6,7 +6,7 @@
 #![feature(fn_delegation)]
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 
 fn b<C>(e: C) { }
diff --git a/tests/pretty/hir-fn-params.pp b/tests/pretty/hir-fn-params.pp
index 3799c8a3c3b..cfb33cc93eb 100644
--- a/tests/pretty/hir-fn-params.pp
+++ b/tests/pretty/hir-fn-params.pp
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ pretty-compare-only
 //@ pretty-mode:hir
diff --git a/tests/pretty/hir-fn-variadic.pp b/tests/pretty/hir-fn-variadic.pp
index b6bc8e95127..99919e7fc6b 100644
--- a/tests/pretty/hir-fn-variadic.pp
+++ b/tests/pretty/hir-fn-variadic.pp
@@ -5,7 +5,7 @@
 #![feature(c_variadic)]
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 
 extern "C" {
diff --git a/tests/pretty/hir-if-else.pp b/tests/pretty/hir-if-else.pp
index 200e34ac4f5..4bccde663eb 100644
--- a/tests/pretty/hir-if-else.pp
+++ b/tests/pretty/hir-if-else.pp
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ pretty-compare-only
 //@ pretty-mode:hir
diff --git a/tests/pretty/hir-lifetimes.pp b/tests/pretty/hir-lifetimes.pp
index 58de6d81915..1bb2f17cdfb 100644
--- a/tests/pretty/hir-lifetimes.pp
+++ b/tests/pretty/hir-lifetimes.pp
@@ -7,7 +7,7 @@
 #![allow(unused)]
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 
 struct Foo<'a> {
diff --git a/tests/pretty/hir-pretty-attr.pp b/tests/pretty/hir-pretty-attr.pp
index db7489c1264..c780f8e3639 100644
--- a/tests/pretty/hir-pretty-attr.pp
+++ b/tests/pretty/hir-pretty-attr.pp
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ pretty-compare-only
 //@ pretty-mode:hir
diff --git a/tests/pretty/hir-pretty-loop.pp b/tests/pretty/hir-pretty-loop.pp
index 15f1677885a..c07120273c9 100644
--- a/tests/pretty/hir-pretty-loop.pp
+++ b/tests/pretty/hir-pretty-loop.pp
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ pretty-compare-only
 //@ pretty-mode:hir
diff --git a/tests/pretty/hir-struct-expr.pp b/tests/pretty/hir-struct-expr.pp
index f85d17542df..177eb5e8631 100644
--- a/tests/pretty/hir-struct-expr.pp
+++ b/tests/pretty/hir-struct-expr.pp
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ pretty-compare-only
 //@ pretty-mode:hir
diff --git a/tests/pretty/issue-4264.pp b/tests/pretty/issue-4264.pp
index eb808f7122a..f4b641335d1 100644
--- a/tests/pretty/issue-4264.pp
+++ b/tests/pretty/issue-4264.pp
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ pretty-compare-only
 //@ pretty-mode:hir,typed
diff --git a/tests/pretty/issue-85089.pp b/tests/pretty/issue-85089.pp
index f4e0eb3dd5f..31c0f90bf27 100644
--- a/tests/pretty/issue-85089.pp
+++ b/tests/pretty/issue-85089.pp
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 // Test to print lifetimes on HIR pretty-printing.
 
diff --git a/tests/pretty/pin-ergonomics-hir.pp b/tests/pretty/pin-ergonomics-hir.pp
index 212e0e174da..58a1c62f712 100644
--- a/tests/pretty/pin-ergonomics-hir.pp
+++ b/tests/pretty/pin-ergonomics-hir.pp
@@ -6,7 +6,7 @@
 #![allow(dead_code, incomplete_features)]
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 
 use std::pin::Pin;
diff --git a/tests/run-make/avr-rjmp-offset/rmake.rs b/tests/run-make/avr-rjmp-offset/rmake.rs
index da314f26ca7..86d85e89f78 100644
--- a/tests/run-make/avr-rjmp-offset/rmake.rs
+++ b/tests/run-make/avr-rjmp-offset/rmake.rs
@@ -6,7 +6,7 @@
 //! loop instruction to be missed. This test therefore contains a simple loop
 //! with trivial instructions in it, to see, where the label is placed.
 //!
-//! This must be a `rmake`-test and cannot be a `tests/assembly`-test, since the
+//! This must be a `rmake`-test and cannot be a `tests/assembly-llvm/`-test, since the
 //! wrong output is only produced with direct assembly generation, but not when
 //! "emit-asm" is used, as described in the issue description of #129301:
 //! https://github.com/rust-lang/rust/issues/129301#issue-2475070770
diff --git a/tests/run-make/llvm-ident/rmake.rs b/tests/run-make/llvm-ident/rmake.rs
index 47e6fc4de15..b4d30ee7bfb 100644
--- a/tests/run-make/llvm-ident/rmake.rs
+++ b/tests/run-make/llvm-ident/rmake.rs
@@ -27,7 +27,7 @@ fn main() {
 
     // Check LLVM IR files (including temporary outputs) have `!llvm.ident`
     // named metadata, reusing the related codegen test.
-    let llvm_ident_path = source_root().join("tests/codegen/llvm-ident.rs");
+    let llvm_ident_path = source_root().join("tests/codegen-llvm/llvm-ident.rs");
     let files = shallow_find_files(".", |path| has_extension(path, "ll"));
     for file in files {
         llvm_filecheck().input_file(file).arg(&llvm_ident_path).run();
diff --git a/tests/ui-fulldeps/stable-mir/check_abi.rs b/tests/ui-fulldeps/rustc_public/check_abi.rs
index fc2227d147d..57c8377ea36 100644
--- a/tests/ui-fulldeps/stable-mir/check_abi.rs
+++ b/tests/ui-fulldeps/rustc_public/check_abi.rs
@@ -167,7 +167,7 @@ impl MirVisitor for AdtDefVisitor {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "alloc_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_allocation.rs b/tests/ui-fulldeps/rustc_public/check_allocation.rs
index 83845a9aa42..70e4ee3fe34 100644
--- a/tests/ui-fulldeps/stable-mir/check_allocation.rs
+++ b/tests/ui-fulldeps/rustc_public/check_allocation.rs
@@ -202,7 +202,7 @@ fn get_item<'a>(
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "alloc_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_assoc_items.rs b/tests/ui-fulldeps/rustc_public/check_assoc_items.rs
index 1557991f8ca..1557991f8ca 100644
--- a/tests/ui-fulldeps/stable-mir/check_assoc_items.rs
+++ b/tests/ui-fulldeps/rustc_public/check_assoc_items.rs
diff --git a/tests/ui-fulldeps/stable-mir/check_attribute.rs b/tests/ui-fulldeps/rustc_public/check_attribute.rs
index d8807872ec4..0c34ac4dfe9 100644
--- a/tests/ui-fulldeps/stable-mir/check_attribute.rs
+++ b/tests/ui-fulldeps/rustc_public/check_attribute.rs
@@ -52,7 +52,7 @@ fn get_item<'a>(
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "attribute_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_binop.rs b/tests/ui-fulldeps/rustc_public/check_binop.rs
index aa089a5d125..35be6f973cc 100644
--- a/tests/ui-fulldeps/stable-mir/check_binop.rs
+++ b/tests/ui-fulldeps/rustc_public/check_binop.rs
@@ -76,7 +76,7 @@ impl<'a> MirVisitor for Visitor<'a> {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "binop_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_coroutine_body.rs b/tests/ui-fulldeps/rustc_public/check_coroutine_body.rs
index 725b538b0fe..725b538b0fe 100644
--- a/tests/ui-fulldeps/stable-mir/check_coroutine_body.rs
+++ b/tests/ui-fulldeps/rustc_public/check_coroutine_body.rs
diff --git a/tests/ui-fulldeps/stable-mir/check_crate_defs.rs b/tests/ui-fulldeps/rustc_public/check_crate_defs.rs
index 27d5b0bc238..3ca8b66e58d 100644
--- a/tests/ui-fulldeps/stable-mir/check_crate_defs.rs
+++ b/tests/ui-fulldeps/rustc_public/check_crate_defs.rs
@@ -79,7 +79,7 @@ fn contains<T: CrateDef + std::fmt::Debug>(items: &[T], expected: &[&str]) {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "crate_definitions.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_def_ty.rs b/tests/ui-fulldeps/rustc_public/check_def_ty.rs
index b5954352dc0..176a9d79ef1 100644
--- a/tests/ui-fulldeps/stable-mir/check_def_ty.rs
+++ b/tests/ui-fulldeps/rustc_public/check_def_ty.rs
@@ -70,7 +70,7 @@ fn check_fn_def(ty: Ty) {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "defs_ty_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_defs.rs b/tests/ui-fulldeps/rustc_public/check_defs.rs
index 5e45f19cac8..0c45859a132 100644
--- a/tests/ui-fulldeps/stable-mir/check_defs.rs
+++ b/tests/ui-fulldeps/rustc_public/check_defs.rs
@@ -106,7 +106,7 @@ fn get_instances(body: mir::Body) -> Vec<Instance> {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "defs_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_foreign.rs b/tests/ui-fulldeps/rustc_public/check_foreign.rs
index 9aee067f41b..78b62594c61 100644
--- a/tests/ui-fulldeps/stable-mir/check_foreign.rs
+++ b/tests/ui-fulldeps/rustc_public/check_foreign.rs
@@ -52,7 +52,7 @@ fn test_foreign() -> ControlFlow<()> {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "foreign_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_instance.rs b/tests/ui-fulldeps/rustc_public/check_instance.rs
index 18971076043..fd7523963fa 100644
--- a/tests/ui-fulldeps/stable-mir/check_instance.rs
+++ b/tests/ui-fulldeps/rustc_public/check_instance.rs
@@ -81,7 +81,7 @@ fn test_body(body: mir::Body) {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "instance_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_intrinsics.rs b/tests/ui-fulldeps/rustc_public/check_intrinsics.rs
index 854ac77956e..f722f0bbd71 100644
--- a/tests/ui-fulldeps/stable-mir/check_intrinsics.rs
+++ b/tests/ui-fulldeps/rustc_public/check_intrinsics.rs
@@ -110,7 +110,7 @@ impl<'a> MirVisitor for CallsVisitor<'a> {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "binop_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_item_kind.rs b/tests/ui-fulldeps/rustc_public/check_item_kind.rs
index 58e740bdaef..b759628f1a4 100644
--- a/tests/ui-fulldeps/stable-mir/check_item_kind.rs
+++ b/tests/ui-fulldeps/rustc_public/check_item_kind.rs
@@ -41,7 +41,7 @@ fn test_item_kind() -> ControlFlow<()> {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "item_kind_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_normalization.rs b/tests/ui-fulldeps/rustc_public/check_normalization.rs
index aa6a257dac6..db9d3031600 100644
--- a/tests/ui-fulldeps/stable-mir/check_normalization.rs
+++ b/tests/ui-fulldeps/rustc_public/check_normalization.rs
@@ -55,7 +55,7 @@ fn check_ty(ty: Ty) {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "normalization_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_trait_queries.rs b/tests/ui-fulldeps/rustc_public/check_trait_queries.rs
index a6c37883643..0dd13044fcc 100644
--- a/tests/ui-fulldeps/stable-mir/check_trait_queries.rs
+++ b/tests/ui-fulldeps/rustc_public/check_trait_queries.rs
@@ -67,7 +67,7 @@ fn assert_impl(impl_names: &HashSet<String>, target: &str) {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "trait_queries.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_transform.rs b/tests/ui-fulldeps/rustc_public/check_transform.rs
index 3209fcf9ede..b30d98c3b26 100644
--- a/tests/ui-fulldeps/stable-mir/check_transform.rs
+++ b/tests/ui-fulldeps/rustc_public/check_transform.rs
@@ -115,7 +115,7 @@ fn get_item<'a>(
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "transform_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_ty_fold.rs b/tests/ui-fulldeps/rustc_public/check_ty_fold.rs
index 07ef0d2bb50..93cd3049344 100644
--- a/tests/ui-fulldeps/stable-mir/check_ty_fold.rs
+++ b/tests/ui-fulldeps/rustc_public/check_ty_fold.rs
@@ -73,7 +73,7 @@ impl<'a> MirVisitor for PlaceVisitor<'a> {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "ty_fold_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/check_variant.rs b/tests/ui-fulldeps/rustc_public/check_variant.rs
index ebe76bd89d5..9ed16f2357c 100644
--- a/tests/ui-fulldeps/stable-mir/check_variant.rs
+++ b/tests/ui-fulldeps/rustc_public/check_variant.rs
@@ -120,7 +120,7 @@ fn check_statement_is_aggregate_assign(
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "defs_ty_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/closure-generic-body.rs b/tests/ui-fulldeps/rustc_public/closure-generic-body.rs
index e5f910fbda1..e5f910fbda1 100644
--- a/tests/ui-fulldeps/stable-mir/closure-generic-body.rs
+++ b/tests/ui-fulldeps/rustc_public/closure-generic-body.rs
diff --git a/tests/ui-fulldeps/stable-mir/closure_body.rs b/tests/ui-fulldeps/rustc_public/closure_body.rs
index f5f9f23ad12..f5f9f23ad12 100644
--- a/tests/ui-fulldeps/stable-mir/closure_body.rs
+++ b/tests/ui-fulldeps/rustc_public/closure_body.rs
diff --git a/tests/ui-fulldeps/stable-mir/compilation-result.rs b/tests/ui-fulldeps/rustc_public/compilation-result.rs
index ed013375c71..d33e602e819 100644
--- a/tests/ui-fulldeps/stable-mir/compilation-result.rs
+++ b/tests/ui-fulldeps/rustc_public/compilation-result.rs
@@ -20,7 +20,7 @@ use std::io::Write;
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "input_compilation_result_test.rs";
diff --git a/tests/ui-fulldeps/stable-mir/crate-info.rs b/tests/ui-fulldeps/rustc_public/crate-info.rs
index 4f46dff9b82..19082d7394a 100644
--- a/tests/ui-fulldeps/stable-mir/crate-info.rs
+++ b/tests/ui-fulldeps/rustc_public/crate-info.rs
@@ -189,7 +189,7 @@ fn get_item<'a>(
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/projections.rs b/tests/ui-fulldeps/rustc_public/projections.rs
index 3b360cd2fcf..e0213b4253c 100644
--- a/tests/ui-fulldeps/stable-mir/projections.rs
+++ b/tests/ui-fulldeps/rustc_public/projections.rs
@@ -141,7 +141,7 @@ fn get_item<'a>(
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/smir_internal.rs b/tests/ui-fulldeps/rustc_public/smir_internal.rs
index dd70cfe5f5e..b74bdfe4eb1 100644
--- a/tests/ui-fulldeps/stable-mir/smir_internal.rs
+++ b/tests/ui-fulldeps/rustc_public/smir_internal.rs
@@ -34,7 +34,7 @@ fn test_translation(tcx: TyCtxt<'_>) -> ControlFlow<()> {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "internal_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/smir_serde.rs b/tests/ui-fulldeps/rustc_public/smir_serde.rs
index 31642c6cb94..972bc5efe20 100644
--- a/tests/ui-fulldeps/stable-mir/smir_serde.rs
+++ b/tests/ui-fulldeps/rustc_public/smir_serde.rs
@@ -41,7 +41,7 @@ fn serialize_to_json(_tcx: TyCtxt<'_>) -> ControlFlow<()> {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "internal_input.rs";
diff --git a/tests/ui-fulldeps/stable-mir/smir_visitor.rs b/tests/ui-fulldeps/rustc_public/smir_visitor.rs
index 66787e2927b..9438f46a59b 100644
--- a/tests/ui-fulldeps/stable-mir/smir_visitor.rs
+++ b/tests/ui-fulldeps/rustc_public/smir_visitor.rs
@@ -177,7 +177,7 @@ impl mir::MutMirVisitor for TestMutVisitor {
 
 /// This test will generate and analyze a dummy crate using the stable mir.
 /// For that, it will first write the dummy crate into a file.
-/// Then it will create a `StableMir` using custom arguments and then
+/// Then it will create a `RustcPublic` using custom arguments and then
 /// it will run the compiler.
 fn main() {
     let path = "sim_visitor_input.rs";
diff --git a/tests/ui/SUMMARY.md b/tests/ui/SUMMARY.md
index 1aeb0fcfbea..b635b6326fc 100644
--- a/tests/ui/SUMMARY.md
+++ b/tests/ui/SUMMARY.md
@@ -1277,9 +1277,9 @@ See [Tracking issue for specialization (RFC 1210) #31844](https://github.com/rus
 
 Stability attributes used internally by the standard library: `#[stable()]` and `#[unstable()]`.
 
-## `tests/ui/stable-mir-print/`
+## `tests/ui/rustc_public-ir-print/`
 
-Some tests for pretty printing of StableMIR.
+Some tests for pretty printing of rustc_public's IR.
 
 ## `tests/ui/stack-protector/`: `-Z stack-protector` command line flag
 
diff --git a/tests/ui/abi/fixed_x18.rs b/tests/ui/abi/fixed_x18.rs
index 09d16303033..baf215ba903 100644
--- a/tests/ui/abi/fixed_x18.rs
+++ b/tests/ui/abi/fixed_x18.rs
@@ -1,5 +1,5 @@
 // This tests that -Zfixed-x18 causes a compilation failure on targets other than aarch64.
-// Behavior on aarch64 is tested by tests/codegen/fixed-x18.rs.
+// Behavior on aarch64 is tested by tests/codegen-llvm/fixed-x18.rs.
 //
 //@ revisions: x64 i686 arm riscv32 riscv64
 //@ dont-check-compiler-stderr
diff --git a/tests/ui/asm/naked-with-invalid-repr-attr.rs b/tests/ui/asm/naked-with-invalid-repr-attr.rs
index bfbbf29a69e..4620d007e4e 100644
--- a/tests/ui/asm/naked-with-invalid-repr-attr.rs
+++ b/tests/ui/asm/naked-with-invalid-repr-attr.rs
@@ -1,5 +1,9 @@
 //@ needs-asm-support
+
+// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
+#![feature(rustc_attrs)]
 #![feature(fn_align)]
+
 #![crate_type = "lib"]
 use std::arch::naked_asm;
 
@@ -21,7 +25,7 @@ extern "C" fn example2() {
 
 #[repr(C)]
 //~^ ERROR attribute should be applied to a struct, enum, or union [E0517]
-#[align(16)]
+#[rustc_align(16)]
 #[unsafe(naked)]
 extern "C" fn example3() {
     //~^ NOTE not a struct, enum, or union
diff --git a/tests/ui/asm/naked-with-invalid-repr-attr.stderr b/tests/ui/asm/naked-with-invalid-repr-attr.stderr
index 4eb4a4e5a04..8530495be66 100644
--- a/tests/ui/asm/naked-with-invalid-repr-attr.stderr
+++ b/tests/ui/asm/naked-with-invalid-repr-attr.stderr
@@ -1,5 +1,5 @@
 error[E0517]: attribute should be applied to a struct, enum, or union
-  --> $DIR/naked-with-invalid-repr-attr.rs:6:8
+  --> $DIR/naked-with-invalid-repr-attr.rs:10:8
    |
 LL |   #[repr(C)]
    |          ^
@@ -11,7 +11,7 @@ LL | | }
    | |_- not a struct, enum, or union
 
 error[E0517]: attribute should be applied to a struct, enum, or union
-  --> $DIR/naked-with-invalid-repr-attr.rs:14:8
+  --> $DIR/naked-with-invalid-repr-attr.rs:18:8
    |
 LL |   #[repr(transparent)]
    |          ^^^^^^^^^^^
@@ -23,7 +23,7 @@ LL | | }
    | |_- not a struct, enum, or union
 
 error[E0517]: attribute should be applied to a struct, enum, or union
-  --> $DIR/naked-with-invalid-repr-attr.rs:22:8
+  --> $DIR/naked-with-invalid-repr-attr.rs:26:8
    |
 LL |   #[repr(C)]
    |          ^
@@ -35,7 +35,7 @@ LL | | }
    | |_- not a struct, enum, or union
 
 error[E0517]: attribute should be applied to a struct, enum, or union
-  --> $DIR/naked-with-invalid-repr-attr.rs:32:8
+  --> $DIR/naked-with-invalid-repr-attr.rs:36:8
    |
 LL |   #[repr(C, packed)]
    |          ^
@@ -48,7 +48,7 @@ LL | | }
    | |_- not a struct, enum, or union
 
 error[E0517]: attribute should be applied to a struct or union
-  --> $DIR/naked-with-invalid-repr-attr.rs:32:11
+  --> $DIR/naked-with-invalid-repr-attr.rs:36:11
    |
 LL |   #[repr(C, packed)]
    |             ^^^^^^
@@ -61,7 +61,7 @@ LL | | }
    | |_- not a struct or union
 
 error[E0517]: attribute should be applied to an enum
-  --> $DIR/naked-with-invalid-repr-attr.rs:42:8
+  --> $DIR/naked-with-invalid-repr-attr.rs:46:8
    |
 LL |   #[repr(u8)]
    |          ^^
diff --git a/tests/ui/attributes/fn-align-dyn.rs b/tests/ui/attributes/fn-align-dyn.rs
index 8ba4d5e2897..3778c75a2ca 100644
--- a/tests/ui/attributes/fn-align-dyn.rs
+++ b/tests/ui/attributes/fn-align-dyn.rs
@@ -1,12 +1,15 @@
 //@ run-pass
 //@ ignore-wasm32 aligning functions is not currently supported on wasm (#143368)
+
+// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
+#![feature(rustc_attrs)]
 #![feature(fn_align)]
 
 trait Test {
-    #[align(4096)]
+    #[rustc_align(4096)]
     fn foo(&self);
 
-    #[align(4096)]
+    #[rustc_align(4096)]
     fn foo1(&self);
 }
 
diff --git a/tests/ui/attributes/fn-align-nameres-ambiguity-143834.rs b/tests/ui/attributes/fn-align-nameres-ambiguity-143834.rs
new file mode 100644
index 00000000000..536d6ff43fb
--- /dev/null
+++ b/tests/ui/attributes/fn-align-nameres-ambiguity-143834.rs
@@ -0,0 +1,19 @@
+// Anti-regression test to demonstrate that at least we mitigated breakage from adding a new
+// `#[align]` built-in attribute.
+//
+// See https://github.com/rust-lang/rust/issues/143834.
+
+//@ check-pass
+
+// Needs edition >= 2018 macro use behavior.
+//@ edition: 2018
+
+macro_rules! align {
+    () => {
+        /* .. */
+    };
+}
+
+pub(crate) use align;
+
+fn main() {}
diff --git a/tests/ui/attributes/invalid-macro-use.rs b/tests/ui/attributes/invalid-macro-use.rs
new file mode 100644
index 00000000000..cfb13fd183c
--- /dev/null
+++ b/tests/ui/attributes/invalid-macro-use.rs
@@ -0,0 +1,53 @@
+#![deny(unused_attributes)]
+//~^ NOTE the lint level is defined here
+
+#[macro_use = 5]
+//~^ ERROR valid forms for the attribute are `#[macro_use(name1, name2, ...)]` and `#[macro_use]`
+extern crate std as s1;
+
+#[macro_use(5)]
+//~^ ERROR malformed `macro_use` attribute input
+//~| NOTE expected a valid identifier here
+extern crate std as s2;
+
+#[macro_use(a = "b")]
+//~^ ERROR malformed `macro_use` attribute input
+//~| NOTE didn't expect any arguments here
+extern crate std as s3;
+
+#[macro_use(a(b))]
+//~^ ERROR malformed `macro_use` attribute input
+//~| NOTE didn't expect any arguments here
+extern crate std as s4;
+
+#[macro_use(a::b)]
+//~^ ERROR malformed `macro_use` attribute input
+//~| NOTE expected a valid identifier here
+extern crate std as s5;
+
+#[macro_use(a)]
+//~^ ERROR unused attribute
+#[macro_use]
+//~^ NOTE attribute also specified here
+extern crate std as s6;
+
+#[macro_use]
+//~^ NOTE attribute also specified here
+#[macro_use(a)]
+//~^ ERROR unused attribute
+extern crate std as s7;
+
+#[macro_use]
+//~^ NOTE attribute also specified here
+#[macro_use]
+//~^ ERROR unused attribute
+extern crate std as s8;
+
+// This is fine, both are importing different names
+#[macro_use(a)]
+//~^ ERROR imported macro not found
+#[macro_use(b)]
+//~^ ERROR imported macro not found
+extern crate std as s9;
+
+fn main() {}
diff --git a/tests/ui/attributes/invalid-macro-use.stderr b/tests/ui/attributes/invalid-macro-use.stderr
new file mode 100644
index 00000000000..4f5db5c558a
--- /dev/null
+++ b/tests/ui/attributes/invalid-macro-use.stderr
@@ -0,0 +1,131 @@
+error[E0469]: imported macro not found
+  --> $DIR/invalid-macro-use.rs:47:13
+   |
+LL | #[macro_use(a)]
+   |             ^
+
+error[E0469]: imported macro not found
+  --> $DIR/invalid-macro-use.rs:49:13
+   |
+LL | #[macro_use(b)]
+   |             ^
+
+error: valid forms for the attribute are `#[macro_use(name1, name2, ...)]` and `#[macro_use]`
+  --> $DIR/invalid-macro-use.rs:4:1
+   |
+LL | #[macro_use = 5]
+   | ^^^^^^^^^^^^^^^^
+
+error[E0539]: malformed `macro_use` attribute input
+  --> $DIR/invalid-macro-use.rs:8:1
+   |
+LL | #[macro_use(5)]
+   | ^^^^^^^^^^^^-^^
+   |             |
+   |             expected a valid identifier here
+   |
+help: try changing it to one of the following valid forms of the attribute
+   |
+LL - #[macro_use(5)]
+LL + #[macro_use(name1, name2, ...)]
+   |
+LL - #[macro_use(5)]
+LL + #[macro_use]
+   |
+
+error[E0565]: malformed `macro_use` attribute input
+  --> $DIR/invalid-macro-use.rs:13:1
+   |
+LL | #[macro_use(a = "b")]
+   | ^^^^^^^^^^^^^^-----^^
+   |               |
+   |               didn't expect any arguments here
+   |
+help: try changing it to one of the following valid forms of the attribute
+   |
+LL - #[macro_use(a = "b")]
+LL + #[macro_use(name1, name2, ...)]
+   |
+LL - #[macro_use(a = "b")]
+LL + #[macro_use]
+   |
+
+error[E0565]: malformed `macro_use` attribute input
+  --> $DIR/invalid-macro-use.rs:18:1
+   |
+LL | #[macro_use(a(b))]
+   | ^^^^^^^^^^^^^---^^
+   |              |
+   |              didn't expect any arguments here
+   |
+help: try changing it to one of the following valid forms of the attribute
+   |
+LL - #[macro_use(a(b))]
+LL + #[macro_use(name1, name2, ...)]
+   |
+LL - #[macro_use(a(b))]
+LL + #[macro_use]
+   |
+
+error[E0539]: malformed `macro_use` attribute input
+  --> $DIR/invalid-macro-use.rs:23:1
+   |
+LL | #[macro_use(a::b)]
+   | ^^^^^^^^^^^^----^^
+   |             |
+   |             expected a valid identifier here
+   |
+help: try changing it to one of the following valid forms of the attribute
+   |
+LL - #[macro_use(a::b)]
+LL + #[macro_use(name1, name2, ...)]
+   |
+LL - #[macro_use(a::b)]
+LL + #[macro_use]
+   |
+
+error: unused attribute
+  --> $DIR/invalid-macro-use.rs:28:1
+   |
+LL | #[macro_use(a)]
+   | ^^^^^^^^^^^^^^^ help: remove this attribute
+   |
+note: attribute also specified here
+  --> $DIR/invalid-macro-use.rs:30:1
+   |
+LL | #[macro_use]
+   | ^^^^^^^^^^^^
+note: the lint level is defined here
+  --> $DIR/invalid-macro-use.rs:1:9
+   |
+LL | #![deny(unused_attributes)]
+   |         ^^^^^^^^^^^^^^^^^
+
+error: unused attribute
+  --> $DIR/invalid-macro-use.rs:36:1
+   |
+LL | #[macro_use(a)]
+   | ^^^^^^^^^^^^^^^ help: remove this attribute
+   |
+note: attribute also specified here
+  --> $DIR/invalid-macro-use.rs:34:1
+   |
+LL | #[macro_use]
+   | ^^^^^^^^^^^^
+
+error: unused attribute
+  --> $DIR/invalid-macro-use.rs:42:1
+   |
+LL | #[macro_use]
+   | ^^^^^^^^^^^^ help: remove this attribute
+   |
+note: attribute also specified here
+  --> $DIR/invalid-macro-use.rs:40:1
+   |
+LL | #[macro_use]
+   | ^^^^^^^^^^^^
+
+error: aborting due to 10 previous errors
+
+Some errors have detailed explanations: E0469, E0539, E0565.
+For more information about an error, try `rustc --explain E0469`.
diff --git a/tests/ui/attributes/malformed-attrs.rs b/tests/ui/attributes/malformed-attrs.rs
index 5026687b97b..2a8b7b41e58 100644
--- a/tests/ui/attributes/malformed-attrs.rs
+++ b/tests/ui/attributes/malformed-attrs.rs
@@ -3,6 +3,7 @@
 #![feature(rustc_attrs)]
 #![feature(rustc_allow_const_fn_unstable)]
 #![feature(allow_internal_unstable)]
+// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
 #![feature(fn_align)]
 #![feature(optimize_attribute)]
 #![feature(dropck_eyepatch)]
@@ -53,7 +54,7 @@
 #[inline = 5]
 //~^ ERROR valid forms for the attribute are
 //~| WARN this was previously accepted by the compiler
-#[align]
+#[rustc_align]
 //~^ ERROR malformed
 #[optimize]
 //~^ ERROR malformed
@@ -207,7 +208,7 @@ static mut TLS: u8 = 42;
 #[no_link()]
 //~^ ERROR malformed
 #[macro_use = 1]
-//~^ ERROR malformed
+//~^ ERROR valid forms for the attribute are `#[macro_use(name1, name2, ...)]` and `#[macro_use]`
 extern crate wloop;
 //~^ ERROR can't find crate for `wloop` [E0463]
 
diff --git a/tests/ui/attributes/malformed-attrs.stderr b/tests/ui/attributes/malformed-attrs.stderr
index 0d0c338d302..7ae24db8b5f 100644
--- a/tests/ui/attributes/malformed-attrs.stderr
+++ b/tests/ui/attributes/malformed-attrs.stderr
@@ -1,5 +1,5 @@
 error[E0539]: malformed `cfg` attribute input
-  --> $DIR/malformed-attrs.rs:102:1
+  --> $DIR/malformed-attrs.rs:103:1
    |
 LL | #[cfg]
    | ^^^^^^
@@ -8,7 +8,7 @@ LL | #[cfg]
    | help: must be of the form: `#[cfg(predicate)]`
 
 error: malformed `cfg_attr` attribute input
-  --> $DIR/malformed-attrs.rs:104:1
+  --> $DIR/malformed-attrs.rs:105:1
    |
 LL | #[cfg_attr]
    | ^^^^^^^^^^^
@@ -20,67 +20,67 @@ LL | #[cfg_attr(condition, attribute, other_attribute, ...)]
    |           ++++++++++++++++++++++++++++++++++++++++++++
 
 error[E0463]: can't find crate for `wloop`
-  --> $DIR/malformed-attrs.rs:211:1
+  --> $DIR/malformed-attrs.rs:212:1
    |
 LL | extern crate wloop;
    | ^^^^^^^^^^^^^^^^^^^ can't find crate
 
 error: malformed `windows_subsystem` attribute input
-  --> $DIR/malformed-attrs.rs:29:1
+  --> $DIR/malformed-attrs.rs:30:1
    |
 LL | #![windows_subsystem]
    | ^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#![windows_subsystem = "windows|console"]`
 
 error: malformed `crate_name` attribute input
-  --> $DIR/malformed-attrs.rs:74:1
+  --> $DIR/malformed-attrs.rs:75:1
    |
 LL | #[crate_name]
    | ^^^^^^^^^^^^^ help: must be of the form: `#[crate_name = "name"]`
 
 error: malformed `no_sanitize` attribute input
-  --> $DIR/malformed-attrs.rs:92:1
+  --> $DIR/malformed-attrs.rs:93:1
    |
 LL | #[no_sanitize]
    | ^^^^^^^^^^^^^^ help: must be of the form: `#[no_sanitize(address, kcfi, memory, thread)]`
 
 error: malformed `proc_macro` attribute input
-  --> $DIR/malformed-attrs.rs:99:1
+  --> $DIR/malformed-attrs.rs:100:1
    |
 LL | #[proc_macro = 18]
    | ^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[proc_macro]`
 
 error: malformed `instruction_set` attribute input
-  --> $DIR/malformed-attrs.rs:106:1
+  --> $DIR/malformed-attrs.rs:107:1
    |
 LL | #[instruction_set]
    | ^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[instruction_set(set)]`
 
 error: malformed `patchable_function_entry` attribute input
-  --> $DIR/malformed-attrs.rs:108:1
+  --> $DIR/malformed-attrs.rs:109:1
    |
 LL | #[patchable_function_entry]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[patchable_function_entry(prefix_nops = m, entry_nops = n)]`
 
 error: malformed `coroutine` attribute input
-  --> $DIR/malformed-attrs.rs:111:5
+  --> $DIR/malformed-attrs.rs:112:5
    |
 LL |     #[coroutine = 63] || {}
    |     ^^^^^^^^^^^^^^^^^ help: must be of the form: `#[coroutine]`
 
 error: malformed `proc_macro_attribute` attribute input
-  --> $DIR/malformed-attrs.rs:116:1
+  --> $DIR/malformed-attrs.rs:117:1
    |
 LL | #[proc_macro_attribute = 19]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[proc_macro_attribute]`
 
 error: malformed `proc_macro_derive` attribute input
-  --> $DIR/malformed-attrs.rs:123:1
+  --> $DIR/malformed-attrs.rs:124:1
    |
 LL | #[proc_macro_derive]
    | ^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[proc_macro_derive(TraitName, /*opt*/ attributes(name1, name2, ...))]`
 
 error: malformed `must_not_suspend` attribute input
-  --> $DIR/malformed-attrs.rs:132:1
+  --> $DIR/malformed-attrs.rs:133:1
    |
 LL | #[must_not_suspend()]
    | ^^^^^^^^^^^^^^^^^^^^^
@@ -95,82 +95,67 @@ LL + #[must_not_suspend]
    |
 
 error: malformed `cfi_encoding` attribute input
-  --> $DIR/malformed-attrs.rs:134:1
+  --> $DIR/malformed-attrs.rs:135:1
    |
 LL | #[cfi_encoding]
    | ^^^^^^^^^^^^^^^ help: must be of the form: `#[cfi_encoding = "encoding"]`
 
 error: malformed `linkage` attribute input
-  --> $DIR/malformed-attrs.rs:173:5
+  --> $DIR/malformed-attrs.rs:174:5
    |
 LL |     #[linkage]
    |     ^^^^^^^^^^ help: must be of the form: `#[linkage = "external|internal|..."]`
 
 error: malformed `allow` attribute input
-  --> $DIR/malformed-attrs.rs:178:1
+  --> $DIR/malformed-attrs.rs:179:1
    |
 LL | #[allow]
    | ^^^^^^^^ help: must be of the form: `#[allow(lint1, lint2, ..., /*opt*/ reason = "...")]`
 
 error: malformed `expect` attribute input
-  --> $DIR/malformed-attrs.rs:180:1
+  --> $DIR/malformed-attrs.rs:181:1
    |
 LL | #[expect]
    | ^^^^^^^^^ help: must be of the form: `#[expect(lint1, lint2, ..., /*opt*/ reason = "...")]`
 
 error: malformed `warn` attribute input
-  --> $DIR/malformed-attrs.rs:182:1
+  --> $DIR/malformed-attrs.rs:183:1
    |
 LL | #[warn]
    | ^^^^^^^ help: must be of the form: `#[warn(lint1, lint2, ..., /*opt*/ reason = "...")]`
 
 error: malformed `deny` attribute input
-  --> $DIR/malformed-attrs.rs:184:1
+  --> $DIR/malformed-attrs.rs:185:1
    |
 LL | #[deny]
    | ^^^^^^^ help: must be of the form: `#[deny(lint1, lint2, ..., /*opt*/ reason = "...")]`
 
 error: malformed `forbid` attribute input
-  --> $DIR/malformed-attrs.rs:186:1
+  --> $DIR/malformed-attrs.rs:187:1
    |
 LL | #[forbid]
    | ^^^^^^^^^ help: must be of the form: `#[forbid(lint1, lint2, ..., /*opt*/ reason = "...")]`
 
 error: malformed `debugger_visualizer` attribute input
-  --> $DIR/malformed-attrs.rs:188:1
+  --> $DIR/malformed-attrs.rs:189:1
    |
 LL | #[debugger_visualizer]
    | ^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[debugger_visualizer(natvis_file = "...", gdb_script_file = "...")]`
 
 error: malformed `thread_local` attribute input
-  --> $DIR/malformed-attrs.rs:203:1
+  --> $DIR/malformed-attrs.rs:204:1
    |
 LL | #[thread_local()]
    | ^^^^^^^^^^^^^^^^^ help: must be of the form: `#[thread_local]`
 
 error: malformed `no_link` attribute input
-  --> $DIR/malformed-attrs.rs:207:1
+  --> $DIR/malformed-attrs.rs:208:1
    |
 LL | #[no_link()]
    | ^^^^^^^^^^^^ help: must be of the form: `#[no_link]`
 
-error: malformed `macro_use` attribute input
-  --> $DIR/malformed-attrs.rs:209:1
-   |
-LL | #[macro_use = 1]
-   | ^^^^^^^^^^^^^^^^
-   |
-help: the following are the possible correct uses
-   |
-LL - #[macro_use = 1]
-LL + #[macro_use(name1, name2, ...)]
-   |
-LL - #[macro_use = 1]
-LL + #[macro_use]
-   |
-
 error: malformed `macro_export` attribute input
-  --> $DIR/malformed-attrs.rs:214:1
+  --> $DIR/malformed-attrs.rs:215:1
    |
 LL | #[macro_export = 18]
    | ^^^^^^^^^^^^^^^^^^^^
@@ -185,31 +170,31 @@ LL + #[macro_export]
    |
 
 error: malformed `allow_internal_unsafe` attribute input
-  --> $DIR/malformed-attrs.rs:216:1
+  --> $DIR/malformed-attrs.rs:217:1
    |
 LL | #[allow_internal_unsafe = 1]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[allow_internal_unsafe]`
 
 error: the `#[proc_macro]` attribute is only usable with crates of the `proc-macro` crate type
-  --> $DIR/malformed-attrs.rs:99:1
+  --> $DIR/malformed-attrs.rs:100:1
    |
 LL | #[proc_macro = 18]
    | ^^^^^^^^^^^^^^^^^^
 
 error: the `#[proc_macro_attribute]` attribute is only usable with crates of the `proc-macro` crate type
-  --> $DIR/malformed-attrs.rs:116:1
+  --> $DIR/malformed-attrs.rs:117:1
    |
 LL | #[proc_macro_attribute = 19]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: the `#[proc_macro_derive]` attribute is only usable with crates of the `proc-macro` crate type
-  --> $DIR/malformed-attrs.rs:123:1
+  --> $DIR/malformed-attrs.rs:124:1
    |
 LL | #[proc_macro_derive]
    | ^^^^^^^^^^^^^^^^^^^^
 
 error[E0658]: allow_internal_unsafe side-steps the unsafe_code lint
-  --> $DIR/malformed-attrs.rs:216:1
+  --> $DIR/malformed-attrs.rs:217:1
    |
 LL | #[allow_internal_unsafe = 1]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -218,7 +203,7 @@ LL | #[allow_internal_unsafe = 1]
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
 error: valid forms for the attribute are `#[doc(hidden|inline|...)]` and `#[doc = "string"]`
-  --> $DIR/malformed-attrs.rs:43:1
+  --> $DIR/malformed-attrs.rs:44:1
    |
 LL | #[doc]
    | ^^^^^^
@@ -228,7 +213,7 @@ LL | #[doc]
    = note: `#[deny(ill_formed_attribute_input)]` on by default
 
 error: valid forms for the attribute are `#[doc(hidden|inline|...)]` and `#[doc = "string"]`
-  --> $DIR/malformed-attrs.rs:76:1
+  --> $DIR/malformed-attrs.rs:77:1
    |
 LL | #[doc]
    | ^^^^^^
@@ -237,7 +222,7 @@ LL | #[doc]
    = note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
 
 error: attribute must be of the form `#[link(name = "...", /*opt*/ kind = "dylib|static|...", /*opt*/ wasm_import_module = "...", /*opt*/ import_name_type = "decorated|noprefix|undecorated")]`
-  --> $DIR/malformed-attrs.rs:83:1
+  --> $DIR/malformed-attrs.rs:84:1
    |
 LL | #[link]
    | ^^^^^^^
@@ -246,7 +231,7 @@ LL | #[link]
    = note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
 
 error: invalid argument
-  --> $DIR/malformed-attrs.rs:188:1
+  --> $DIR/malformed-attrs.rs:189:1
    |
 LL | #[debugger_visualizer]
    | ^^^^^^^^^^^^^^^^^^^^^^
@@ -256,7 +241,7 @@ LL | #[debugger_visualizer]
    = note: expected: `gdb_script_file = "..."`
 
 error[E0565]: malformed `omit_gdb_pretty_printer_section` attribute input
-  --> $DIR/malformed-attrs.rs:26:1
+  --> $DIR/malformed-attrs.rs:27:1
    |
 LL | #![omit_gdb_pretty_printer_section = 1]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---^
@@ -265,25 +250,25 @@ LL | #![omit_gdb_pretty_printer_section = 1]
    | help: must be of the form: `#[omit_gdb_pretty_printer_section]`
 
 error[E0539]: malformed `export_name` attribute input
-  --> $DIR/malformed-attrs.rs:32:1
+  --> $DIR/malformed-attrs.rs:33:1
    |
 LL | #[unsafe(export_name)]
    | ^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[export_name = "name"]`
 
 error: `rustc_allow_const_fn_unstable` expects a list of feature names
-  --> $DIR/malformed-attrs.rs:34:1
+  --> $DIR/malformed-attrs.rs:35:1
    |
 LL | #[rustc_allow_const_fn_unstable]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: `allow_internal_unstable` expects a list of feature names
-  --> $DIR/malformed-attrs.rs:37:1
+  --> $DIR/malformed-attrs.rs:38:1
    |
 LL | #[allow_internal_unstable]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error[E0539]: malformed `rustc_confusables` attribute input
-  --> $DIR/malformed-attrs.rs:39:1
+  --> $DIR/malformed-attrs.rs:40:1
    |
 LL | #[rustc_confusables]
    | ^^^^^^^^^^^^^^^^^^^^
@@ -292,7 +277,7 @@ LL | #[rustc_confusables]
    | help: must be of the form: `#[rustc_confusables("name1", "name2", ...)]`
 
 error[E0539]: malformed `deprecated` attribute input
-  --> $DIR/malformed-attrs.rs:41:1
+  --> $DIR/malformed-attrs.rs:42:1
    |
 LL | #[deprecated = 5]
    | ^^^^^^^^^^^^^^^-^
@@ -312,13 +297,13 @@ LL + #[deprecated]
    |
 
 error[E0539]: malformed `rustc_macro_transparency` attribute input
-  --> $DIR/malformed-attrs.rs:46:1
+  --> $DIR/malformed-attrs.rs:47:1
    |
 LL | #[rustc_macro_transparency]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[rustc_macro_transparency = "transparent|semitransparent|opaque"]`
 
 error[E0539]: malformed `repr` attribute input
-  --> $DIR/malformed-attrs.rs:48:1
+  --> $DIR/malformed-attrs.rs:49:1
    |
 LL | #[repr]
    | ^^^^^^^
@@ -327,7 +312,7 @@ LL | #[repr]
    | help: must be of the form: `#[repr(C | Rust | align(...) | packed(...) | <integer type> | transparent)]`
 
 error[E0565]: malformed `rustc_as_ptr` attribute input
-  --> $DIR/malformed-attrs.rs:51:1
+  --> $DIR/malformed-attrs.rs:52:1
    |
 LL | #[rustc_as_ptr = 5]
    | ^^^^^^^^^^^^^^^---^
@@ -335,17 +320,17 @@ LL | #[rustc_as_ptr = 5]
    | |              didn't expect any arguments here
    | help: must be of the form: `#[rustc_as_ptr]`
 
-error[E0539]: malformed `align` attribute input
-  --> $DIR/malformed-attrs.rs:56:1
+error[E0539]: malformed `rustc_align` attribute input
+  --> $DIR/malformed-attrs.rs:57:1
    |
-LL | #[align]
-   | ^^^^^^^^
+LL | #[rustc_align]
+   | ^^^^^^^^^^^^^^
    | |
    | expected this to be a list
-   | help: must be of the form: `#[align(<alignment in bytes>)]`
+   | help: must be of the form: `#[rustc_align(<alignment in bytes>)]`
 
 error[E0539]: malformed `optimize` attribute input
-  --> $DIR/malformed-attrs.rs:58:1
+  --> $DIR/malformed-attrs.rs:59:1
    |
 LL | #[optimize]
    | ^^^^^^^^^^^
@@ -354,7 +339,7 @@ LL | #[optimize]
    | help: must be of the form: `#[optimize(size|speed|none)]`
 
 error[E0565]: malformed `cold` attribute input
-  --> $DIR/malformed-attrs.rs:60:1
+  --> $DIR/malformed-attrs.rs:61:1
    |
 LL | #[cold = 1]
    | ^^^^^^^---^
@@ -363,13 +348,13 @@ LL | #[cold = 1]
    | help: must be of the form: `#[cold]`
 
 error: valid forms for the attribute are `#[must_use = "reason"]` and `#[must_use]`
-  --> $DIR/malformed-attrs.rs:62:1
+  --> $DIR/malformed-attrs.rs:63:1
    |
 LL | #[must_use()]
    | ^^^^^^^^^^^^^
 
 error[E0565]: malformed `no_mangle` attribute input
-  --> $DIR/malformed-attrs.rs:64:1
+  --> $DIR/malformed-attrs.rs:65:1
    |
 LL | #[no_mangle = 1]
    | ^^^^^^^^^^^^---^
@@ -378,7 +363,7 @@ LL | #[no_mangle = 1]
    | help: must be of the form: `#[no_mangle]`
 
 error[E0565]: malformed `naked` attribute input
-  --> $DIR/malformed-attrs.rs:66:1
+  --> $DIR/malformed-attrs.rs:67:1
    |
 LL | #[unsafe(naked())]
    | ^^^^^^^^^^^^^^--^^
@@ -387,7 +372,7 @@ LL | #[unsafe(naked())]
    | help: must be of the form: `#[naked]`
 
 error[E0565]: malformed `track_caller` attribute input
-  --> $DIR/malformed-attrs.rs:68:1
+  --> $DIR/malformed-attrs.rs:69:1
    |
 LL | #[track_caller()]
    | ^^^^^^^^^^^^^^--^
@@ -396,13 +381,13 @@ LL | #[track_caller()]
    | help: must be of the form: `#[track_caller]`
 
 error[E0539]: malformed `export_name` attribute input
-  --> $DIR/malformed-attrs.rs:70:1
+  --> $DIR/malformed-attrs.rs:71:1
    |
 LL | #[export_name()]
    | ^^^^^^^^^^^^^^^^ help: must be of the form: `#[export_name = "name"]`
 
 error[E0805]: malformed `used` attribute input
-  --> $DIR/malformed-attrs.rs:72:1
+  --> $DIR/malformed-attrs.rs:73:1
    |
 LL | #[used()]
    | ^^^^^^--^
@@ -418,7 +403,7 @@ LL + #[used]
    |
 
 error[E0539]: malformed `target_feature` attribute input
-  --> $DIR/malformed-attrs.rs:79:1
+  --> $DIR/malformed-attrs.rs:80:1
    |
 LL | #[target_feature]
    | ^^^^^^^^^^^^^^^^^
@@ -427,7 +412,7 @@ LL | #[target_feature]
    | help: must be of the form: `#[target_feature(enable = "feat1, feat2")]`
 
 error[E0565]: malformed `export_stable` attribute input
-  --> $DIR/malformed-attrs.rs:81:1
+  --> $DIR/malformed-attrs.rs:82:1
    |
 LL | #[export_stable = 1]
    | ^^^^^^^^^^^^^^^^---^
@@ -436,19 +421,19 @@ LL | #[export_stable = 1]
    | help: must be of the form: `#[export_stable]`
 
 error[E0539]: malformed `link_name` attribute input
-  --> $DIR/malformed-attrs.rs:86:1
+  --> $DIR/malformed-attrs.rs:87:1
    |
 LL | #[link_name]
    | ^^^^^^^^^^^^ help: must be of the form: `#[link_name = "name"]`
 
 error[E0539]: malformed `link_section` attribute input
-  --> $DIR/malformed-attrs.rs:88:1
+  --> $DIR/malformed-attrs.rs:89:1
    |
 LL | #[link_section]
    | ^^^^^^^^^^^^^^^ help: must be of the form: `#[link_section = "name"]`
 
 error[E0539]: malformed `coverage` attribute input
-  --> $DIR/malformed-attrs.rs:90:1
+  --> $DIR/malformed-attrs.rs:91:1
    |
 LL | #[coverage]
    | ^^^^^^^^^^^ this attribute is only valid with either `on` or `off` as an argument
@@ -461,7 +446,7 @@ LL | #[coverage(on)]
    |           ++++
 
 error[E0565]: malformed `no_implicit_prelude` attribute input
-  --> $DIR/malformed-attrs.rs:97:1
+  --> $DIR/malformed-attrs.rs:98:1
    |
 LL | #[no_implicit_prelude = 23]
    | ^^^^^^^^^^^^^^^^^^^^^^----^
@@ -470,7 +455,7 @@ LL | #[no_implicit_prelude = 23]
    | help: must be of the form: `#[no_implicit_prelude]`
 
 error[E0539]: malformed `must_use` attribute input
-  --> $DIR/malformed-attrs.rs:119:1
+  --> $DIR/malformed-attrs.rs:120:1
    |
 LL | #[must_use = 1]
    | ^^^^^^^^^^^^^-^
@@ -487,7 +472,7 @@ LL + #[must_use]
    |
 
 error[E0539]: malformed `rustc_layout_scalar_valid_range_start` attribute input
-  --> $DIR/malformed-attrs.rs:128:1
+  --> $DIR/malformed-attrs.rs:129:1
    |
 LL | #[rustc_layout_scalar_valid_range_start]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -496,7 +481,7 @@ LL | #[rustc_layout_scalar_valid_range_start]
    | help: must be of the form: `#[rustc_layout_scalar_valid_range_start(start)]`
 
 error[E0539]: malformed `rustc_layout_scalar_valid_range_end` attribute input
-  --> $DIR/malformed-attrs.rs:130:1
+  --> $DIR/malformed-attrs.rs:131:1
    |
 LL | #[rustc_layout_scalar_valid_range_end]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -505,7 +490,7 @@ LL | #[rustc_layout_scalar_valid_range_end]
    | help: must be of the form: `#[rustc_layout_scalar_valid_range_end(end)]`
 
 error[E0565]: malformed `marker` attribute input
-  --> $DIR/malformed-attrs.rs:155:1
+  --> $DIR/malformed-attrs.rs:156:1
    |
 LL | #[marker = 3]
    | ^^^^^^^^^---^
@@ -514,7 +499,7 @@ LL | #[marker = 3]
    | help: must be of the form: `#[marker]`
 
 error[E0565]: malformed `fundamental` attribute input
-  --> $DIR/malformed-attrs.rs:157:1
+  --> $DIR/malformed-attrs.rs:158:1
    |
 LL | #[fundamental()]
    | ^^^^^^^^^^^^^--^
@@ -523,7 +508,7 @@ LL | #[fundamental()]
    | help: must be of the form: `#[fundamental]`
 
 error[E0565]: malformed `ffi_pure` attribute input
-  --> $DIR/malformed-attrs.rs:165:5
+  --> $DIR/malformed-attrs.rs:166:5
    |
 LL |     #[unsafe(ffi_pure = 1)]
    |     ^^^^^^^^^^^^^^^^^^---^^
@@ -532,7 +517,7 @@ LL |     #[unsafe(ffi_pure = 1)]
    |     help: must be of the form: `#[ffi_pure]`
 
 error[E0539]: malformed `link_ordinal` attribute input
-  --> $DIR/malformed-attrs.rs:167:5
+  --> $DIR/malformed-attrs.rs:168:5
    |
 LL |     #[link_ordinal]
    |     ^^^^^^^^^^^^^^^
@@ -541,7 +526,7 @@ LL |     #[link_ordinal]
    |     help: must be of the form: `#[link_ordinal(ordinal)]`
 
 error[E0565]: malformed `ffi_const` attribute input
-  --> $DIR/malformed-attrs.rs:171:5
+  --> $DIR/malformed-attrs.rs:172:5
    |
 LL |     #[unsafe(ffi_const = 1)]
    |     ^^^^^^^^^^^^^^^^^^^---^^
@@ -550,7 +535,7 @@ LL |     #[unsafe(ffi_const = 1)]
    |     help: must be of the form: `#[ffi_const]`
 
 error[E0565]: malformed `automatically_derived` attribute input
-  --> $DIR/malformed-attrs.rs:191:1
+  --> $DIR/malformed-attrs.rs:192:1
    |
 LL | #[automatically_derived = 18]
    | ^^^^^^^^^^^^^^^^^^^^^^^^----^
@@ -559,7 +544,7 @@ LL | #[automatically_derived = 18]
    | help: must be of the form: `#[automatically_derived]`
 
 error[E0565]: malformed `non_exhaustive` attribute input
-  --> $DIR/malformed-attrs.rs:197:1
+  --> $DIR/malformed-attrs.rs:198:1
    |
 LL | #[non_exhaustive = 1]
    | ^^^^^^^^^^^^^^^^^---^
@@ -567,8 +552,14 @@ LL | #[non_exhaustive = 1]
    | |                didn't expect any arguments here
    | help: must be of the form: `#[non_exhaustive]`
 
+error: valid forms for the attribute are `#[macro_use(name1, name2, ...)]` and `#[macro_use]`
+  --> $DIR/malformed-attrs.rs:210:1
+   |
+LL | #[macro_use = 1]
+   | ^^^^^^^^^^^^^^^^
+
 error[E0565]: malformed `type_const` attribute input
-  --> $DIR/malformed-attrs.rs:143:5
+  --> $DIR/malformed-attrs.rs:144:5
    |
 LL |     #[type_const = 1]
    |     ^^^^^^^^^^^^^---^
@@ -577,7 +568,7 @@ LL |     #[type_const = 1]
    |     help: must be of the form: `#[type_const]`
 
 error: attribute should be applied to `const fn`
-  --> $DIR/malformed-attrs.rs:34:1
+  --> $DIR/malformed-attrs.rs:35:1
    |
 LL |   #[rustc_allow_const_fn_unstable]
    |   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -589,19 +580,19 @@ LL | | }
    | |_- not a `const fn`
 
 error: `#[repr(align(...))]` is not supported on function items
-  --> $DIR/malformed-attrs.rs:48:1
+  --> $DIR/malformed-attrs.rs:49:1
    |
 LL | #[repr]
    | ^^^^^^^
    |
-help: use `#[align(...)]` instead
-  --> $DIR/malformed-attrs.rs:48:1
+help: use `#[rustc_align(...)]` instead
+  --> $DIR/malformed-attrs.rs:49:1
    |
 LL | #[repr]
    | ^^^^^^^
 
 warning: `#[diagnostic::do_not_recommend]` does not expect any arguments
-  --> $DIR/malformed-attrs.rs:149:1
+  --> $DIR/malformed-attrs.rs:150:1
    |
 LL | #[diagnostic::do_not_recommend()]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -609,7 +600,7 @@ LL | #[diagnostic::do_not_recommend()]
    = note: `#[warn(malformed_diagnostic_attributes)]` on by default
 
 warning: missing options for `on_unimplemented` attribute
-  --> $DIR/malformed-attrs.rs:138:1
+  --> $DIR/malformed-attrs.rs:139:1
    |
 LL | #[diagnostic::on_unimplemented]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -617,7 +608,7 @@ LL | #[diagnostic::on_unimplemented]
    = help: at least one of the `message`, `note` and `label` options are expected
 
 warning: malformed `on_unimplemented` attribute
-  --> $DIR/malformed-attrs.rs:140:1
+  --> $DIR/malformed-attrs.rs:141:1
    |
 LL | #[diagnostic::on_unimplemented = 1]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ invalid option found here
@@ -625,7 +616,7 @@ LL | #[diagnostic::on_unimplemented = 1]
    = help: only `message`, `note` and `label` are allowed as options
 
 error: valid forms for the attribute are `#[inline(always|never)]` and `#[inline]`
-  --> $DIR/malformed-attrs.rs:53:1
+  --> $DIR/malformed-attrs.rs:54:1
    |
 LL | #[inline = 5]
    | ^^^^^^^^^^^^^
@@ -634,7 +625,7 @@ LL | #[inline = 5]
    = note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
 
 error: valid forms for the attribute are `#[ignore = "reason"]` and `#[ignore]`
-  --> $DIR/malformed-attrs.rs:94:1
+  --> $DIR/malformed-attrs.rs:95:1
    |
 LL | #[ignore()]
    | ^^^^^^^^^^^
@@ -643,7 +634,7 @@ LL | #[ignore()]
    = note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
 
 error: valid forms for the attribute are `#[ignore = "reason"]` and `#[ignore]`
-  --> $DIR/malformed-attrs.rs:223:1
+  --> $DIR/malformed-attrs.rs:224:1
    |
 LL | #[ignore = 1]
    | ^^^^^^^^^^^^^
@@ -652,7 +643,7 @@ LL | #[ignore = 1]
    = note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
 
 error[E0308]: mismatched types
-  --> $DIR/malformed-attrs.rs:111:23
+  --> $DIR/malformed-attrs.rs:112:23
    |
 LL | fn test() {
    |          - help: a return type might be missing here: `-> _`
@@ -660,7 +651,7 @@ LL |     #[coroutine = 63] || {}
    |                       ^^^^^ expected `()`, found coroutine
    |
    = note: expected unit type `()`
-              found coroutine `{coroutine@$DIR/malformed-attrs.rs:111:23: 111:25}`
+              found coroutine `{coroutine@$DIR/malformed-attrs.rs:112:23: 112:25}`
 
 error: aborting due to 75 previous errors; 3 warnings emitted
 
diff --git a/tests/ui/attributes/malformed-fn-align.rs b/tests/ui/attributes/malformed-fn-align.rs
index e06e6116842..cf143b28e54 100644
--- a/tests/ui/attributes/malformed-fn-align.rs
+++ b/tests/ui/attributes/malformed-fn-align.rs
@@ -1,49 +1,54 @@
+// ignore-tidy-linelength
+
+// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
+#![feature(rustc_attrs)]
 #![feature(fn_align)]
+
 #![crate_type = "lib"]
 
 trait MyTrait {
-    #[align] //~ ERROR malformed `align` attribute input
+    #[rustc_align] //~ ERROR malformed `rustc_align` attribute input
     fn myfun1();
 
-    #[align(1, 2)] //~ ERROR malformed `align` attribute input
+    #[rustc_align(1, 2)] //~ ERROR malformed `rustc_align` attribute input
     fn myfun2();
 }
 
-#[align = 16] //~ ERROR malformed `align` attribute input
+#[rustc_align = 16] //~ ERROR malformed `rustc_align` attribute input
 fn f1() {}
 
-#[align("hello")] //~ ERROR invalid alignment value: not an unsuffixed integer
+#[rustc_align("hello")] //~ ERROR invalid alignment value: not an unsuffixed integer
 fn f2() {}
 
-#[align(0)] //~ ERROR invalid alignment value: not a power of two
+#[rustc_align(0)] //~ ERROR invalid alignment value: not a power of two
 fn f3() {}
 
 #[repr(align(16))] //~ ERROR `#[repr(align(...))]` is not supported on function items
 fn f4() {}
 
-#[align(-1)] //~ ERROR expected unsuffixed literal, found `-`
+#[rustc_align(-1)] //~ ERROR expected unsuffixed literal, found `-`
 fn f5() {}
 
-#[align(3)] //~ ERROR invalid alignment value: not a power of two
+#[rustc_align(3)] //~ ERROR invalid alignment value: not a power of two
 fn f6() {}
 
-#[align(4usize)] //~ ERROR invalid alignment value: not an unsuffixed integer [E0589]
+#[rustc_align(4usize)] //~ ERROR invalid alignment value: not an unsuffixed integer [E0589]
 //~^ ERROR suffixed literals are not allowed in attributes
 fn f7() {}
 
-#[align(16)]
-#[align(3)] //~ ERROR invalid alignment value: not a power of two
-#[align(16)]
+#[rustc_align(16)]
+#[rustc_align(3)] //~ ERROR invalid alignment value: not a power of two
+#[rustc_align(16)]
 fn f8() {}
 
-#[align(16)] //~ ERROR `#[align(...)]` is not supported on struct items
+#[rustc_align(16)] //~ ERROR `#[rustc_align(...)]` is not supported on struct items
 struct S1;
 
-#[align(32)] //~ ERROR `#[align(...)]` should be applied to a function item
+#[rustc_align(32)] //~ ERROR `#[rustc_align(...)]` should be applied to a function item
 const FOO: i32 = 42;
 
-#[align(32)] //~ ERROR `#[align(...)]` should be applied to a function item
+#[rustc_align(32)] //~ ERROR `#[rustc_align(...)]` should be applied to a function item
 mod test {}
 
-#[align(32)] //~ ERROR `#[align(...)]` should be applied to a function item
+#[rustc_align(32)] //~ ERROR `#[rustc_align(...)]` should be applied to a function item
 use ::std::iter;
diff --git a/tests/ui/attributes/malformed-fn-align.stderr b/tests/ui/attributes/malformed-fn-align.stderr
index af3625b1f3b..d995a7bf070 100644
--- a/tests/ui/attributes/malformed-fn-align.stderr
+++ b/tests/ui/attributes/malformed-fn-align.stderr
@@ -1,119 +1,119 @@
 error: expected unsuffixed literal, found `-`
-  --> $DIR/malformed-fn-align.rs:24:9
+  --> $DIR/malformed-fn-align.rs:29:15
    |
-LL | #[align(-1)]
-   |         ^
+LL | #[rustc_align(-1)]
+   |               ^
 
 error: suffixed literals are not allowed in attributes
-  --> $DIR/malformed-fn-align.rs:30:9
+  --> $DIR/malformed-fn-align.rs:35:15
    |
-LL | #[align(4usize)]
-   |         ^^^^^^
+LL | #[rustc_align(4usize)]
+   |               ^^^^^^
    |
    = help: instead of using a suffixed literal (`1u8`, `1.0f32`, etc.), use an unsuffixed version (`1`, `1.0`, etc.)
 
-error[E0539]: malformed `align` attribute input
-  --> $DIR/malformed-fn-align.rs:5:5
+error[E0539]: malformed `rustc_align` attribute input
+  --> $DIR/malformed-fn-align.rs:10:5
    |
-LL |     #[align]
-   |     ^^^^^^^^
+LL |     #[rustc_align]
+   |     ^^^^^^^^^^^^^^
    |     |
    |     expected this to be a list
-   |     help: must be of the form: `#[align(<alignment in bytes>)]`
+   |     help: must be of the form: `#[rustc_align(<alignment in bytes>)]`
 
-error[E0805]: malformed `align` attribute input
-  --> $DIR/malformed-fn-align.rs:8:5
+error[E0805]: malformed `rustc_align` attribute input
+  --> $DIR/malformed-fn-align.rs:13:5
    |
-LL |     #[align(1, 2)]
-   |     ^^^^^^^------^
-   |     |      |
-   |     |      expected a single argument here
-   |     help: must be of the form: `#[align(<alignment in bytes>)]`
+LL |     #[rustc_align(1, 2)]
+   |     ^^^^^^^^^^^^^------^
+   |     |            |
+   |     |            expected a single argument here
+   |     help: must be of the form: `#[rustc_align(<alignment in bytes>)]`
 
-error[E0539]: malformed `align` attribute input
-  --> $DIR/malformed-fn-align.rs:12:1
+error[E0539]: malformed `rustc_align` attribute input
+  --> $DIR/malformed-fn-align.rs:17:1
    |
-LL | #[align = 16]
-   | ^^^^^^^^^^^^^
+LL | #[rustc_align = 16]
+   | ^^^^^^^^^^^^^^^^^^^
    | |
    | expected this to be a list
-   | help: must be of the form: `#[align(<alignment in bytes>)]`
+   | help: must be of the form: `#[rustc_align(<alignment in bytes>)]`
 
 error[E0589]: invalid alignment value: not an unsuffixed integer
-  --> $DIR/malformed-fn-align.rs:15:9
+  --> $DIR/malformed-fn-align.rs:20:15
    |
-LL | #[align("hello")]
-   |         ^^^^^^^
+LL | #[rustc_align("hello")]
+   |               ^^^^^^^
 
 error[E0589]: invalid alignment value: not a power of two
-  --> $DIR/malformed-fn-align.rs:18:9
+  --> $DIR/malformed-fn-align.rs:23:15
    |
-LL | #[align(0)]
-   |         ^
+LL | #[rustc_align(0)]
+   |               ^
 
 error[E0589]: invalid alignment value: not a power of two
-  --> $DIR/malformed-fn-align.rs:27:9
+  --> $DIR/malformed-fn-align.rs:32:15
    |
-LL | #[align(3)]
-   |         ^
+LL | #[rustc_align(3)]
+   |               ^
 
 error[E0589]: invalid alignment value: not an unsuffixed integer
-  --> $DIR/malformed-fn-align.rs:30:9
+  --> $DIR/malformed-fn-align.rs:35:15
    |
-LL | #[align(4usize)]
-   |         ^^^^^^
+LL | #[rustc_align(4usize)]
+   |               ^^^^^^
 
 error[E0589]: invalid alignment value: not a power of two
-  --> $DIR/malformed-fn-align.rs:35:9
+  --> $DIR/malformed-fn-align.rs:40:15
    |
-LL | #[align(3)]
-   |         ^
+LL | #[rustc_align(3)]
+   |               ^
 
 error: `#[repr(align(...))]` is not supported on function items
-  --> $DIR/malformed-fn-align.rs:21:8
+  --> $DIR/malformed-fn-align.rs:26:8
    |
 LL | #[repr(align(16))]
    |        ^^^^^^^^^
    |
-help: use `#[align(...)]` instead
-  --> $DIR/malformed-fn-align.rs:21:8
+help: use `#[rustc_align(...)]` instead
+  --> $DIR/malformed-fn-align.rs:26:8
    |
 LL | #[repr(align(16))]
    |        ^^^^^^^^^
 
-error: `#[align(...)]` is not supported on struct items
-  --> $DIR/malformed-fn-align.rs:39:1
+error: `#[rustc_align(...)]` is not supported on struct items
+  --> $DIR/malformed-fn-align.rs:44:1
    |
-LL | #[align(16)]
-   | ^^^^^^^^^^^^
+LL | #[rustc_align(16)]
+   | ^^^^^^^^^^^^^^^^^^
    |
 help: use `#[repr(align(...))]` instead
    |
-LL - #[align(16)]
+LL - #[rustc_align(16)]
 LL + #[repr(align(16))]
    |
 
-error: `#[align(...)]` should be applied to a function item
-  --> $DIR/malformed-fn-align.rs:42:1
+error: `#[rustc_align(...)]` should be applied to a function item
+  --> $DIR/malformed-fn-align.rs:47:1
    |
-LL | #[align(32)]
-   | ^^^^^^^^^^^^
+LL | #[rustc_align(32)]
+   | ^^^^^^^^^^^^^^^^^^
 LL | const FOO: i32 = 42;
    | -------------------- not a function item
 
-error: `#[align(...)]` should be applied to a function item
-  --> $DIR/malformed-fn-align.rs:45:1
+error: `#[rustc_align(...)]` should be applied to a function item
+  --> $DIR/malformed-fn-align.rs:50:1
    |
-LL | #[align(32)]
-   | ^^^^^^^^^^^^
+LL | #[rustc_align(32)]
+   | ^^^^^^^^^^^^^^^^^^
 LL | mod test {}
    | ----------- not a function item
 
-error: `#[align(...)]` should be applied to a function item
-  --> $DIR/malformed-fn-align.rs:48:1
+error: `#[rustc_align(...)]` should be applied to a function item
+  --> $DIR/malformed-fn-align.rs:53:1
    |
-LL | #[align(32)]
-   | ^^^^^^^^^^^^
+LL | #[rustc_align(32)]
+   | ^^^^^^^^^^^^^^^^^^
 LL | use ::std::iter;
    | ---------------- not a function item
 
diff --git a/tests/ui/borrowck/copy-overflow.rs b/tests/ui/borrowck/copy-overflow.rs
new file mode 100644
index 00000000000..5aa1afdee68
--- /dev/null
+++ b/tests/ui/borrowck/copy-overflow.rs
@@ -0,0 +1,16 @@
+// Regression test for <https://github.com/rust-lang/rust/issues/144165>.
+
+// We were previously suppressing the copy error in the `Clone` impl because we assumed
+// that the only way we get `Copy` ambiguity errors was due to incoherent impls. This is
+// not true, since ambiguities can be encountered due to overflows (among other ways).
+
+struct S<T: 'static>(Option<&'static T>);
+
+impl<T: 'static> Copy for S<T> where S<T>: Copy + Clone {}
+impl<T: 'static> Clone for S<T> {
+    fn clone(&self) -> Self {
+        *self
+        //~^ ERROR cannot move out of `*self` which is behind a shared reference
+    }
+}
+fn main() {}
diff --git a/tests/ui/borrowck/copy-overflow.stderr b/tests/ui/borrowck/copy-overflow.stderr
new file mode 100644
index 00000000000..3f601276f8f
--- /dev/null
+++ b/tests/ui/borrowck/copy-overflow.stderr
@@ -0,0 +1,15 @@
+error[E0507]: cannot move out of `*self` which is behind a shared reference
+  --> $DIR/copy-overflow.rs:12:9
+   |
+LL |         *self
+   |         ^^^^^ move occurs because `*self` has type `S<T>`, which does not implement the `Copy` trait
+   |
+help: consider cloning the value if the performance cost is acceptable
+   |
+LL -         *self
+LL +         self.clone()
+   |
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0507`.
diff --git a/tests/ui/const-generics/generic_const_exprs/type-alias-bounds.neg.stderr b/tests/ui/const-generics/generic_const_exprs/type-alias-bounds.neg.stderr
index fa12dd14753..364fecb96ea 100644
--- a/tests/ui/const-generics/generic_const_exprs/type-alias-bounds.neg.stderr
+++ b/tests/ui/const-generics/generic_const_exprs/type-alias-bounds.neg.stderr
@@ -10,8 +10,14 @@ note: required by a bound in `ct_unused_0::AliasConstUnused`
 LL |     type AliasConstUnused<T: Copy> = (T, I32<{ DATA }>);
    |                              ^^^^ required by this bound in `AliasConstUnused`
 
+error[E0080]: entering unreachable code
+  --> $DIR/type-alias-bounds.rs:29:52
+   |
+LL |     type AliasConstUnused where String: Copy = I32<{ 0; 0 }>;
+   |                                                    ^^^^^^^^ evaluation of `ct_unused_1::AliasConstUnused::{constant#0}` failed here
+
 error[E0277]: the trait bound `String: Copy` is not satisfied
-  --> $DIR/type-alias-bounds.rs:31:12
+  --> $DIR/type-alias-bounds.rs:32:12
    |
 LL |     let _: AliasConstUnused;
    |            ^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `String`
@@ -23,41 +29,42 @@ LL |     type AliasConstUnused where String: Copy = I32<{ 0; 0 }>;
    |                                         ^^^^ required by this bound in `AliasConstUnused`
 
 error[E0277]: the trait bound `String: Copy` is not satisfied
-  --> $DIR/type-alias-bounds.rs:39:12
+  --> $DIR/type-alias-bounds.rs:40:12
    |
 LL |     let _: AliasFnUnused<String>;
    |            ^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `String`
    |
 note: required by a bound in `AliasFnUnused`
-  --> $DIR/type-alias-bounds.rs:36:27
+  --> $DIR/type-alias-bounds.rs:37:27
    |
 LL |     type AliasFnUnused<T: Copy> = (T, I32<{ code() }>);
    |                           ^^^^ required by this bound in `AliasFnUnused`
 
 error[E0277]: the trait bound `String: Copy` is not satisfied
-  --> $DIR/type-alias-bounds.rs:57:12
+  --> $DIR/type-alias-bounds.rs:58:12
    |
 LL |     let _: AliasAssocConstUsed<String>;
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `String`
    |
 note: required by a bound in `AliasAssocConstUsed`
-  --> $DIR/type-alias-bounds.rs:55:41
+  --> $DIR/type-alias-bounds.rs:56:41
    |
 LL |     type AliasAssocConstUsed<T: Trait + Copy> = I32<{ T::DATA }>;
    |                                         ^^^^ required by this bound in `AliasAssocConstUsed`
 
 error[E0277]: the trait bound `String: Copy` is not satisfied
-  --> $DIR/type-alias-bounds.rs:65:12
+  --> $DIR/type-alias-bounds.rs:66:12
    |
 LL |     let _: AliasFnUsed<String>;
    |            ^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `String`
    |
 note: required by a bound in `AliasFnUsed`
-  --> $DIR/type-alias-bounds.rs:62:33
+  --> $DIR/type-alias-bounds.rs:63:33
    |
 LL |     type AliasFnUsed<T: Trait + Copy> = I32<{ code::<T>() }>;
    |                                 ^^^^ required by this bound in `AliasFnUsed`
 
-error: aborting due to 5 previous errors
+error: aborting due to 6 previous errors
 
-For more information about this error, try `rustc --explain E0277`.
+Some errors have detailed explanations: E0080, E0277.
+For more information about an error, try `rustc --explain E0080`.
diff --git a/tests/ui/const-generics/generic_const_exprs/type-alias-bounds.rs b/tests/ui/const-generics/generic_const_exprs/type-alias-bounds.rs
index f16e646129c..775b28f8c73 100644
--- a/tests/ui/const-generics/generic_const_exprs/type-alias-bounds.rs
+++ b/tests/ui/const-generics/generic_const_exprs/type-alias-bounds.rs
@@ -27,6 +27,7 @@ fn ct_unused_0() {
 fn ct_unused_1() {
     #[allow(trivial_bounds)]
     type AliasConstUnused where String: Copy = I32<{ 0; 0 }>;
+    //[neg]~^ ERROR entering unreachable code
     #[cfg(neg)]
     let _: AliasConstUnused;
     //[neg]~^ ERROR the trait bound `String: Copy` is not satisfied
diff --git a/tests/ui/consts/const-try-feature-gate.rs b/tests/ui/consts/const-try-feature-gate.rs
index 09985079e8e..4a98185a18a 100644
--- a/tests/ui/consts/const-try-feature-gate.rs
+++ b/tests/ui/consts/const-try-feature-gate.rs
@@ -4,6 +4,8 @@ const fn t() -> Option<()> {
     Some(())?;
     //~^ ERROR `?` is not allowed
     //~| ERROR `?` is not allowed
+    //~| ERROR `Try` is not yet stable as a const trait
+    //~| ERROR `FromResidual` is not yet stable as a const trait
     None
 }
 
diff --git a/tests/ui/consts/const-try-feature-gate.stderr b/tests/ui/consts/const-try-feature-gate.stderr
index 0ad19d05b38..62a4a5fba4f 100644
--- a/tests/ui/consts/const-try-feature-gate.stderr
+++ b/tests/ui/consts/const-try-feature-gate.stderr
@@ -1,19 +1,47 @@
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
+error[E0658]: `?` is not allowed on `Option<()>` in constant functions
   --> $DIR/const-try-feature-gate.rs:4:5
    |
 LL |     Some(())?;
    |     ^^^^^^^^^
    |
    = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
+   = note: see issue #143874 <https://github.com/rust-lang/rust/issues/143874> for more information
+   = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable
+   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
+error: `Try` is not yet stable as a const trait
+  --> $DIR/const-try-feature-gate.rs:4:5
+   |
+LL |     Some(())?;
+   |     ^^^^^^^^^
+   |
+help: add `#![feature(const_try)]` to the crate attributes to enable
+   |
+LL + #![feature(const_try)]
+   |
+
+error[E0658]: `?` is not allowed on `Option<()>` in constant functions
   --> $DIR/const-try-feature-gate.rs:4:5
    |
 LL |     Some(())?;
    |     ^^^^^^^^^
    |
    = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
+   = note: see issue #143874 <https://github.com/rust-lang/rust/issues/143874> for more information
+   = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable
+   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
+
+error: `FromResidual` is not yet stable as a const trait
+  --> $DIR/const-try-feature-gate.rs:4:5
+   |
+LL |     Some(())?;
+   |     ^^^^^^^^^
+   |
+help: add `#![feature(const_try)]` to the crate attributes to enable
+   |
+LL + #![feature(const_try)]
+   |
 
-error: aborting due to 2 previous errors
+error: aborting due to 4 previous errors
 
-For more information about this error, try `rustc --explain E0015`.
+For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/consts/const-try.rs b/tests/ui/consts/const-try.rs
index e13fad78441..152400d702e 100644
--- a/tests/ui/consts/const-try.rs
+++ b/tests/ui/consts/const-try.rs
@@ -1,4 +1,6 @@
-//@ compile-flags: -Znext-solver
+//@ check-pass
+//@ revisions: current next
+//@[next] compile-flags: -Znext-solver
 
 // Demonstrates what's needed to make use of `?` in const contexts.
 
@@ -13,14 +15,12 @@ struct TryMe;
 struct Error;
 
 impl const FromResidual<Error> for TryMe {
-    //~^ ERROR const `impl` for trait `FromResidual` which is not `const`
     fn from_residual(residual: Error) -> Self {
         TryMe
     }
 }
 
 impl const Try for TryMe {
-    //~^ ERROR const `impl` for trait `Try` which is not `const`
     type Output = ();
     type Residual = Error;
     fn from_output(output: Self::Output) -> Self {
@@ -33,8 +33,6 @@ impl const Try for TryMe {
 
 const fn t() -> TryMe {
     TryMe?;
-    //~^ ERROR `?` is not allowed on
-    //~| ERROR `?` is not allowed on
     TryMe
 }
 
diff --git a/tests/ui/consts/const-try.stderr b/tests/ui/consts/const-try.stderr
deleted file mode 100644
index 7004ea3e6db..00000000000
--- a/tests/ui/consts/const-try.stderr
+++ /dev/null
@@ -1,37 +0,0 @@
-error: const `impl` for trait `FromResidual` which is not `const`
-  --> $DIR/const-try.rs:15:12
-   |
-LL | impl const FromResidual<Error> for TryMe {
-   |            ^^^^^^^^^^^^^^^^^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
-error: const `impl` for trait `Try` which is not `const`
-  --> $DIR/const-try.rs:22:12
-   |
-LL | impl const Try for TryMe {
-   |            ^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
-error[E0015]: `?` is not allowed on `TryMe` in constant functions
-  --> $DIR/const-try.rs:35:5
-   |
-LL |     TryMe?;
-   |     ^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `TryMe` in constant functions
-  --> $DIR/const-try.rs:35:5
-   |
-LL |     TryMe?;
-   |     ^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0015`.
diff --git a/tests/ui/consts/const_transmute_type_id6.rs b/tests/ui/consts/const_transmute_type_id6.rs
new file mode 100644
index 00000000000..668eb0bb2b0
--- /dev/null
+++ b/tests/ui/consts/const_transmute_type_id6.rs
@@ -0,0 +1,16 @@
+//! Test that we do not ICE and that we do report an error
+//! when placing non-TypeId provenance into a TypeId.
+
+#![feature(const_trait_impl, const_cmp)]
+
+use std::any::TypeId;
+use std::mem::transmute;
+
+const X: bool = {
+    let a = ();
+    let id: TypeId = unsafe { transmute([&raw const a; 16 / size_of::<*const ()>()]) };
+    id == id
+    //~^ ERROR: invalid `TypeId` value: not all bytes carry type id metadata
+};
+
+fn main() {}
diff --git a/tests/ui/consts/const_transmute_type_id6.stderr b/tests/ui/consts/const_transmute_type_id6.stderr
new file mode 100644
index 00000000000..f5d90256e7c
--- /dev/null
+++ b/tests/ui/consts/const_transmute_type_id6.stderr
@@ -0,0 +1,15 @@
+error[E0080]: invalid `TypeId` value: not all bytes carry type id metadata
+  --> $DIR/const_transmute_type_id6.rs:12:5
+   |
+LL |     id == id
+   |     ^^^^^^^^ evaluation of `X` failed inside this call
+   |
+note: inside `<TypeId as PartialEq>::eq`
+  --> $SRC_DIR/core/src/any.rs:LL:COL
+note: inside `<TypeId as PartialEq>::eq::compiletime`
+  --> $SRC_DIR/core/src/any.rs:LL:COL
+   = note: this error originates in the macro `$crate::intrinsics::const_eval_select` which comes from the expansion of the macro `crate::intrinsics::const_eval_select` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 1 previous error
+
+For more information about this error, try `rustc --explain E0080`.
diff --git a/tests/ui/consts/control-flow/try.rs b/tests/ui/consts/control-flow/try.rs
index 67083e1a39b..6d762f9194e 100644
--- a/tests/ui/consts/control-flow/try.rs
+++ b/tests/ui/consts/control-flow/try.rs
@@ -1,11 +1,12 @@
-// The `?` operator is still not const-evaluatable because it calls `From::from` on the error
-// variant.
+//@ check-pass
+
+#![allow(dead_code)]
+#![feature(const_trait_impl)]
+#![feature(const_try)]
 
 const fn opt() -> Option<i32> {
     let x = Some(2);
     x?;
-    //~^ ERROR: `?` is not allowed
-    //~| ERROR: `?` is not allowed
     None
 }
 
diff --git a/tests/ui/consts/control-flow/try.stderr b/tests/ui/consts/control-flow/try.stderr
deleted file mode 100644
index 62a3e3ce6bc..00000000000
--- a/tests/ui/consts/control-flow/try.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0015]: `?` is not allowed on `Option<i32>` in constant functions
-  --> $DIR/try.rs:6:5
-   |
-LL |     x?;
-   |     ^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `Option<i32>` in constant functions
-  --> $DIR/try.rs:6:5
-   |
-LL |     x?;
-   |     ^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0015`.
diff --git a/tests/ui/consts/try-operator.rs b/tests/ui/consts/try-operator.rs
index 352dbeefa8a..59d9fcb1cbd 100644
--- a/tests/ui/consts/try-operator.rs
+++ b/tests/ui/consts/try-operator.rs
@@ -1,9 +1,8 @@
-//@ known-bug: #110395
+//@ run-pass
 
 #![feature(try_trait_v2)]
 #![feature(const_trait_impl)]
 #![feature(const_try)]
-#![feature(const_convert)]
 
 fn main() {
     const fn result() -> Result<bool, ()> {
diff --git a/tests/ui/consts/try-operator.stderr b/tests/ui/consts/try-operator.stderr
deleted file mode 100644
index fc37039d260..00000000000
--- a/tests/ui/consts/try-operator.stderr
+++ /dev/null
@@ -1,42 +0,0 @@
-error[E0635]: unknown feature `const_convert`
-  --> $DIR/try-operator.rs:6:12
-   |
-LL | #![feature(const_convert)]
-   |            ^^^^^^^^^^^^^
-
-error[E0015]: `?` is not allowed on `Result<(), ()>` in constant functions
-  --> $DIR/try-operator.rs:10:9
-   |
-LL |         Err(())?;
-   |         ^^^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `Result<bool, ()>` in constant functions
-  --> $DIR/try-operator.rs:10:9
-   |
-LL |         Err(())?;
-   |         ^^^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
-  --> $DIR/try-operator.rs:18:9
-   |
-LL |         None?;
-   |         ^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
-  --> $DIR/try-operator.rs:18:9
-   |
-LL |         None?;
-   |         ^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 5 previous errors
-
-Some errors have detailed explanations: E0015, E0635.
-For more information about an error, try `rustc --explain E0015`.
diff --git a/tests/ui/feature-gates/feature-gate-fn_align.rs b/tests/ui/feature-gates/feature-gate-fn_align.rs
index b6c300e5cbe..36e17c4a8dd 100644
--- a/tests/ui/feature-gates/feature-gate-fn_align.rs
+++ b/tests/ui/feature-gates/feature-gate-fn_align.rs
@@ -1,12 +1,16 @@
 #![crate_type = "lib"]
 
-#[align(16)]
-//~^ ERROR the `#[align]` attribute is an experimental feature
+// ignore-tidy-linelength
+
+// FIXME(#82232, #143834): temporarily renamed to mitigate `#[align]` nameres ambiguity
+
+#[rustc_align(16)]
+//~^ ERROR the `#[rustc_align]` attribute is an experimental feature
 fn requires_alignment() {}
 
 trait MyTrait {
-    #[align]
-    //~^ ERROR the `#[align]` attribute is an experimental feature
-    //~| ERROR malformed `align` attribute input
+    #[rustc_align]
+    //~^ ERROR the `#[rustc_align]` attribute is an experimental feature
+    //~| ERROR malformed `rustc_align` attribute input
     fn myfun();
 }
diff --git a/tests/ui/feature-gates/feature-gate-fn_align.stderr b/tests/ui/feature-gates/feature-gate-fn_align.stderr
index 921cf08435c..6196f4f298f 100644
--- a/tests/ui/feature-gates/feature-gate-fn_align.stderr
+++ b/tests/ui/feature-gates/feature-gate-fn_align.stderr
@@ -1,31 +1,31 @@
-error[E0658]: the `#[align]` attribute is an experimental feature
-  --> $DIR/feature-gate-fn_align.rs:3:1
+error[E0658]: the `#[rustc_align]` attribute is an experimental feature
+  --> $DIR/feature-gate-fn_align.rs:7:1
    |
-LL | #[align(16)]
-   | ^^^^^^^^^^^^
+LL | #[rustc_align(16)]
+   | ^^^^^^^^^^^^^^^^^^
    |
    = note: see issue #82232 <https://github.com/rust-lang/rust/issues/82232> for more information
    = help: add `#![feature(fn_align)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0658]: the `#[align]` attribute is an experimental feature
-  --> $DIR/feature-gate-fn_align.rs:8:5
+error[E0658]: the `#[rustc_align]` attribute is an experimental feature
+  --> $DIR/feature-gate-fn_align.rs:12:5
    |
-LL |     #[align]
-   |     ^^^^^^^^
+LL |     #[rustc_align]
+   |     ^^^^^^^^^^^^^^
    |
    = note: see issue #82232 <https://github.com/rust-lang/rust/issues/82232> for more information
    = help: add `#![feature(fn_align)]` to the crate attributes to enable
    = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
 
-error[E0539]: malformed `align` attribute input
-  --> $DIR/feature-gate-fn_align.rs:8:5
+error[E0539]: malformed `rustc_align` attribute input
+  --> $DIR/feature-gate-fn_align.rs:12:5
    |
-LL |     #[align]
-   |     ^^^^^^^^
+LL |     #[rustc_align]
+   |     ^^^^^^^^^^^^^^
    |     |
    |     expected this to be a list
-   |     help: must be of the form: `#[align(<alignment in bytes>)]`
+   |     help: must be of the form: `#[rustc_align(<alignment in bytes>)]`
 
 error: aborting due to 3 previous errors
 
diff --git a/tests/ui/feature-gates/issue-43106-gating-of-macro_use.rs b/tests/ui/feature-gates/issue-43106-gating-of-macro_use.rs
index 6a7ef793924..0438152ff35 100644
--- a/tests/ui/feature-gates/issue-43106-gating-of-macro_use.rs
+++ b/tests/ui/feature-gates/issue-43106-gating-of-macro_use.rs
@@ -13,7 +13,7 @@ mod macro_escape {
     //~^ ERROR arguments to `macro_use` are not allowed here
 
     #[macro_use = "2700"] struct S;
-    //~^ ERROR malformed `macro_use` attribute
+    //~^ ERROR valid forms for the attribute are `#[macro_use(name1, name2, ...)]` and `#[macro_use]`
 
     #[macro_use] fn f() { }
 
diff --git a/tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr b/tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr
index 8987b87f84e..4da71766837 100644
--- a/tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr
+++ b/tests/ui/feature-gates/issue-43106-gating-of-macro_use.stderr
@@ -16,20 +16,11 @@ error: arguments to `macro_use` are not allowed here
 LL | #![macro_use(my_macro)]
    | ^^^^^^^^^^^^^^^^^^^^^^^
 
-error: malformed `macro_use` attribute input
+error: valid forms for the attribute are `#[macro_use(name1, name2, ...)]` and `#[macro_use]`
   --> $DIR/issue-43106-gating-of-macro_use.rs:15:5
    |
 LL |     #[macro_use = "2700"] struct S;
    |     ^^^^^^^^^^^^^^^^^^^^^
-   |
-help: the following are the possible correct uses
-   |
-LL -     #[macro_use = "2700"] struct S;
-LL +     #[macro_use(name1, name2, ...)] struct S;
-   |
-LL -     #[macro_use = "2700"] struct S;
-LL +     #[macro_use] struct S;
-   |
 
 error: aborting due to 4 previous errors
 
diff --git a/tests/ui/layout/uncomputable-due-to-trivial-bounds-ice-135138.rs b/tests/ui/layout/uncomputable-due-to-trivial-bounds-ice-135138.rs
index 4423b83e24d..8015a2fe081 100644
--- a/tests/ui/layout/uncomputable-due-to-trivial-bounds-ice-135138.rs
+++ b/tests/ui/layout/uncomputable-due-to-trivial-bounds-ice-135138.rs
@@ -5,7 +5,8 @@ where
     str: Sized,
 {
     [(); { let _a: Option<str> = None; 0 }];
-    //~^ ERROR the type `Option<str>` has an unknown layout
+    //~^ ERROR entering unreachable code
+    //~| NOTE evaluation of `return_str::{constant#0}` failed here
 }
 
 fn main() {}
diff --git a/tests/ui/layout/uncomputable-due-to-trivial-bounds-ice-135138.stderr b/tests/ui/layout/uncomputable-due-to-trivial-bounds-ice-135138.stderr
index 43fe9e3a7a7..cad73b603c1 100644
--- a/tests/ui/layout/uncomputable-due-to-trivial-bounds-ice-135138.stderr
+++ b/tests/ui/layout/uncomputable-due-to-trivial-bounds-ice-135138.stderr
@@ -1,8 +1,8 @@
-error[E0080]: the type `Option<str>` has an unknown layout
-  --> $DIR/uncomputable-due-to-trivial-bounds-ice-135138.rs:7:16
+error[E0080]: entering unreachable code
+  --> $DIR/uncomputable-due-to-trivial-bounds-ice-135138.rs:7:10
    |
 LL |     [(); { let _a: Option<str> = None; 0 }];
-   |                ^^ evaluation of `return_str::{constant#0}` failed here
+   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `return_str::{constant#0}` failed here
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/layout/unknown-when-no-type-parameter.rs b/tests/ui/layout/unknown-when-no-type-parameter.rs
index f787998868d..8579593c65c 100644
--- a/tests/ui/layout/unknown-when-no-type-parameter.rs
+++ b/tests/ui/layout/unknown-when-no-type-parameter.rs
@@ -9,9 +9,8 @@ where
     (): Project,
 {
     [(); size_of::<<() as Project>::Assoc>()];
-    //~^ ERROR the type `<() as Project>::Assoc` has an unknown layout
-    //~| NOTE inside `std::mem::size_of::<<() as Project>::Assoc>`
-    //~| NOTE failed inside this call
+    //~^ ERROR entering unreachable code
+    //~| NOTE evaluation of `foo::{constant#0}` failed here
 }
 
 fn main() {}
diff --git a/tests/ui/layout/unknown-when-no-type-parameter.stderr b/tests/ui/layout/unknown-when-no-type-parameter.stderr
index 9bb42c46ec3..7c382c7a855 100644
--- a/tests/ui/layout/unknown-when-no-type-parameter.stderr
+++ b/tests/ui/layout/unknown-when-no-type-parameter.stderr
@@ -1,11 +1,8 @@
-error[E0080]: the type `<() as Project>::Assoc` has an unknown layout
+error[E0080]: entering unreachable code
   --> $DIR/unknown-when-no-type-parameter.rs:11:10
    |
 LL |     [(); size_of::<<() as Project>::Assoc>()];
-   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `foo::{constant#0}` failed inside this call
-   |
-note: inside `std::mem::size_of::<<() as Project>::Assoc>`
-  --> $SRC_DIR/core/src/mem/mod.rs:LL:COL
+   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `foo::{constant#0}` failed here
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/layout/unknown-when-ptr-metadata-is-DST.rs b/tests/ui/layout/unknown-when-ptr-metadata-is-DST.rs
index 54f339711d5..da11804c226 100644
--- a/tests/ui/layout/unknown-when-ptr-metadata-is-DST.rs
+++ b/tests/ui/layout/unknown-when-ptr-metadata-is-DST.rs
@@ -6,7 +6,8 @@ where
     str: std::ptr::Pointee<Metadata = str>,
 {
     [(); { let _a: Option<&str> = None; 0 }];
-    //~^ ERROR the type `str` has an unknown layout
+    //~^ ERROR entering unreachable code
+    //~| NOTE evaluation of `return_str::{constant#0}` failed here
 }
 
 fn main() {}
diff --git a/tests/ui/layout/unknown-when-ptr-metadata-is-DST.stderr b/tests/ui/layout/unknown-when-ptr-metadata-is-DST.stderr
index fd9eedc9267..888e2574119 100644
--- a/tests/ui/layout/unknown-when-ptr-metadata-is-DST.stderr
+++ b/tests/ui/layout/unknown-when-ptr-metadata-is-DST.stderr
@@ -1,8 +1,8 @@
-error[E0080]: the type `str` has an unknown layout
-  --> $DIR/unknown-when-ptr-metadata-is-DST.rs:8:16
+error[E0080]: entering unreachable code
+  --> $DIR/unknown-when-ptr-metadata-is-DST.rs:8:10
    |
 LL |     [(); { let _a: Option<&str> = None; 0 }];
-   |                ^^ evaluation of `return_str::{constant#0}` failed here
+   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `return_str::{constant#0}` failed here
 
 error: aborting due to 1 previous error
 
diff --git a/tests/ui/lifetimes/elided-lifetime-in-const-param-type.rs b/tests/ui/lifetimes/elided-lifetime-in-const-param-type.rs
new file mode 100644
index 00000000000..cdfd1327eae
--- /dev/null
+++ b/tests/ui/lifetimes/elided-lifetime-in-const-param-type.rs
@@ -0,0 +1,12 @@
+//! Regression test for <https://github.com/rust-lang/rust/issues/143413>
+//! The anonymous lifetime in `c(&())` is desugared by the resolver as an extra lifetime parameter
+//! at the end of the `for` binder. Verify that lowering creates the definition for that extra
+//! lifetime parameter before lowering `c(&())`.
+
+trait D {}
+
+type A = dyn for<const B: c(&())> D;
+//~^ ERROR cannot find type `c` in this scope
+//~| ERROR only lifetime parameters can be used in this context
+
+fn main() {}
diff --git a/tests/ui/lifetimes/elided-lifetime-in-const-param-type.stderr b/tests/ui/lifetimes/elided-lifetime-in-const-param-type.stderr
new file mode 100644
index 00000000000..c7f3c0cc0cd
--- /dev/null
+++ b/tests/ui/lifetimes/elided-lifetime-in-const-param-type.stderr
@@ -0,0 +1,20 @@
+error[E0412]: cannot find type `c` in this scope
+  --> $DIR/elided-lifetime-in-const-param-type.rs:8:27
+   |
+LL | type A = dyn for<const B: c(&())> D;
+   |                           ^ not found in this scope
+
+error[E0658]: only lifetime parameters can be used in this context
+  --> $DIR/elided-lifetime-in-const-param-type.rs:8:24
+   |
+LL | type A = dyn for<const B: c(&())> D;
+   |                        ^
+   |
+   = note: see issue #108185 <https://github.com/rust-lang/rust/issues/108185> for more information
+   = help: add `#![feature(non_lifetime_binders)]` to the crate attributes to enable
+   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
+
+error: aborting due to 2 previous errors
+
+Some errors have detailed explanations: E0412, E0658.
+For more information about an error, try `rustc --explain E0412`.
diff --git a/tests/ui/lint/unused/unused-attr-duplicate.stderr b/tests/ui/lint/unused/unused-attr-duplicate.stderr
index ecc1b7ff5a4..e277f5203c6 100644
--- a/tests/ui/lint/unused/unused-attr-duplicate.stderr
+++ b/tests/ui/lint/unused/unused-attr-duplicate.stderr
@@ -16,18 +16,6 @@ LL | #![deny(unused_attributes)]
    |         ^^^^^^^^^^^^^^^^^
 
 error: unused attribute
-  --> $DIR/unused-attr-duplicate.rs:37:1
-   |
-LL | #[macro_use]
-   | ^^^^^^^^^^^^ help: remove this attribute
-   |
-note: attribute also specified here
-  --> $DIR/unused-attr-duplicate.rs:36:1
-   |
-LL | #[macro_use]
-   | ^^^^^^^^^^^^
-
-error: unused attribute
   --> $DIR/unused-attr-duplicate.rs:55:1
    |
 LL | #[should_panic(expected = "values don't match")]
@@ -129,6 +117,18 @@ LL |     #[macro_export]
    |     ^^^^^^^^^^^^^^^
 
 error: unused attribute
+  --> $DIR/unused-attr-duplicate.rs:37:1
+   |
+LL | #[macro_use]
+   | ^^^^^^^^^^^^ help: remove this attribute
+   |
+note: attribute also specified here
+  --> $DIR/unused-attr-duplicate.rs:36:1
+   |
+LL | #[macro_use]
+   | ^^^^^^^^^^^^
+
+error: unused attribute
   --> $DIR/unused-attr-duplicate.rs:47:1
    |
 LL | #[path = "bar.rs"]
diff --git a/tests/ui/lint/unused/unused-attr-macro-rules.stderr b/tests/ui/lint/unused/unused-attr-macro-rules.stderr
index 4698e381425..1e1211af5e2 100644
--- a/tests/ui/lint/unused/unused-attr-macro-rules.stderr
+++ b/tests/ui/lint/unused/unused-attr-macro-rules.stderr
@@ -1,8 +1,8 @@
-error: `#[macro_use]` only has an effect on `extern crate` and modules
-  --> $DIR/unused-attr-macro-rules.rs:7:1
+error: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
+  --> $DIR/unused-attr-macro-rules.rs:9:1
    |
-LL | #[macro_use]
-   | ^^^^^^^^^^^^
+LL | #[recursion_limit="1"]
+   | ^^^^^^^^^^^^^^^^^^^^^^
    |
 note: the lint level is defined here
   --> $DIR/unused-attr-macro-rules.rs:1:9
@@ -10,11 +10,11 @@ note: the lint level is defined here
 LL | #![deny(unused_attributes)]
    |         ^^^^^^^^^^^^^^^^^
 
-error: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
-  --> $DIR/unused-attr-macro-rules.rs:9:1
+error: `#[macro_use]` only has an effect on `extern crate` and modules
+  --> $DIR/unused-attr-macro-rules.rs:7:1
    |
-LL | #[recursion_limit="1"]
-   | ^^^^^^^^^^^^^^^^^^^^^^
+LL | #[macro_use]
+   | ^^^^^^^^^^^^
 
 error: `#[path]` only has an effect on modules
   --> $DIR/unused-attr-macro-rules.rs:8:1
diff --git a/tests/ui/macros/genercs-in-path-with-prettry-hir.stdout b/tests/ui/macros/genercs-in-path-with-prettry-hir.stdout
index 7c41225f95e..6b0300132b5 100644
--- a/tests/ui/macros/genercs-in-path-with-prettry-hir.stdout
+++ b/tests/ui/macros/genercs-in-path-with-prettry-hir.stdout
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ compile-flags: -Zunpretty=hir
 //@ edition: 2015
diff --git a/tests/ui/macros/macro-use-all-and-none.stderr b/tests/ui/macros/macro-use-all-and-none.stderr
index 00b10dccd00..a5efb065a21 100644
--- a/tests/ui/macros/macro-use-all-and-none.stderr
+++ b/tests/ui/macros/macro-use-all-and-none.stderr
@@ -1,10 +1,9 @@
 warning: unused attribute
-  --> $DIR/macro-use-all-and-none.rs:7:1
+  --> $DIR/macro-use-all-and-none.rs:7:12
    |
 LL | #[macro_use()]
-   | ^^^^^^^^^^^^^^ help: remove this attribute
+   |            ^^ help: remove this attribute
    |
-   = note: attribute `macro_use` with an empty list has no effect
 note: the lint level is defined here
   --> $DIR/macro-use-all-and-none.rs:4:9
    |
diff --git a/tests/ui/macros/macro-use-bad-args-1.rs b/tests/ui/macros/macro-use-bad-args-1.rs
index ec0b64a1095..bfc19981804 100644
--- a/tests/ui/macros/macro-use-bad-args-1.rs
+++ b/tests/ui/macros/macro-use-bad-args-1.rs
@@ -1,6 +1,6 @@
 #![no_std]
 
-#[macro_use(foo(bar))]  //~ ERROR bad macro import
+#[macro_use(foo(bar))]  //~ ERROR malformed `macro_use` attribute input
 extern crate std;
 
 fn main() {}
diff --git a/tests/ui/macros/macro-use-bad-args-1.stderr b/tests/ui/macros/macro-use-bad-args-1.stderr
index 6d2f159a574..2f43d0997df 100644
--- a/tests/ui/macros/macro-use-bad-args-1.stderr
+++ b/tests/ui/macros/macro-use-bad-args-1.stderr
@@ -1,9 +1,20 @@
-error[E0466]: bad macro import
-  --> $DIR/macro-use-bad-args-1.rs:3:13
+error[E0565]: malformed `macro_use` attribute input
+  --> $DIR/macro-use-bad-args-1.rs:3:1
    |
 LL | #[macro_use(foo(bar))]
-   |             ^^^^^^^^
+   | ^^^^^^^^^^^^^^^-----^^
+   |                |
+   |                didn't expect any arguments here
+   |
+help: try changing it to one of the following valid forms of the attribute
+   |
+LL - #[macro_use(foo(bar))]
+LL + #[macro_use(name1, name2, ...)]
+   |
+LL - #[macro_use(foo(bar))]
+LL + #[macro_use]
+   |
 
 error: aborting due to 1 previous error
 
-For more information about this error, try `rustc --explain E0466`.
+For more information about this error, try `rustc --explain E0565`.
diff --git a/tests/ui/macros/macro-use-bad-args-2.rs b/tests/ui/macros/macro-use-bad-args-2.rs
index c5f8f62c186..e328b6285d9 100644
--- a/tests/ui/macros/macro-use-bad-args-2.rs
+++ b/tests/ui/macros/macro-use-bad-args-2.rs
@@ -1,6 +1,6 @@
 #![no_std]
 
-#[macro_use(foo="bar")]  //~ ERROR bad macro import
+#[macro_use(foo="bar")]  //~ ERROR malformed `macro_use` attribute input
 extern crate std;
 
 fn main() {}
diff --git a/tests/ui/macros/macro-use-bad-args-2.stderr b/tests/ui/macros/macro-use-bad-args-2.stderr
index 364f3da6e15..d7b03c93588 100644
--- a/tests/ui/macros/macro-use-bad-args-2.stderr
+++ b/tests/ui/macros/macro-use-bad-args-2.stderr
@@ -1,9 +1,20 @@
-error[E0466]: bad macro import
-  --> $DIR/macro-use-bad-args-2.rs:3:13
+error[E0565]: malformed `macro_use` attribute input
+  --> $DIR/macro-use-bad-args-2.rs:3:1
    |
 LL | #[macro_use(foo="bar")]
-   |             ^^^^^^^^^
+   | ^^^^^^^^^^^^^^^------^^
+   |                |
+   |                didn't expect any arguments here
+   |
+help: try changing it to one of the following valid forms of the attribute
+   |
+LL - #[macro_use(foo="bar")]
+LL + #[macro_use(name1, name2, ...)]
+   |
+LL - #[macro_use(foo="bar")]
+LL + #[macro_use]
+   |
 
 error: aborting due to 1 previous error
 
-For more information about this error, try `rustc --explain E0466`.
+For more information about this error, try `rustc --explain E0565`.
diff --git a/tests/ui/match/issue-82392.stdout b/tests/ui/match/issue-82392.stdout
index a0d83d962e7..3efc964e053 100644
--- a/tests/ui/match/issue-82392.stdout
+++ b/tests/ui/match/issue-82392.stdout
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 // https://github.com/rust-lang/rust/issues/82329
 //@ compile-flags: -Zunpretty=hir,typed
diff --git a/tests/ui/mir/meaningless-bound.rs b/tests/ui/mir/meaningless-bound.rs
new file mode 100644
index 00000000000..c9427e7ece5
--- /dev/null
+++ b/tests/ui/mir/meaningless-bound.rs
@@ -0,0 +1,20 @@
+//! Regression test for #140100 and #140365
+//@compile-flags: -C opt-level=1 -Zvalidate-mir
+
+fn a()
+where
+    b: Sized,
+    //~^ ERROR cannot find type `b` in this scope
+{
+    println!()
+}
+
+fn f() -> &'static str
+where
+    Self: Sized,
+    //~^ ERROR cannot find type `Self` in this scope
+{
+    ""
+}
+
+fn main() {}
diff --git a/tests/ui/mir/meaningless-bound.stderr b/tests/ui/mir/meaningless-bound.stderr
new file mode 100644
index 00000000000..dc08def83b6
--- /dev/null
+++ b/tests/ui/mir/meaningless-bound.stderr
@@ -0,0 +1,19 @@
+error[E0412]: cannot find type `b` in this scope
+  --> $DIR/meaningless-bound.rs:6:5
+   |
+LL |     b: Sized,
+   |     ^ not found in this scope
+
+error[E0411]: cannot find type `Self` in this scope
+  --> $DIR/meaningless-bound.rs:14:5
+   |
+LL | fn f() -> &'static str
+   |    - `Self` not allowed in a function
+LL | where
+LL |     Self: Sized,
+   |     ^^^^ `Self` is only available in impls, traits, and type definitions
+
+error: aborting due to 2 previous errors
+
+Some errors have detailed explanations: E0411, E0412.
+For more information about an error, try `rustc --explain E0411`.
diff --git a/tests/ui/mir/validate/project-into-simd.rs b/tests/ui/mir/validate/project-into-simd.rs
new file mode 100644
index 00000000000..67766c8c4b0
--- /dev/null
+++ b/tests/ui/mir/validate/project-into-simd.rs
@@ -0,0 +1,18 @@
+// Optimized MIR shouldn't have critical call edges
+//
+//@ build-fail
+//@ edition: 2021
+//@ compile-flags: --crate-type=lib
+//@ failure-status: 101
+//@ dont-check-compiler-stderr
+
+#![feature(repr_simd)]
+
+#[repr(simd)]
+pub struct U32x4([u32; 4]);
+
+pub fn f(a: U32x4) -> [u32; 4] {
+    a.0
+    //~^ ERROR broken MIR in Item
+    //~| ERROR Projecting into SIMD type U32x4 is banned by MCP#838
+}
diff --git a/tests/ui/print-request/supported-crate-types.rs b/tests/ui/print-request/supported-crate-types.rs
index c8b4c0c1a41..50185a231ee 100644
--- a/tests/ui/print-request/supported-crate-types.rs
+++ b/tests/ui/print-request/supported-crate-types.rs
@@ -8,6 +8,11 @@
 
 //@ check-pass
 
+// FIXME: musl targets are currently statically linked, but running on a musl host
+// requires dynamic linkage, which in turn changes the supported crate types for
+// x86_64-unknown-linux-musl.
+//@ ignore-musl
+
 //@ revisions: wasm musl linux
 
 //@[wasm] compile-flags: --target=wasm32-unknown-unknown --print=supported-crate-types -Zunstable-options
diff --git a/tests/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs b/tests/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs
index 75640147026..d389f8c861a 100644
--- a/tests/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs
+++ b/tests/ui/privacy/pub-priv-dep/auxiliary/priv_dep.rs
@@ -10,3 +10,9 @@ macro_rules! m {
 pub enum E {
     V1
 }
+
+struct PrivType;
+
+pub type Unit = ();
+pub type PubPub = OtherType;
+pub type PubPriv = PrivType;
diff --git a/tests/ui/privacy/pub-priv-dep/pub-priv1.rs b/tests/ui/privacy/pub-priv-dep/pub-priv1.rs
index b85f2754fb1..eae0f9756a1 100644
--- a/tests/ui/privacy/pub-priv-dep/pub-priv1.rs
+++ b/tests/ui/privacy/pub-priv-dep/pub-priv1.rs
@@ -32,6 +32,33 @@ pub struct PublicType {
     pub other_field: PubType, // Type from public dependency - this is fine
 }
 
+pub struct PublicTuple(
+    pub OtherType,
+    //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface [exported_private_dependencies]
+    OtherType,
+    pub PubType,
+);
+
+pub enum PublicEnum {
+    OtherType,
+    ActualOtherType(OtherType, PubType),
+    //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface [exported_private_dependencies]
+    ActualOtherTypeStruct {
+        field: OtherType,
+        //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface [exported_private_dependencies]
+        other_field: PubType,
+    },
+}
+
+pub struct PublicGenericType<T, U>(pub T, U);
+pub type ReexportedPublicGeneric = PublicGenericType<OtherType, ()>;
+//~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
+pub type ReexportedPrivateGeneric = PublicGenericType<(), OtherType>;
+//~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
+
+pub struct PublicGenericBoundedType<T: OtherTrait>(T);
+//~^ ERROR trait `OtherTrait` from private dependency 'priv_dep' in public interface
+
 impl PublicType {
     pub fn pub_fn_param(param: OtherType) {}
     //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
@@ -46,9 +73,15 @@ pub trait MyPubTrait {
     type Foo: OtherTrait;
     //~^ ERROR trait `OtherTrait` from private dependency 'priv_dep' in public interface
 
-    fn required() -> impl OtherTrait;
+    fn required_impl_trait() -> impl OtherTrait;
 
-    fn provided() -> impl OtherTrait { OtherType }
+    fn provided_impl_trait() -> impl OtherTrait { OtherType }
+
+    fn required_concrete() -> OtherType;
+    //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
+
+    fn provided_concrete() -> OtherType { OtherType }
+    //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
 }
 
 pub trait WithSuperTrait: OtherTrait {}
@@ -67,6 +100,12 @@ impl PubLocalTraitWithAssoc for PrivateAssoc {
 pub fn in_bounds<T: OtherTrait>(x: T) { unimplemented!() }
 //~^ ERROR trait `OtherTrait` from private dependency 'priv_dep' in public interface
 
+pub fn private_return_impl_trait() -> impl OtherTrait { OtherType }
+//~^ ERROR trait `OtherTrait` from private dependency 'priv_dep' in public interface
+
+pub fn private_return() -> OtherType { OtherType }
+//~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
+
 pub fn private_in_generic() -> std::num::Saturating<OtherType> { unimplemented!() }
 //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
 
@@ -79,6 +118,9 @@ pub const CONST: OtherType = OtherType;
 pub type Alias = OtherType;
 //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
 
+pub type AliasOfAlias = priv_dep::PubPub;
+//~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
+
 pub struct PublicWithPrivateImpl;
 
 impl OtherTrait for PublicWithPrivateImpl {}
@@ -90,6 +132,22 @@ impl PubTraitOnPrivate for OtherType {}
 //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
 //~| ERROR type `OtherType` from private dependency 'priv_dep' in public interface
 
+pub struct PublicWithStdImpl;
+
+impl From<OtherType> for PublicWithStdImpl {
+//~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
+    fn from(val: OtherType) -> Self { Self }
+    //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
+}
+
+impl From<PublicWithStdImpl> for OtherType {
+    //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
+    //~| ERROR type `OtherType` from private dependency 'priv_dep' in public interface
+    fn from(val: PublicWithStdImpl) -> Self { Self }
+    //~^ ERROR type `OtherType` from private dependency 'priv_dep' in public interface
+    //~| ERROR type `OtherType` from private dependency 'priv_dep' in public interface
+}
+
 pub struct AllowedPrivType {
     #[allow(exported_private_dependencies)]
     pub allowed: OtherType,
@@ -107,4 +165,13 @@ pub use pm::pm_attr;
 pub use priv_dep::E::V1;
 //~^ ERROR variant `V1` from private dependency 'priv_dep' is re-exported
 
+pub use priv_dep::Unit;
+//~^ ERROR type alias `Unit` from private dependency 'priv_dep' is re-exported
+pub use priv_dep::PubPub;
+//~^ ERROR type alias `PubPub` from private dependency 'priv_dep' is re-exported
+pub use priv_dep::PubPriv;
+//~^ ERROR type alias `PubPriv` from private dependency 'priv_dep' is re-exported
+pub use priv_dep::OtherType as Renamed;
+//~^ ERROR struct `Renamed` from private dependency 'priv_dep' is re-exported
+
 fn main() {}
diff --git a/tests/ui/privacy/pub-priv-dep/pub-priv1.stderr b/tests/ui/privacy/pub-priv-dep/pub-priv1.stderr
index 24bd071567f..e66db53f65d 100644
--- a/tests/ui/privacy/pub-priv-dep/pub-priv1.stderr
+++ b/tests/ui/privacy/pub-priv-dep/pub-priv1.stderr
@@ -11,35 +11,59 @@ LL | #![deny(exported_private_dependencies)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: macro `m` from private dependency 'priv_dep' is re-exported
-  --> $DIR/pub-priv1.rs:98:9
+  --> $DIR/pub-priv1.rs:156:9
    |
 LL | pub use priv_dep::m;
    |         ^^^^^^^^^^^
 
 error: macro `fn_like` from private dependency 'pm' is re-exported
-  --> $DIR/pub-priv1.rs:100:9
+  --> $DIR/pub-priv1.rs:158:9
    |
 LL | pub use pm::fn_like;
    |         ^^^^^^^^^^^
 
 error: derive macro `PmDerive` from private dependency 'pm' is re-exported
-  --> $DIR/pub-priv1.rs:102:9
+  --> $DIR/pub-priv1.rs:160:9
    |
 LL | pub use pm::PmDerive;
    |         ^^^^^^^^^^^^
 
 error: attribute macro `pm_attr` from private dependency 'pm' is re-exported
-  --> $DIR/pub-priv1.rs:104:9
+  --> $DIR/pub-priv1.rs:162:9
    |
 LL | pub use pm::pm_attr;
    |         ^^^^^^^^^^^
 
 error: variant `V1` from private dependency 'priv_dep' is re-exported
-  --> $DIR/pub-priv1.rs:107:9
+  --> $DIR/pub-priv1.rs:165:9
    |
 LL | pub use priv_dep::E::V1;
    |         ^^^^^^^^^^^^^^^
 
+error: type alias `Unit` from private dependency 'priv_dep' is re-exported
+  --> $DIR/pub-priv1.rs:168:9
+   |
+LL | pub use priv_dep::Unit;
+   |         ^^^^^^^^^^^^^^
+
+error: type alias `PubPub` from private dependency 'priv_dep' is re-exported
+  --> $DIR/pub-priv1.rs:170:9
+   |
+LL | pub use priv_dep::PubPub;
+   |         ^^^^^^^^^^^^^^^^
+
+error: type alias `PubPriv` from private dependency 'priv_dep' is re-exported
+  --> $DIR/pub-priv1.rs:172:9
+   |
+LL | pub use priv_dep::PubPriv;
+   |         ^^^^^^^^^^^^^^^^^
+
+error: struct `Renamed` from private dependency 'priv_dep' is re-exported
+  --> $DIR/pub-priv1.rs:174:9
+   |
+LL | pub use priv_dep::OtherType as Renamed;
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
 error: type `OtherType` from private dependency 'priv_dep' in public interface
   --> $DIR/pub-priv1.rs:29:5
    |
@@ -49,82 +73,188 @@ LL |     pub field: OtherType,
 error: type `OtherType` from private dependency 'priv_dep' in public interface
   --> $DIR/pub-priv1.rs:36:5
    |
+LL |     pub OtherType,
+   |     ^^^^^^^^^^^^^
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:44:21
+   |
+LL |     ActualOtherType(OtherType, PubType),
+   |                     ^^^^^^^^^
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:47:9
+   |
+LL |         field: OtherType,
+   |         ^^^^^^^^^^^^^^^^
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:54:1
+   |
+LL | pub type ReexportedPublicGeneric = PublicGenericType<OtherType, ()>;
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:56:1
+   |
+LL | pub type ReexportedPrivateGeneric = PublicGenericType<(), OtherType>;
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: trait `OtherTrait` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:59:1
+   |
+LL | pub struct PublicGenericBoundedType<T: OtherTrait>(T);
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:63:5
+   |
 LL |     pub fn pub_fn_param(param: OtherType) {}
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: type `OtherType` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:39:5
+  --> $DIR/pub-priv1.rs:66:5
    |
 LL |     pub fn pub_fn_return() -> OtherType { OtherType }
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: trait `OtherTrait` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:46:5
+  --> $DIR/pub-priv1.rs:73:5
    |
 LL |     type Foo: OtherTrait;
    |     ^^^^^^^^^^^^^^^^^^^^
 
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:80:5
+   |
+LL |     fn required_concrete() -> OtherType;
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:83:5
+   |
+LL |     fn provided_concrete() -> OtherType { OtherType }
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
 error: trait `OtherTrait` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:54:1
+  --> $DIR/pub-priv1.rs:87:1
    |
 LL | pub trait WithSuperTrait: OtherTrait {}
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: type `OtherType` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:63:5
+  --> $DIR/pub-priv1.rs:96:5
    |
 LL |     type X = OtherType;
    |     ^^^^^^
 
 error: trait `OtherTrait` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:67:1
+  --> $DIR/pub-priv1.rs:100:1
    |
 LL | pub fn in_bounds<T: OtherTrait>(x: T) { unimplemented!() }
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
+error: trait `OtherTrait` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:103:1
+   |
+LL | pub fn private_return_impl_trait() -> impl OtherTrait { OtherType }
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:106:1
+   |
+LL | pub fn private_return() -> OtherType { OtherType }
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
 error: type `OtherType` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:70:1
+  --> $DIR/pub-priv1.rs:109:1
    |
 LL | pub fn private_in_generic() -> std::num::Saturating<OtherType> { unimplemented!() }
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: type `OtherType` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:73:1
+  --> $DIR/pub-priv1.rs:112:1
    |
 LL | pub static STATIC: OtherType = OtherType;
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: type `OtherType` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:76:1
+  --> $DIR/pub-priv1.rs:115:1
    |
 LL | pub const CONST: OtherType = OtherType;
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: type `OtherType` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:79:1
+  --> $DIR/pub-priv1.rs:118:1
    |
 LL | pub type Alias = OtherType;
    | ^^^^^^^^^^^^^^
 
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:121:1
+   |
+LL | pub type AliasOfAlias = priv_dep::PubPub;
+   | ^^^^^^^^^^^^^^^^^^^^^
+
 error: trait `OtherTrait` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:84:1
+  --> $DIR/pub-priv1.rs:126:1
    |
 LL | impl OtherTrait for PublicWithPrivateImpl {}
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: type `OtherType` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:89:1
+  --> $DIR/pub-priv1.rs:131:1
    |
 LL | impl PubTraitOnPrivate for OtherType {}
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: type `OtherType` from private dependency 'priv_dep' in public interface
-  --> $DIR/pub-priv1.rs:89:1
+  --> $DIR/pub-priv1.rs:131:1
    |
 LL | impl PubTraitOnPrivate for OtherType {}
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
-error: aborting due to 20 previous errors
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:137:1
+   |
+LL | impl From<OtherType> for PublicWithStdImpl {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:139:5
+   |
+LL |     fn from(val: OtherType) -> Self { Self }
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:143:1
+   |
+LL | impl From<PublicWithStdImpl> for OtherType {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:143:1
+   |
+LL | impl From<PublicWithStdImpl> for OtherType {
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:146:5
+   |
+LL |     fn from(val: PublicWithStdImpl) -> Self { Self }
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: type `OtherType` from private dependency 'priv_dep' in public interface
+  --> $DIR/pub-priv1.rs:146:5
+   |
+LL |     fn from(val: PublicWithStdImpl) -> Self { Self }
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |
+   = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
+
+error: aborting due to 41 previous errors
 
diff --git a/tests/ui/resolve/underscore-bindings-disambiguators.rs b/tests/ui/resolve/underscore-bindings-disambiguators.rs
new file mode 100644
index 00000000000..8c89b39f859
--- /dev/null
+++ b/tests/ui/resolve/underscore-bindings-disambiguators.rs
@@ -0,0 +1,27 @@
+// Regression test for issue #144168 where some `_` bindings were incorrectly only allowed once per
+// module, failing with "error[E0428]: the name `_` is defined multiple times".
+
+// This weird/complex setup is reduced from `zerocopy-0.8.25` where the issue was encountered.
+
+#![crate_type = "lib"]
+
+macro_rules! impl_for_transmute_from {
+    () => {
+        const _: () = {};
+    };
+}
+
+mod impls {
+    use super::*;
+    impl_for_transmute_from!();
+    impl_for_transmute_from!();
+    const _: () = todo!(); //~ ERROR: evaluation panicked
+    const _: () = todo!(); //~ ERROR: evaluation panicked
+    const _: () = todo!(); //~ ERROR: evaluation panicked
+    const _: () = todo!(); //~ ERROR: evaluation panicked
+    const _: () = todo!(); //~ ERROR: evaluation panicked
+}
+use X as Y; //~ ERROR: unresolved import
+use Z as W; //~ ERROR: unresolved import
+
+const _: () = todo!(); //~ ERROR: evaluation panicked
diff --git a/tests/ui/resolve/underscore-bindings-disambiguators.stderr b/tests/ui/resolve/underscore-bindings-disambiguators.stderr
new file mode 100644
index 00000000000..0c8081a0c56
--- /dev/null
+++ b/tests/ui/resolve/underscore-bindings-disambiguators.stderr
@@ -0,0 +1,70 @@
+error[E0432]: unresolved import `X`
+  --> $DIR/underscore-bindings-disambiguators.rs:24:5
+   |
+LL | use X as Y;
+   |     -^^^^^
+   |     |
+   |     no `X` in the root
+   |     help: a similar name exists in the module: `_`
+
+error[E0432]: unresolved import `Z`
+  --> $DIR/underscore-bindings-disambiguators.rs:25:5
+   |
+LL | use Z as W;
+   |     -^^^^^
+   |     |
+   |     no `Z` in the root
+   |     help: a similar name exists in the module: `_`
+
+error[E0080]: evaluation panicked: not yet implemented
+  --> $DIR/underscore-bindings-disambiguators.rs:18:19
+   |
+LL |     const _: () = todo!();
+   |                   ^^^^^^^ evaluation of `impls::_` failed here
+   |
+   = note: this error originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0080]: evaluation panicked: not yet implemented
+  --> $DIR/underscore-bindings-disambiguators.rs:19:19
+   |
+LL |     const _: () = todo!();
+   |                   ^^^^^^^ evaluation of `impls::_` failed here
+   |
+   = note: this error originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0080]: evaluation panicked: not yet implemented
+  --> $DIR/underscore-bindings-disambiguators.rs:20:19
+   |
+LL |     const _: () = todo!();
+   |                   ^^^^^^^ evaluation of `impls::_` failed here
+   |
+   = note: this error originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0080]: evaluation panicked: not yet implemented
+  --> $DIR/underscore-bindings-disambiguators.rs:21:19
+   |
+LL |     const _: () = todo!();
+   |                   ^^^^^^^ evaluation of `impls::_` failed here
+   |
+   = note: this error originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0080]: evaluation panicked: not yet implemented
+  --> $DIR/underscore-bindings-disambiguators.rs:22:19
+   |
+LL |     const _: () = todo!();
+   |                   ^^^^^^^ evaluation of `impls::_` failed here
+   |
+   = note: this error originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0080]: evaluation panicked: not yet implemented
+  --> $DIR/underscore-bindings-disambiguators.rs:27:15
+   |
+LL | const _: () = todo!();
+   |               ^^^^^^^ evaluation of `_` failed here
+   |
+   = note: this error originates in the macro `todo` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 8 previous errors
+
+Some errors have detailed explanations: E0080, E0432.
+For more information about an error, try `rustc --explain E0080`.
diff --git a/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.fixed b/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.fixed
index 26c1c9015da..028f86eb0a3 100644
--- a/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.fixed
+++ b/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.fixed
@@ -1,5 +1,5 @@
 //@ edition:2018
-//@ aux-build:../removing-extern-crate.rs
+//@ aux-build: remove-extern-crate.rs
 //@ run-rustfix
 
 #![warn(rust_2018_idioms)]
diff --git a/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.rs b/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.rs
index c5b629fa90b..1acf531a661 100644
--- a/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.rs
+++ b/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.rs
@@ -1,16 +1,16 @@
 //@ edition:2018
-//@ aux-build:../removing-extern-crate.rs
+//@ aux-build: remove-extern-crate.rs
 //@ run-rustfix
 
 #![warn(rust_2018_idioms)]
 
 #[cfg_attr(test, "macro_use")] //~ ERROR expected
-extern crate removing_extern_crate as foo; //~ WARNING unused extern crate
+extern crate remove_extern_crate as foo; //~ WARNING unused extern crate
 extern crate core; //~ WARNING unused extern crate
 
 mod another {
     #[cfg_attr(test)] //~ ERROR expected
-    extern crate removing_extern_crate as foo; //~ WARNING unused extern crate
+    extern crate remove_extern_crate as foo; //~ WARNING unused extern crate
     extern crate core; //~ WARNING unused extern crate
 }
 
diff --git a/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.stderr b/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.stderr
index 0e834707bf9..632ecd62322 100644
--- a/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.stderr
+++ b/tests/ui/rust-2018/removing-extern-crate-malformed-cfg.stderr
@@ -19,8 +19,8 @@ LL |     #[cfg_attr(test)]
 warning: unused extern crate
   --> $DIR/removing-extern-crate-malformed-cfg.rs:8:1
    |
-LL | extern crate removing_extern_crate as foo;
-   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unused
+LL | extern crate remove_extern_crate as foo;
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unused
    |
 note: the lint level is defined here
   --> $DIR/removing-extern-crate-malformed-cfg.rs:5:9
@@ -31,7 +31,7 @@ LL | #![warn(rust_2018_idioms)]
 help: remove the unused `extern crate`
    |
 LL - #[cfg_attr(test, "macro_use")]
-LL - extern crate removing_extern_crate as foo;
+LL - extern crate remove_extern_crate as foo;
 LL +
    |
 
@@ -50,13 +50,13 @@ LL +
 warning: unused extern crate
   --> $DIR/removing-extern-crate-malformed-cfg.rs:13:5
    |
-LL |     extern crate removing_extern_crate as foo;
-   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unused
+LL |     extern crate remove_extern_crate as foo;
+   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unused
    |
 help: remove the unused `extern crate`
    |
 LL -     #[cfg_attr(test)]
-LL -     extern crate removing_extern_crate as foo;
+LL -     extern crate remove_extern_crate as foo;
 LL +
    |
 
diff --git a/tests/ui/stable-mir-print/async-closure.rs b/tests/ui/rustc_public-ir-print/async-closure.rs
index 80f96e09cfc..80f96e09cfc 100644
--- a/tests/ui/stable-mir-print/async-closure.rs
+++ b/tests/ui/rustc_public-ir-print/async-closure.rs
diff --git a/tests/ui/stable-mir-print/async-closure.stdout b/tests/ui/rustc_public-ir-print/async-closure.stdout
index 31811299722..4afb15af7a9 100644
--- a/tests/ui/stable-mir-print/async-closure.stdout
+++ b/tests/ui/rustc_public-ir-print/async-closure.stdout
@@ -1,4 +1,4 @@
-// WARNING: This is highly experimental output it's intended for stable-mir developers only.
+// WARNING: This is highly experimental output it's intended for rustc_public developers only.
 // If you find a bug or want to improve the output open a issue at https://github.com/rust-lang/project-stable-mir.
 fn foo() -> () {
     let mut _0: ();
diff --git a/tests/ui/stable-mir-print/basic_function.rs b/tests/ui/rustc_public-ir-print/basic_function.rs
index 21469c61f72..21469c61f72 100644
--- a/tests/ui/stable-mir-print/basic_function.rs
+++ b/tests/ui/rustc_public-ir-print/basic_function.rs
diff --git a/tests/ui/stable-mir-print/basic_function.stdout b/tests/ui/rustc_public-ir-print/basic_function.stdout
index 319d9c1dc69..dc885e009e9 100644
--- a/tests/ui/stable-mir-print/basic_function.stdout
+++ b/tests/ui/rustc_public-ir-print/basic_function.stdout
@@ -1,4 +1,4 @@
-// WARNING: This is highly experimental output it's intended for stable-mir developers only.
+// WARNING: This is highly experimental output it's intended for rustc_public developers only.
 // If you find a bug or want to improve the output open a issue at https://github.com/rust-lang/project-stable-mir.
 fn foo(_1: i32) -> i32 {
     let mut _0: i32;
diff --git a/tests/ui/stable-mir-print/operands.rs b/tests/ui/rustc_public-ir-print/operands.rs
index 484ad07cf04..484ad07cf04 100644
--- a/tests/ui/stable-mir-print/operands.rs
+++ b/tests/ui/rustc_public-ir-print/operands.rs
diff --git a/tests/ui/stable-mir-print/operands.stdout b/tests/ui/rustc_public-ir-print/operands.stdout
index 37c5ec1a95e..a4b1c07f3a0 100644
--- a/tests/ui/stable-mir-print/operands.stdout
+++ b/tests/ui/rustc_public-ir-print/operands.stdout
@@ -1,4 +1,4 @@
-// WARNING: This is highly experimental output it's intended for stable-mir developers only.
+// WARNING: This is highly experimental output it's intended for rustc_public developers only.
 // If you find a bug or want to improve the output open a issue at https://github.com/rust-lang/project-stable-mir.
 fn operands(_1: u8) -> () {
     let mut _0: ();
diff --git a/tests/ui/simd/generics.rs b/tests/ui/simd/generics.rs
index 1ae08fef7cd..54e76f7bc5d 100644
--- a/tests/ui/simd/generics.rs
+++ b/tests/ui/simd/generics.rs
@@ -2,24 +2,18 @@
 #![allow(non_camel_case_types)]
 #![feature(repr_simd, core_intrinsics)]
 
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
+
 use std::intrinsics::simd::simd_add;
 use std::ops;
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct f32x4([f32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct A<const N: usize>([f32; N]);
+type A<const N: usize> = Simd<f32, N>;
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct B<T>([T; 4]);
+type B<T> = Simd<T, 4>;
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct C<T, const N: usize>([T; N]);
+type C<T, const N: usize> = Simd<T, N>;
 
 fn add<T: ops::Add<Output = T>>(lhs: T, rhs: T) -> T {
     lhs + rhs
@@ -33,48 +27,24 @@ impl ops::Add for f32x4 {
     }
 }
 
-impl ops::Add for A<4> {
-    type Output = Self;
-
-    fn add(self, rhs: Self) -> Self {
-        unsafe { simd_add(self, rhs) }
-    }
-}
-
-impl ops::Add for B<f32> {
-    type Output = Self;
-
-    fn add(self, rhs: Self) -> Self {
-        unsafe { simd_add(self, rhs) }
-    }
-}
-
-impl ops::Add for C<f32, 4> {
-    type Output = Self;
-
-    fn add(self, rhs: Self) -> Self {
-        unsafe { simd_add(self, rhs) }
-    }
-}
-
 pub fn main() {
     let x = [1.0f32, 2.0f32, 3.0f32, 4.0f32];
     let y = [2.0f32, 4.0f32, 6.0f32, 8.0f32];
 
     // lame-o
-    let a = f32x4([1.0f32, 2.0f32, 3.0f32, 4.0f32]);
-    let f32x4([a0, a1, a2, a3]) = add(a, a);
+    let a = f32x4::from_array([1.0f32, 2.0f32, 3.0f32, 4.0f32]);
+    let [a0, a1, a2, a3] = add(a, a).into_array();
     assert_eq!(a0, 2.0f32);
     assert_eq!(a1, 4.0f32);
     assert_eq!(a2, 6.0f32);
     assert_eq!(a3, 8.0f32);
 
-    let a = A(x);
-    assert_eq!(add(a, a).0, y);
+    let a = A::from_array(x);
+    assert_eq!(add(a, a).into_array(), y);
 
-    let b = B(x);
-    assert_eq!(add(b, b).0, y);
+    let b = B::from_array(x);
+    assert_eq!(add(b, b).into_array(), y);
 
-    let c = C(x);
-    assert_eq!(add(c, c).0, y);
+    let c = C::from_array(x);
+    assert_eq!(add(c, c).into_array(), y);
 }
diff --git a/tests/ui/simd/intrinsic/float-math-pass.rs b/tests/ui/simd/intrinsic/float-math-pass.rs
index 01fed8537d0..743aae8d1c3 100644
--- a/tests/ui/simd/intrinsic/float-math-pass.rs
+++ b/tests/ui/simd/intrinsic/float-math-pass.rs
@@ -11,9 +11,9 @@
 #![feature(repr_simd, intrinsics, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct f32x4(pub [f32; 4]);
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
 use std::intrinsics::simd::*;
 
@@ -27,19 +27,19 @@ macro_rules! assert_approx_eq {
     ($a:expr, $b:expr) => {{
         let a = $a;
         let b = $b;
-        assert_approx_eq_f32!(a.0[0], b.0[0]);
-        assert_approx_eq_f32!(a.0[1], b.0[1]);
-        assert_approx_eq_f32!(a.0[2], b.0[2]);
-        assert_approx_eq_f32!(a.0[3], b.0[3]);
+        assert_approx_eq_f32!(a[0], b[0]);
+        assert_approx_eq_f32!(a[1], b[1]);
+        assert_approx_eq_f32!(a[2], b[2]);
+        assert_approx_eq_f32!(a[3], b[3]);
     }};
 }
 
 fn main() {
-    let x = f32x4([1.0, 1.0, 1.0, 1.0]);
-    let y = f32x4([-1.0, -1.0, -1.0, -1.0]);
-    let z = f32x4([0.0, 0.0, 0.0, 0.0]);
+    let x = f32x4::from_array([1.0, 1.0, 1.0, 1.0]);
+    let y = f32x4::from_array([-1.0, -1.0, -1.0, -1.0]);
+    let z = f32x4::from_array([0.0, 0.0, 0.0, 0.0]);
 
-    let h = f32x4([0.5, 0.5, 0.5, 0.5]);
+    let h = f32x4::from_array([0.5, 0.5, 0.5, 0.5]);
 
     unsafe {
         let r = simd_fabs(y);
diff --git a/tests/ui/simd/intrinsic/float-minmax-pass.rs b/tests/ui/simd/intrinsic/float-minmax-pass.rs
index 00c0d8cea3f..12210ba0ad1 100644
--- a/tests/ui/simd/intrinsic/float-minmax-pass.rs
+++ b/tests/ui/simd/intrinsic/float-minmax-pass.rs
@@ -6,15 +6,15 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct f32x4(pub [f32; 4]);
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
 use std::intrinsics::simd::*;
 
 fn main() {
-    let x = f32x4([1.0, 2.0, 3.0, 4.0]);
-    let y = f32x4([2.0, 1.0, 4.0, 3.0]);
+    let x = f32x4::from_array([1.0, 2.0, 3.0, 4.0]);
+    let y = f32x4::from_array([2.0, 1.0, 4.0, 3.0]);
 
     #[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
     let nan = f32::NAN;
@@ -23,13 +23,13 @@ fn main() {
     #[cfg(any(target_arch = "mips", target_arch = "mips64"))]
     let nan = f32::from_bits(f32::NAN.to_bits() - 1);
 
-    let n = f32x4([nan, nan, nan, nan]);
+    let n = f32x4::from_array([nan, nan, nan, nan]);
 
     unsafe {
         let min0 = simd_fmin(x, y);
         let min1 = simd_fmin(y, x);
         assert_eq!(min0, min1);
-        let e = f32x4([1.0, 1.0, 3.0, 3.0]);
+        let e = f32x4::from_array([1.0, 1.0, 3.0, 3.0]);
         assert_eq!(min0, e);
         let minn = simd_fmin(x, n);
         assert_eq!(minn, x);
@@ -39,7 +39,7 @@ fn main() {
         let max0 = simd_fmax(x, y);
         let max1 = simd_fmax(y, x);
         assert_eq!(max0, max1);
-        let e = f32x4([2.0, 2.0, 4.0, 4.0]);
+        let e = f32x4::from_array([2.0, 2.0, 4.0, 4.0]);
         assert_eq!(max0, e);
         let maxn = simd_fmax(x, n);
         assert_eq!(maxn, x);
diff --git a/tests/ui/simd/intrinsic/generic-arithmetic-pass.rs b/tests/ui/simd/intrinsic/generic-arithmetic-pass.rs
index 4c97fb2141d..bf38a8b1720 100644
--- a/tests/ui/simd/intrinsic/generic-arithmetic-pass.rs
+++ b/tests/ui/simd/intrinsic/generic-arithmetic-pass.rs
@@ -2,80 +2,77 @@
 #![allow(non_camel_case_types)]
 #![feature(repr_simd, core_intrinsics)]
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct i32x4(pub [i32; 4]);
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct U32<const N: usize>([u32; N]);
-
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct f32x4(pub [f32; 4]);
+type U32<const N: usize> = Simd<u32, N>;
 
 macro_rules! all_eq {
-    ($a: expr, $b: expr) => {{
+    ($a: expr, $b: expr $(,)?) => {{
         let a = $a;
         let b = $b;
-        assert!(a.0 == b.0);
+        assert!(a == b);
     }};
 }
 
 use std::intrinsics::simd::*;
 
 fn main() {
-    let x1 = i32x4([1, 2, 3, 4]);
-    let y1 = U32::<4>([1, 2, 3, 4]);
-    let z1 = f32x4([1.0, 2.0, 3.0, 4.0]);
-    let x2 = i32x4([2, 3, 4, 5]);
-    let y2 = U32::<4>([2, 3, 4, 5]);
-    let z2 = f32x4([2.0, 3.0, 4.0, 5.0]);
-    let x3 = i32x4([0, i32::MAX, i32::MIN, -1_i32]);
-    let y3 = U32::<4>([0, i32::MAX as _, i32::MIN as _, -1_i32 as _]);
+    let x1 = i32x4::from_array([1, 2, 3, 4]);
+    let y1 = U32::<4>::from_array([1, 2, 3, 4]);
+    let z1 = f32x4::from_array([1.0, 2.0, 3.0, 4.0]);
+    let x2 = i32x4::from_array([2, 3, 4, 5]);
+    let y2 = U32::<4>::from_array([2, 3, 4, 5]);
+    let z2 = f32x4::from_array([2.0, 3.0, 4.0, 5.0]);
+    let x3 = i32x4::from_array([0, i32::MAX, i32::MIN, -1_i32]);
+    let y3 = U32::<4>::from_array([0, i32::MAX as _, i32::MIN as _, -1_i32 as _]);
 
     unsafe {
-        all_eq!(simd_add(x1, x2), i32x4([3, 5, 7, 9]));
-        all_eq!(simd_add(x2, x1), i32x4([3, 5, 7, 9]));
-        all_eq!(simd_add(y1, y2), U32::<4>([3, 5, 7, 9]));
-        all_eq!(simd_add(y2, y1), U32::<4>([3, 5, 7, 9]));
-        all_eq!(simd_add(z1, z2), f32x4([3.0, 5.0, 7.0, 9.0]));
-        all_eq!(simd_add(z2, z1), f32x4([3.0, 5.0, 7.0, 9.0]));
-
-        all_eq!(simd_mul(x1, x2), i32x4([2, 6, 12, 20]));
-        all_eq!(simd_mul(x2, x1), i32x4([2, 6, 12, 20]));
-        all_eq!(simd_mul(y1, y2), U32::<4>([2, 6, 12, 20]));
-        all_eq!(simd_mul(y2, y1), U32::<4>([2, 6, 12, 20]));
-        all_eq!(simd_mul(z1, z2), f32x4([2.0, 6.0, 12.0, 20.0]));
-        all_eq!(simd_mul(z2, z1), f32x4([2.0, 6.0, 12.0, 20.0]));
-
-        all_eq!(simd_sub(x2, x1), i32x4([1, 1, 1, 1]));
-        all_eq!(simd_sub(x1, x2), i32x4([-1, -1, -1, -1]));
-        all_eq!(simd_sub(y2, y1), U32::<4>([1, 1, 1, 1]));
-        all_eq!(simd_sub(y1, y2), U32::<4>([!0, !0, !0, !0]));
-        all_eq!(simd_sub(z2, z1), f32x4([1.0, 1.0, 1.0, 1.0]));
-        all_eq!(simd_sub(z1, z2), f32x4([-1.0, -1.0, -1.0, -1.0]));
-
-        all_eq!(simd_div(x1, x1), i32x4([1, 1, 1, 1]));
-        all_eq!(simd_div(i32x4([2, 4, 6, 8]), i32x4([2, 2, 2, 2])), x1);
-        all_eq!(simd_div(y1, y1), U32::<4>([1, 1, 1, 1]));
-        all_eq!(simd_div(U32::<4>([2, 4, 6, 8]), U32::<4>([2, 2, 2, 2])), y1);
-        all_eq!(simd_div(z1, z1), f32x4([1.0, 1.0, 1.0, 1.0]));
-        all_eq!(simd_div(z1, z2), f32x4([1.0 / 2.0, 2.0 / 3.0, 3.0 / 4.0, 4.0 / 5.0]));
-        all_eq!(simd_div(z2, z1), f32x4([2.0 / 1.0, 3.0 / 2.0, 4.0 / 3.0, 5.0 / 4.0]));
-
-        all_eq!(simd_rem(x1, x1), i32x4([0, 0, 0, 0]));
-        all_eq!(simd_rem(x2, x1), i32x4([0, 1, 1, 1]));
-        all_eq!(simd_rem(y1, y1), U32::<4>([0, 0, 0, 0]));
-        all_eq!(simd_rem(y2, y1), U32::<4>([0, 1, 1, 1]));
-        all_eq!(simd_rem(z1, z1), f32x4([0.0, 0.0, 0.0, 0.0]));
+        all_eq!(simd_add(x1, x2), i32x4::from_array([3, 5, 7, 9]));
+        all_eq!(simd_add(x2, x1), i32x4::from_array([3, 5, 7, 9]));
+        all_eq!(simd_add(y1, y2), U32::<4>::from_array([3, 5, 7, 9]));
+        all_eq!(simd_add(y2, y1), U32::<4>::from_array([3, 5, 7, 9]));
+        all_eq!(simd_add(z1, z2), f32x4::from_array([3.0, 5.0, 7.0, 9.0]));
+        all_eq!(simd_add(z2, z1), f32x4::from_array([3.0, 5.0, 7.0, 9.0]));
+
+        all_eq!(simd_mul(x1, x2), i32x4::from_array([2, 6, 12, 20]));
+        all_eq!(simd_mul(x2, x1), i32x4::from_array([2, 6, 12, 20]));
+        all_eq!(simd_mul(y1, y2), U32::<4>::from_array([2, 6, 12, 20]));
+        all_eq!(simd_mul(y2, y1), U32::<4>::from_array([2, 6, 12, 20]));
+        all_eq!(simd_mul(z1, z2), f32x4::from_array([2.0, 6.0, 12.0, 20.0]));
+        all_eq!(simd_mul(z2, z1), f32x4::from_array([2.0, 6.0, 12.0, 20.0]));
+
+        all_eq!(simd_sub(x2, x1), i32x4::from_array([1, 1, 1, 1]));
+        all_eq!(simd_sub(x1, x2), i32x4::from_array([-1, -1, -1, -1]));
+        all_eq!(simd_sub(y2, y1), U32::<4>::from_array([1, 1, 1, 1]));
+        all_eq!(simd_sub(y1, y2), U32::<4>::from_array([!0, !0, !0, !0]));
+        all_eq!(simd_sub(z2, z1), f32x4::from_array([1.0, 1.0, 1.0, 1.0]));
+        all_eq!(simd_sub(z1, z2), f32x4::from_array([-1.0, -1.0, -1.0, -1.0]));
+
+        all_eq!(simd_div(x1, x1), i32x4::from_array([1, 1, 1, 1]));
+        all_eq!(simd_div(i32x4::from_array([2, 4, 6, 8]), i32x4::from_array([2, 2, 2, 2])), x1);
+        all_eq!(simd_div(y1, y1), U32::<4>::from_array([1, 1, 1, 1]));
+        all_eq!(
+            simd_div(U32::<4>::from_array([2, 4, 6, 8]), U32::<4>::from_array([2, 2, 2, 2])),
+            y1,
+        );
+        all_eq!(simd_div(z1, z1), f32x4::from_array([1.0, 1.0, 1.0, 1.0]));
+        all_eq!(simd_div(z1, z2), f32x4::from_array([1.0 / 2.0, 2.0 / 3.0, 3.0 / 4.0, 4.0 / 5.0]));
+        all_eq!(simd_div(z2, z1), f32x4::from_array([2.0 / 1.0, 3.0 / 2.0, 4.0 / 3.0, 5.0 / 4.0]));
+
+        all_eq!(simd_rem(x1, x1), i32x4::from_array([0, 0, 0, 0]));
+        all_eq!(simd_rem(x2, x1), i32x4::from_array([0, 1, 1, 1]));
+        all_eq!(simd_rem(y1, y1), U32::<4>::from_array([0, 0, 0, 0]));
+        all_eq!(simd_rem(y2, y1), U32::<4>::from_array([0, 1, 1, 1]));
+        all_eq!(simd_rem(z1, z1), f32x4::from_array([0.0, 0.0, 0.0, 0.0]));
         all_eq!(simd_rem(z1, z2), z1);
-        all_eq!(simd_rem(z2, z1), f32x4([0.0, 1.0, 1.0, 1.0]));
+        all_eq!(simd_rem(z2, z1), f32x4::from_array([0.0, 1.0, 1.0, 1.0]));
 
-        all_eq!(simd_shl(x1, x2), i32x4([1 << 2, 2 << 3, 3 << 4, 4 << 5]));
-        all_eq!(simd_shl(x2, x1), i32x4([2 << 1, 3 << 2, 4 << 3, 5 << 4]));
-        all_eq!(simd_shl(y1, y2), U32::<4>([1 << 2, 2 << 3, 3 << 4, 4 << 5]));
-        all_eq!(simd_shl(y2, y1), U32::<4>([2 << 1, 3 << 2, 4 << 3, 5 << 4]));
+        all_eq!(simd_shl(x1, x2), i32x4::from_array([1 << 2, 2 << 3, 3 << 4, 4 << 5]));
+        all_eq!(simd_shl(x2, x1), i32x4::from_array([2 << 1, 3 << 2, 4 << 3, 5 << 4]));
+        all_eq!(simd_shl(y1, y2), U32::<4>::from_array([1 << 2, 2 << 3, 3 << 4, 4 << 5]));
+        all_eq!(simd_shl(y2, y1), U32::<4>::from_array([2 << 1, 3 << 2, 4 << 3, 5 << 4]));
 
         // test right-shift by assuming left-shift is correct
         all_eq!(simd_shr(simd_shl(x1, x2), x2), x1);
@@ -85,7 +82,7 @@ fn main() {
 
         all_eq!(
             simd_funnel_shl(x1, x2, x1),
-            i32x4([
+            i32x4::from_array([
                 (1 << 1) | (2 >> 31),
                 (2 << 2) | (3 >> 30),
                 (3 << 3) | (4 >> 29),
@@ -94,7 +91,7 @@ fn main() {
         );
         all_eq!(
             simd_funnel_shl(x2, x1, x1),
-            i32x4([
+            i32x4::from_array([
                 (2 << 1) | (1 >> 31),
                 (3 << 2) | (2 >> 30),
                 (4 << 3) | (3 >> 29),
@@ -103,7 +100,7 @@ fn main() {
         );
         all_eq!(
             simd_funnel_shl(y1, y2, y1),
-            U32::<4>([
+            U32::<4>::from_array([
                 (1 << 1) | (2 >> 31),
                 (2 << 2) | (3 >> 30),
                 (3 << 3) | (4 >> 29),
@@ -112,7 +109,7 @@ fn main() {
         );
         all_eq!(
             simd_funnel_shl(y2, y1, y1),
-            U32::<4>([
+            U32::<4>::from_array([
                 (2 << 1) | (1 >> 31),
                 (3 << 2) | (2 >> 30),
                 (4 << 3) | (3 >> 29),
@@ -122,7 +119,7 @@ fn main() {
 
         all_eq!(
             simd_funnel_shr(x1, x2, x1),
-            i32x4([
+            i32x4::from_array([
                 (1 << 31) | (2 >> 1),
                 (2 << 30) | (3 >> 2),
                 (3 << 29) | (4 >> 3),
@@ -131,7 +128,7 @@ fn main() {
         );
         all_eq!(
             simd_funnel_shr(x2, x1, x1),
-            i32x4([
+            i32x4::from_array([
                 (2 << 31) | (1 >> 1),
                 (3 << 30) | (2 >> 2),
                 (4 << 29) | (3 >> 3),
@@ -140,7 +137,7 @@ fn main() {
         );
         all_eq!(
             simd_funnel_shr(y1, y2, y1),
-            U32::<4>([
+            U32::<4>::from_array([
                 (1 << 31) | (2 >> 1),
                 (2 << 30) | (3 >> 2),
                 (3 << 29) | (4 >> 3),
@@ -149,7 +146,7 @@ fn main() {
         );
         all_eq!(
             simd_funnel_shr(y2, y1, y1),
-            U32::<4>([
+            U32::<4>::from_array([
                 (2 << 31) | (1 >> 1),
                 (3 << 30) | (2 >> 2),
                 (4 << 29) | (3 >> 3),
@@ -159,52 +156,69 @@ fn main() {
 
         // ensure we get logical vs. arithmetic shifts correct
         let (a, b, c, d) = (-12, -123, -1234, -12345);
-        all_eq!(simd_shr(i32x4([a, b, c, d]), x1), i32x4([a >> 1, b >> 2, c >> 3, d >> 4]));
         all_eq!(
-            simd_shr(U32::<4>([a as u32, b as u32, c as u32, d as u32]), y1),
-            U32::<4>([(a as u32) >> 1, (b as u32) >> 2, (c as u32) >> 3, (d as u32) >> 4])
+            simd_shr(i32x4::from_array([a, b, c, d]), x1),
+            i32x4::from_array([a >> 1, b >> 2, c >> 3, d >> 4]),
+        );
+        all_eq!(
+            simd_shr(U32::<4>::from_array([a as u32, b as u32, c as u32, d as u32]), y1),
+            U32::<4>::from_array([
+                (a as u32) >> 1,
+                (b as u32) >> 2,
+                (c as u32) >> 3,
+                (d as u32) >> 4,
+            ]),
         );
 
-        all_eq!(simd_and(x1, x2), i32x4([0, 2, 0, 4]));
-        all_eq!(simd_and(x2, x1), i32x4([0, 2, 0, 4]));
-        all_eq!(simd_and(y1, y2), U32::<4>([0, 2, 0, 4]));
-        all_eq!(simd_and(y2, y1), U32::<4>([0, 2, 0, 4]));
+        all_eq!(simd_and(x1, x2), i32x4::from_array([0, 2, 0, 4]));
+        all_eq!(simd_and(x2, x1), i32x4::from_array([0, 2, 0, 4]));
+        all_eq!(simd_and(y1, y2), U32::<4>::from_array([0, 2, 0, 4]));
+        all_eq!(simd_and(y2, y1), U32::<4>::from_array([0, 2, 0, 4]));
 
-        all_eq!(simd_or(x1, x2), i32x4([3, 3, 7, 5]));
-        all_eq!(simd_or(x2, x1), i32x4([3, 3, 7, 5]));
-        all_eq!(simd_or(y1, y2), U32::<4>([3, 3, 7, 5]));
-        all_eq!(simd_or(y2, y1), U32::<4>([3, 3, 7, 5]));
+        all_eq!(simd_or(x1, x2), i32x4::from_array([3, 3, 7, 5]));
+        all_eq!(simd_or(x2, x1), i32x4::from_array([3, 3, 7, 5]));
+        all_eq!(simd_or(y1, y2), U32::<4>::from_array([3, 3, 7, 5]));
+        all_eq!(simd_or(y2, y1), U32::<4>::from_array([3, 3, 7, 5]));
 
-        all_eq!(simd_xor(x1, x2), i32x4([3, 1, 7, 1]));
-        all_eq!(simd_xor(x2, x1), i32x4([3, 1, 7, 1]));
-        all_eq!(simd_xor(y1, y2), U32::<4>([3, 1, 7, 1]));
-        all_eq!(simd_xor(y2, y1), U32::<4>([3, 1, 7, 1]));
+        all_eq!(simd_xor(x1, x2), i32x4::from_array([3, 1, 7, 1]));
+        all_eq!(simd_xor(x2, x1), i32x4::from_array([3, 1, 7, 1]));
+        all_eq!(simd_xor(y1, y2), U32::<4>::from_array([3, 1, 7, 1]));
+        all_eq!(simd_xor(y2, y1), U32::<4>::from_array([3, 1, 7, 1]));
 
-        all_eq!(simd_neg(x1), i32x4([-1, -2, -3, -4]));
-        all_eq!(simd_neg(x2), i32x4([-2, -3, -4, -5]));
-        all_eq!(simd_neg(z1), f32x4([-1.0, -2.0, -3.0, -4.0]));
-        all_eq!(simd_neg(z2), f32x4([-2.0, -3.0, -4.0, -5.0]));
+        all_eq!(simd_neg(x1), i32x4::from_array([-1, -2, -3, -4]));
+        all_eq!(simd_neg(x2), i32x4::from_array([-2, -3, -4, -5]));
+        all_eq!(simd_neg(z1), f32x4::from_array([-1.0, -2.0, -3.0, -4.0]));
+        all_eq!(simd_neg(z2), f32x4::from_array([-2.0, -3.0, -4.0, -5.0]));
 
-        all_eq!(simd_bswap(x1), i32x4([0x01000000, 0x02000000, 0x03000000, 0x04000000]));
-        all_eq!(simd_bswap(y1), U32::<4>([0x01000000, 0x02000000, 0x03000000, 0x04000000]));
+        all_eq!(
+            simd_bswap(x1),
+            i32x4::from_array([0x01000000, 0x02000000, 0x03000000, 0x04000000]),
+        );
+        all_eq!(
+            simd_bswap(y1),
+            U32::<4>::from_array([0x01000000, 0x02000000, 0x03000000, 0x04000000]),
+        );
 
         all_eq!(
             simd_bitreverse(x1),
-            i32x4([0x80000000u32 as i32, 0x40000000, 0xc0000000u32 as i32, 0x20000000])
+            i32x4::from_array([0x80000000u32 as i32, 0x40000000, 0xc0000000u32 as i32, 0x20000000])
+        );
+        all_eq!(
+            simd_bitreverse(y1),
+            U32::<4>::from_array([0x80000000, 0x40000000, 0xc0000000, 0x20000000]),
         );
-        all_eq!(simd_bitreverse(y1), U32::<4>([0x80000000, 0x40000000, 0xc0000000, 0x20000000]));
 
-        all_eq!(simd_ctlz(x1), i32x4([31, 30, 30, 29]));
-        all_eq!(simd_ctlz(y1), U32::<4>([31, 30, 30, 29]));
+        all_eq!(simd_ctlz(x1), i32x4::from_array([31, 30, 30, 29]));
+        all_eq!(simd_ctlz(y1), U32::<4>::from_array([31, 30, 30, 29]));
 
-        all_eq!(simd_ctpop(x1), i32x4([1, 1, 2, 1]));
-        all_eq!(simd_ctpop(y1), U32::<4>([1, 1, 2, 1]));
-        all_eq!(simd_ctpop(x2), i32x4([1, 2, 1, 2]));
-        all_eq!(simd_ctpop(y2), U32::<4>([1, 2, 1, 2]));
-        all_eq!(simd_ctpop(x3), i32x4([0, 31, 1, 32]));
-        all_eq!(simd_ctpop(y3), U32::<4>([0, 31, 1, 32]));
+        all_eq!(simd_ctpop(x1), i32x4::from_array([1, 1, 2, 1]));
+        all_eq!(simd_ctpop(y1), U32::<4>::from_array([1, 1, 2, 1]));
+        all_eq!(simd_ctpop(x2), i32x4::from_array([1, 2, 1, 2]));
+        all_eq!(simd_ctpop(y2), U32::<4>::from_array([1, 2, 1, 2]));
+        all_eq!(simd_ctpop(x3), i32x4::from_array([0, 31, 1, 32]));
+        all_eq!(simd_ctpop(y3), U32::<4>::from_array([0, 31, 1, 32]));
 
-        all_eq!(simd_cttz(x1), i32x4([0, 1, 0, 2]));
-        all_eq!(simd_cttz(y1), U32::<4>([0, 1, 0, 2]));
+        all_eq!(simd_cttz(x1), i32x4::from_array([0, 1, 0, 2]));
+        all_eq!(simd_cttz(y1), U32::<4>::from_array([0, 1, 0, 2]));
     }
 }
diff --git a/tests/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs b/tests/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs
index 4d12a312331..a997f123703 100644
--- a/tests/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs
+++ b/tests/ui/simd/intrinsic/generic-arithmetic-saturating-pass.rs
@@ -4,26 +4,24 @@
 #![allow(non_camel_case_types)]
 #![feature(repr_simd, core_intrinsics)]
 
-use std::intrinsics::simd::{simd_saturating_add, simd_saturating_sub};
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct u32x4(pub [u32; 4]);
+use std::intrinsics::simd::{simd_saturating_add, simd_saturating_sub};
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct I32<const N: usize>([i32; N]);
+type I32<const N: usize> = Simd<i32, N>;
 
 fn main() {
     // unsigned
     {
         const M: u32 = u32::MAX;
 
-        let a = u32x4([1, 2, 3, 4]);
-        let b = u32x4([2, 4, 6, 8]);
-        let m = u32x4([M, M, M, M]);
-        let m1 = u32x4([M - 1, M - 1, M - 1, M - 1]);
-        let z = u32x4([0, 0, 0, 0]);
+        let a = u32x4::from_array([1, 2, 3, 4]);
+        let b = u32x4::from_array([2, 4, 6, 8]);
+        let m = u32x4::from_array([M, M, M, M]);
+        let m1 = u32x4::from_array([M - 1, M - 1, M - 1, M - 1]);
+        let z = u32x4::from_array([0, 0, 0, 0]);
 
         unsafe {
             assert_eq!(simd_saturating_add(z, z), z);
@@ -48,41 +46,41 @@ fn main() {
         const MIN: i32 = i32::MIN;
         const MAX: i32 = i32::MAX;
 
-        let a = I32::<4>([1, 2, 3, 4]);
-        let b = I32::<4>([2, 4, 6, 8]);
-        let c = I32::<4>([-1, -2, -3, -4]);
-        let d = I32::<4>([-2, -4, -6, -8]);
+        let a = I32::<4>::from_array([1, 2, 3, 4]);
+        let b = I32::<4>::from_array([2, 4, 6, 8]);
+        let c = I32::<4>::from_array([-1, -2, -3, -4]);
+        let d = I32::<4>::from_array([-2, -4, -6, -8]);
 
-        let max = I32::<4>([MAX, MAX, MAX, MAX]);
-        let max1 = I32::<4>([MAX - 1, MAX - 1, MAX - 1, MAX - 1]);
-        let min = I32::<4>([MIN, MIN, MIN, MIN]);
-        let min1 = I32::<4>([MIN + 1, MIN + 1, MIN + 1, MIN + 1]);
+        let max = I32::<4>::from_array([MAX, MAX, MAX, MAX]);
+        let max1 = I32::<4>::from_array([MAX - 1, MAX - 1, MAX - 1, MAX - 1]);
+        let min = I32::<4>::from_array([MIN, MIN, MIN, MIN]);
+        let min1 = I32::<4>::from_array([MIN + 1, MIN + 1, MIN + 1, MIN + 1]);
 
-        let z = I32::<4>([0, 0, 0, 0]);
+        let z = I32::<4>::from_array([0, 0, 0, 0]);
 
         unsafe {
-            assert_eq!(simd_saturating_add(z, z).0, z.0);
-            assert_eq!(simd_saturating_add(z, a).0, a.0);
-            assert_eq!(simd_saturating_add(b, z).0, b.0);
-            assert_eq!(simd_saturating_add(a, a).0, b.0);
-            assert_eq!(simd_saturating_add(a, max).0, max.0);
-            assert_eq!(simd_saturating_add(max, b).0, max.0);
-            assert_eq!(simd_saturating_add(max1, a).0, max.0);
-            assert_eq!(simd_saturating_add(min1, z).0, min1.0);
-            assert_eq!(simd_saturating_add(min, z).0, min.0);
-            assert_eq!(simd_saturating_add(min1, c).0, min.0);
-            assert_eq!(simd_saturating_add(min, c).0, min.0);
-            assert_eq!(simd_saturating_add(min1, d).0, min.0);
-            assert_eq!(simd_saturating_add(min, d).0, min.0);
+            assert_eq!(simd_saturating_add(z, z), z);
+            assert_eq!(simd_saturating_add(z, a), a);
+            assert_eq!(simd_saturating_add(b, z), b);
+            assert_eq!(simd_saturating_add(a, a), b);
+            assert_eq!(simd_saturating_add(a, max), max);
+            assert_eq!(simd_saturating_add(max, b), max);
+            assert_eq!(simd_saturating_add(max1, a), max);
+            assert_eq!(simd_saturating_add(min1, z), min1);
+            assert_eq!(simd_saturating_add(min, z), min);
+            assert_eq!(simd_saturating_add(min1, c), min);
+            assert_eq!(simd_saturating_add(min, c), min);
+            assert_eq!(simd_saturating_add(min1, d), min);
+            assert_eq!(simd_saturating_add(min, d), min);
 
-            assert_eq!(simd_saturating_sub(b, z).0, b.0);
-            assert_eq!(simd_saturating_sub(b, a).0, a.0);
-            assert_eq!(simd_saturating_sub(a, a).0, z.0);
-            assert_eq!(simd_saturating_sub(a, b).0, c.0);
-            assert_eq!(simd_saturating_sub(z, max).0, min1.0);
-            assert_eq!(simd_saturating_sub(min1, z).0, min1.0);
-            assert_eq!(simd_saturating_sub(min1, a).0, min.0);
-            assert_eq!(simd_saturating_sub(min1, b).0, min.0);
+            assert_eq!(simd_saturating_sub(b, z), b);
+            assert_eq!(simd_saturating_sub(b, a), a);
+            assert_eq!(simd_saturating_sub(a, a), z);
+            assert_eq!(simd_saturating_sub(a, b), c);
+            assert_eq!(simd_saturating_sub(z, max), min1);
+            assert_eq!(simd_saturating_sub(min1, z), min1);
+            assert_eq!(simd_saturating_sub(min1, a), min);
+            assert_eq!(simd_saturating_sub(min1, b), min);
         }
     }
 }
diff --git a/tests/ui/simd/intrinsic/generic-as.rs b/tests/ui/simd/intrinsic/generic-as.rs
index da53211cbc7..f9ed416b6ff 100644
--- a/tests/ui/simd/intrinsic/generic-as.rs
+++ b/tests/ui/simd/intrinsic/generic-as.rs
@@ -2,45 +2,47 @@
 
 #![feature(repr_simd, core_intrinsics)]
 
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
+
 use std::intrinsics::simd::simd_as;
 
-#[derive(Copy, Clone)]
-#[repr(simd)]
-struct V<T>([T; 2]);
+type V<T> = Simd<T, 2>;
 
 fn main() {
     unsafe {
-        let u = V::<u32>([u32::MIN, u32::MAX]);
+        let u: V::<u32> = Simd([u32::MIN, u32::MAX]);
         let i: V<i16> = simd_as(u);
-        assert_eq!(i.0[0], u.0[0] as i16);
-        assert_eq!(i.0[1], u.0[1] as i16);
+        assert_eq!(i[0], u[0] as i16);
+        assert_eq!(i[1], u[1] as i16);
     }
 
     unsafe {
-        let f = V::<f32>([f32::MIN, f32::MAX]);
+        let f: V::<f32> = Simd([f32::MIN, f32::MAX]);
         let i: V<i16> = simd_as(f);
-        assert_eq!(i.0[0], f.0[0] as i16);
-        assert_eq!(i.0[1], f.0[1] as i16);
+        assert_eq!(i[0], f[0] as i16);
+        assert_eq!(i[1], f[1] as i16);
     }
 
     unsafe {
-        let f = V::<f32>([f32::MIN, f32::MAX]);
+        let f: V::<f32> = Simd([f32::MIN, f32::MAX]);
         let u: V<u8> = simd_as(f);
-        assert_eq!(u.0[0], f.0[0] as u8);
-        assert_eq!(u.0[1], f.0[1] as u8);
+        assert_eq!(u[0], f[0] as u8);
+        assert_eq!(u[1], f[1] as u8);
     }
 
     unsafe {
-        let f = V::<f64>([f64::MIN, f64::MAX]);
+        let f: V::<f64> = Simd([f64::MIN, f64::MAX]);
         let i: V<isize> = simd_as(f);
-        assert_eq!(i.0[0], f.0[0] as isize);
-        assert_eq!(i.0[1], f.0[1] as isize);
+        assert_eq!(i[0], f[0] as isize);
+        assert_eq!(i[1], f[1] as isize);
     }
 
     unsafe {
-        let f = V::<f64>([f64::MIN, f64::MAX]);
+        let f: V::<f64> = Simd([f64::MIN, f64::MAX]);
         let u: V<usize> = simd_as(f);
-        assert_eq!(u.0[0], f.0[0] as usize);
-        assert_eq!(u.0[1], f.0[1] as usize);
+        assert_eq!(u[0], f[0] as usize);
+        assert_eq!(u[1], f[1] as usize);
     }
 }
diff --git a/tests/ui/simd/intrinsic/generic-bswap-byte.rs b/tests/ui/simd/intrinsic/generic-bswap-byte.rs
index 903a07656a7..d30a560b1c2 100644
--- a/tests/ui/simd/intrinsic/generic-bswap-byte.rs
+++ b/tests/ui/simd/intrinsic/generic-bswap-byte.rs
@@ -2,19 +2,15 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_bswap;
-
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct i8x4([i8; 4]);
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct u8x4([u8; 4]);
+use std::intrinsics::simd::simd_bswap;
 
 fn main() {
     unsafe {
-        assert_eq!(simd_bswap(i8x4([0, 1, 2, 3])).0, [0, 1, 2, 3]);
-        assert_eq!(simd_bswap(u8x4([0, 1, 2, 3])).0, [0, 1, 2, 3]);
+        assert_eq!(simd_bswap(i8x4::from_array([0, 1, 2, 3])).into_array(), [0, 1, 2, 3]);
+        assert_eq!(simd_bswap(u8x4::from_array([0, 1, 2, 3])).into_array(), [0, 1, 2, 3]);
     }
 }
diff --git a/tests/ui/simd/intrinsic/generic-cast-pass.rs b/tests/ui/simd/intrinsic/generic-cast-pass.rs
index 7a4663bcad2..0c3b00d65bf 100644
--- a/tests/ui/simd/intrinsic/generic-cast-pass.rs
+++ b/tests/ui/simd/intrinsic/generic-cast-pass.rs
@@ -2,55 +2,57 @@
 
 #![feature(repr_simd, core_intrinsics)]
 
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
+
 use std::intrinsics::simd::simd_cast;
 
 use std::cmp::{max, min};
 
-#[derive(Copy, Clone)]
-#[repr(simd)]
-struct V<T>([T; 2]);
+type V<T> = Simd<T, 2>;
 
 fn main() {
     unsafe {
-        let u = V::<u32>([i16::MIN as u32, i16::MAX as u32]);
+        let u: V::<u32> = Simd([i16::MIN as u32, i16::MAX as u32]);
         let i: V<i16> = simd_cast(u);
-        assert_eq!(i.0[0], u.0[0] as i16);
-        assert_eq!(i.0[1], u.0[1] as i16);
+        assert_eq!(i[0], u[0] as i16);
+        assert_eq!(i[1], u[1] as i16);
     }
 
     unsafe {
-        let f = V::<f32>([i16::MIN as f32, i16::MAX as f32]);
+        let f: V::<f32> = Simd([i16::MIN as f32, i16::MAX as f32]);
         let i: V<i16> = simd_cast(f);
-        assert_eq!(i.0[0], f.0[0] as i16);
-        assert_eq!(i.0[1], f.0[1] as i16);
+        assert_eq!(i[0], f[0] as i16);
+        assert_eq!(i[1], f[1] as i16);
     }
 
     unsafe {
-        let f = V::<f32>([u8::MIN as f32, u8::MAX as f32]);
+        let f: V::<f32> = Simd([u8::MIN as f32, u8::MAX as f32]);
         let u: V<u8> = simd_cast(f);
-        assert_eq!(u.0[0], f.0[0] as u8);
-        assert_eq!(u.0[1], f.0[1] as u8);
+        assert_eq!(u[0], f[0] as u8);
+        assert_eq!(u[1], f[1] as u8);
     }
 
     unsafe {
         // We would like to do isize::MIN..=isize::MAX, but those values are not representable in
         // an f64, so we clamp to the range of an i32 to prevent running into UB.
-        let f = V::<f64>([
+        let f: V::<f64> = Simd([
             max(isize::MIN, i32::MIN as isize) as f64,
             min(isize::MAX, i32::MAX as isize) as f64,
         ]);
         let i: V<isize> = simd_cast(f);
-        assert_eq!(i.0[0], f.0[0] as isize);
-        assert_eq!(i.0[1], f.0[1] as isize);
+        assert_eq!(i[0], f[0] as isize);
+        assert_eq!(i[1], f[1] as isize);
     }
 
     unsafe {
-        let f = V::<f64>([
+        let f: V::<f64> = Simd([
             max(usize::MIN, u32::MIN as usize) as f64,
             min(usize::MAX, u32::MAX as usize) as f64,
         ]);
         let u: V<usize> = simd_cast(f);
-        assert_eq!(u.0[0], f.0[0] as usize);
-        assert_eq!(u.0[1], f.0[1] as usize);
+        assert_eq!(u[0], f[0] as usize);
+        assert_eq!(u[1], f[1] as usize);
     }
 }
diff --git a/tests/ui/simd/intrinsic/generic-cast-pointer-width.rs b/tests/ui/simd/intrinsic/generic-cast-pointer-width.rs
index ea34e9ffeb8..594d1d25d16 100644
--- a/tests/ui/simd/intrinsic/generic-cast-pointer-width.rs
+++ b/tests/ui/simd/intrinsic/generic-cast-pointer-width.rs
@@ -1,18 +1,24 @@
 //@ run-pass
 #![feature(repr_simd, core_intrinsics)]
 
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
+
 use std::intrinsics::simd::simd_cast;
 
-#[derive(Copy, Clone)]
-#[repr(simd)]
-struct V<T>([T; 4]);
+type V<T> = Simd<T, 4>;
 
 fn main() {
-    let u = V::<usize>([0, 1, 2, 3]);
+    let u: V::<usize> = Simd([0, 1, 2, 3]);
     let uu32: V<u32> = unsafe { simd_cast(u) };
     let ui64: V<i64> = unsafe { simd_cast(u) };
 
-    for (u, (uu32, ui64)) in u.0.iter().zip(uu32.0.iter().zip(ui64.0.iter())) {
+    for (u, (uu32, ui64)) in u
+        .as_array()
+        .iter()
+        .zip(uu32.as_array().iter().zip(ui64.as_array().iter()))
+    {
         assert_eq!(*u as u32, *uu32);
         assert_eq!(*u as i64, *ui64);
     }
diff --git a/tests/ui/simd/intrinsic/generic-comparison-pass.rs b/tests/ui/simd/intrinsic/generic-comparison-pass.rs
index 50a05eecb03..3e803e8f603 100644
--- a/tests/ui/simd/intrinsic/generic-comparison-pass.rs
+++ b/tests/ui/simd/intrinsic/generic-comparison-pass.rs
@@ -3,17 +3,11 @@
 #![feature(repr_simd, core_intrinsics, macro_metavar_expr_concat)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::{simd_eq, simd_ge, simd_gt, simd_le, simd_lt, simd_ne};
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct i32x4([i32; 4]);
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct u32x4(pub [u32; 4]);
-#[repr(simd)]
-#[derive(Copy, Clone)]
-struct f32x4(pub [f32; 4]);
+use std::intrinsics::simd::{simd_eq, simd_ge, simd_gt, simd_le, simd_lt, simd_ne};
 
 macro_rules! cmp {
     ($method: ident($lhs: expr, $rhs: expr)) => {{
@@ -21,10 +15,11 @@ macro_rules! cmp {
         let rhs = $rhs;
         let e: u32x4 = ${concat(simd_, $method)}($lhs, $rhs);
         // assume the scalar version is correct/the behaviour we want.
-        assert!((e.0[0] != 0) == lhs.0[0].$method(&rhs.0[0]));
-        assert!((e.0[1] != 0) == lhs.0[1].$method(&rhs.0[1]));
-        assert!((e.0[2] != 0) == lhs.0[2].$method(&rhs.0[2]));
-        assert!((e.0[3] != 0) == lhs.0[3].$method(&rhs.0[3]));
+        let (lhs, rhs, e) = (lhs.as_array(), rhs.as_array(), e.as_array());
+        assert!((e[0] != 0) == lhs[0].$method(&rhs[0]));
+        assert!((e[1] != 0) == lhs[1].$method(&rhs[1]));
+        assert!((e[2] != 0) == lhs[2].$method(&rhs[2]));
+        assert!((e[3] != 0) == lhs[3].$method(&rhs[3]));
     }};
 }
 macro_rules! tests {
@@ -53,17 +48,17 @@ macro_rules! tests {
 fn main() {
     // 13 vs. -100 tests that we get signed vs. unsigned comparisons
     // correct (i32: 13 > -100, u32: 13 < -100).    let i1 = i32x4(10, -11, 12, 13);
-    let i1 = i32x4([10, -11, 12, 13]);
-    let i2 = i32x4([5, -5, 20, -100]);
-    let i3 = i32x4([10, -11, 20, -100]);
+    let i1 = i32x4::from_array([10, -11, 12, 13]);
+    let i2 = i32x4::from_array([5, -5, 20, -100]);
+    let i3 = i32x4::from_array([10, -11, 20, -100]);
 
-    let u1 = u32x4([10, !11 + 1, 12, 13]);
-    let u2 = u32x4([5, !5 + 1, 20, !100 + 1]);
-    let u3 = u32x4([10, !11 + 1, 20, !100 + 1]);
+    let u1 = u32x4::from_array([10, !11 + 1, 12, 13]);
+    let u2 = u32x4::from_array([5, !5 + 1, 20, !100 + 1]);
+    let u3 = u32x4::from_array([10, !11 + 1, 20, !100 + 1]);
 
-    let f1 = f32x4([10.0, -11.0, 12.0, 13.0]);
-    let f2 = f32x4([5.0, -5.0, 20.0, -100.0]);
-    let f3 = f32x4([10.0, -11.0, 20.0, -100.0]);
+    let f1 = f32x4::from_array([10.0, -11.0, 12.0, 13.0]);
+    let f2 = f32x4::from_array([5.0, -5.0, 20.0, -100.0]);
+    let f3 = f32x4::from_array([10.0, -11.0, 20.0, -100.0]);
 
     unsafe {
         tests! {
@@ -84,7 +79,7 @@ fn main() {
     // NAN comparisons are special:
     // -11 (*)    13
     // -5        -100 (*)
-    let f4 = f32x4([f32::NAN, f1.0[1], f32::NAN, f2.0[3]]);
+    let f4 = f32x4::from_array([f32::NAN, f1[1], f32::NAN, f2[3]]);
 
     unsafe {
         tests! {
diff --git a/tests/ui/simd/intrinsic/generic-elements-pass.rs b/tests/ui/simd/intrinsic/generic-elements-pass.rs
index e4d47cdb381..f441d992e11 100644
--- a/tests/ui/simd/intrinsic/generic-elements-pass.rs
+++ b/tests/ui/simd/intrinsic/generic-elements-pass.rs
@@ -2,24 +2,15 @@
 
 #![feature(repr_simd, intrinsics, core_intrinsics)]
 
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
+
 use std::intrinsics::simd::{
     simd_extract, simd_extract_dyn, simd_insert, simd_insert_dyn, simd_shuffle,
 };
 
 #[repr(simd)]
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[allow(non_camel_case_types)]
-struct i32x2([i32; 2]);
-#[repr(simd)]
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[allow(non_camel_case_types)]
-struct i32x4([i32; 4]);
-#[repr(simd)]
-#[derive(Copy, Clone, Debug, PartialEq)]
-#[allow(non_camel_case_types)]
-struct i32x8([i32; 8]);
-
-#[repr(simd)]
 struct SimdShuffleIdx<const LEN: usize>([u32; LEN]);
 
 macro_rules! all_eq {
@@ -34,26 +25,26 @@ macro_rules! all_eq {
 }
 
 fn main() {
-    let x2 = i32x2([20, 21]);
-    let x4 = i32x4([40, 41, 42, 43]);
-    let x8 = i32x8([80, 81, 82, 83, 84, 85, 86, 87]);
+    let x2 = i32x2::from_array([20, 21]);
+    let x4 = i32x4::from_array([40, 41, 42, 43]);
+    let x8 = i32x8::from_array([80, 81, 82, 83, 84, 85, 86, 87]);
     unsafe {
-        all_eq!(simd_insert(x2, 0, 100), i32x2([100, 21]));
-        all_eq!(simd_insert(x2, 1, 100), i32x2([20, 100]));
-
-        all_eq!(simd_insert(x4, 0, 100), i32x4([100, 41, 42, 43]));
-        all_eq!(simd_insert(x4, 1, 100), i32x4([40, 100, 42, 43]));
-        all_eq!(simd_insert(x4, 2, 100), i32x4([40, 41, 100, 43]));
-        all_eq!(simd_insert(x4, 3, 100), i32x4([40, 41, 42, 100]));
-
-        all_eq!(simd_insert(x8, 0, 100), i32x8([100, 81, 82, 83, 84, 85, 86, 87]));
-        all_eq!(simd_insert(x8, 1, 100), i32x8([80, 100, 82, 83, 84, 85, 86, 87]));
-        all_eq!(simd_insert(x8, 2, 100), i32x8([80, 81, 100, 83, 84, 85, 86, 87]));
-        all_eq!(simd_insert(x8, 3, 100), i32x8([80, 81, 82, 100, 84, 85, 86, 87]));
-        all_eq!(simd_insert(x8, 4, 100), i32x8([80, 81, 82, 83, 100, 85, 86, 87]));
-        all_eq!(simd_insert(x8, 5, 100), i32x8([80, 81, 82, 83, 84, 100, 86, 87]));
-        all_eq!(simd_insert(x8, 6, 100), i32x8([80, 81, 82, 83, 84, 85, 100, 87]));
-        all_eq!(simd_insert(x8, 7, 100), i32x8([80, 81, 82, 83, 84, 85, 86, 100]));
+        all_eq!(simd_insert(x2, 0, 100), i32x2::from_array([100, 21]));
+        all_eq!(simd_insert(x2, 1, 100), i32x2::from_array([20, 100]));
+
+        all_eq!(simd_insert(x4, 0, 100), i32x4::from_array([100, 41, 42, 43]));
+        all_eq!(simd_insert(x4, 1, 100), i32x4::from_array([40, 100, 42, 43]));
+        all_eq!(simd_insert(x4, 2, 100), i32x4::from_array([40, 41, 100, 43]));
+        all_eq!(simd_insert(x4, 3, 100), i32x4::from_array([40, 41, 42, 100]));
+
+        all_eq!(simd_insert(x8, 0, 100), i32x8::from_array([100, 81, 82, 83, 84, 85, 86, 87]));
+        all_eq!(simd_insert(x8, 1, 100), i32x8::from_array([80, 100, 82, 83, 84, 85, 86, 87]));
+        all_eq!(simd_insert(x8, 2, 100), i32x8::from_array([80, 81, 100, 83, 84, 85, 86, 87]));
+        all_eq!(simd_insert(x8, 3, 100), i32x8::from_array([80, 81, 82, 100, 84, 85, 86, 87]));
+        all_eq!(simd_insert(x8, 4, 100), i32x8::from_array([80, 81, 82, 83, 100, 85, 86, 87]));
+        all_eq!(simd_insert(x8, 5, 100), i32x8::from_array([80, 81, 82, 83, 84, 100, 86, 87]));
+        all_eq!(simd_insert(x8, 6, 100), i32x8::from_array([80, 81, 82, 83, 84, 85, 100, 87]));
+        all_eq!(simd_insert(x8, 7, 100), i32x8::from_array([80, 81, 82, 83, 84, 85, 86, 100]));
 
         all_eq!(simd_extract(x2, 0), 20);
         all_eq!(simd_extract(x2, 1), 21);
@@ -73,22 +64,22 @@ fn main() {
         all_eq!(simd_extract(x8, 7), 87);
     }
     unsafe {
-        all_eq!(simd_insert_dyn(x2, 0, 100), i32x2([100, 21]));
-        all_eq!(simd_insert_dyn(x2, 1, 100), i32x2([20, 100]));
-
-        all_eq!(simd_insert_dyn(x4, 0, 100), i32x4([100, 41, 42, 43]));
-        all_eq!(simd_insert_dyn(x4, 1, 100), i32x4([40, 100, 42, 43]));
-        all_eq!(simd_insert_dyn(x4, 2, 100), i32x4([40, 41, 100, 43]));
-        all_eq!(simd_insert_dyn(x4, 3, 100), i32x4([40, 41, 42, 100]));
-
-        all_eq!(simd_insert_dyn(x8, 0, 100), i32x8([100, 81, 82, 83, 84, 85, 86, 87]));
-        all_eq!(simd_insert_dyn(x8, 1, 100), i32x8([80, 100, 82, 83, 84, 85, 86, 87]));
-        all_eq!(simd_insert_dyn(x8, 2, 100), i32x8([80, 81, 100, 83, 84, 85, 86, 87]));
-        all_eq!(simd_insert_dyn(x8, 3, 100), i32x8([80, 81, 82, 100, 84, 85, 86, 87]));
-        all_eq!(simd_insert_dyn(x8, 4, 100), i32x8([80, 81, 82, 83, 100, 85, 86, 87]));
-        all_eq!(simd_insert_dyn(x8, 5, 100), i32x8([80, 81, 82, 83, 84, 100, 86, 87]));
-        all_eq!(simd_insert_dyn(x8, 6, 100), i32x8([80, 81, 82, 83, 84, 85, 100, 87]));
-        all_eq!(simd_insert_dyn(x8, 7, 100), i32x8([80, 81, 82, 83, 84, 85, 86, 100]));
+        all_eq!(simd_insert_dyn(x2, 0, 100), i32x2::from_array([100, 21]));
+        all_eq!(simd_insert_dyn(x2, 1, 100), i32x2::from_array([20, 100]));
+
+        all_eq!(simd_insert_dyn(x4, 0, 100), i32x4::from_array([100, 41, 42, 43]));
+        all_eq!(simd_insert_dyn(x4, 1, 100), i32x4::from_array([40, 100, 42, 43]));
+        all_eq!(simd_insert_dyn(x4, 2, 100), i32x4::from_array([40, 41, 100, 43]));
+        all_eq!(simd_insert_dyn(x4, 3, 100), i32x4::from_array([40, 41, 42, 100]));
+
+        all_eq!(simd_insert_dyn(x8, 0, 100), i32x8::from_array([100, 81, 82, 83, 84, 85, 86, 87]));
+        all_eq!(simd_insert_dyn(x8, 1, 100), i32x8::from_array([80, 100, 82, 83, 84, 85, 86, 87]));
+        all_eq!(simd_insert_dyn(x8, 2, 100), i32x8::from_array([80, 81, 100, 83, 84, 85, 86, 87]));
+        all_eq!(simd_insert_dyn(x8, 3, 100), i32x8::from_array([80, 81, 82, 100, 84, 85, 86, 87]));
+        all_eq!(simd_insert_dyn(x8, 4, 100), i32x8::from_array([80, 81, 82, 83, 100, 85, 86, 87]));
+        all_eq!(simd_insert_dyn(x8, 5, 100), i32x8::from_array([80, 81, 82, 83, 84, 100, 86, 87]));
+        all_eq!(simd_insert_dyn(x8, 6, 100), i32x8::from_array([80, 81, 82, 83, 84, 85, 100, 87]));
+        all_eq!(simd_insert_dyn(x8, 7, 100), i32x8::from_array([80, 81, 82, 83, 84, 85, 86, 100]));
 
         all_eq!(simd_extract_dyn(x2, 0), 20);
         all_eq!(simd_extract_dyn(x2, 1), 21);
@@ -108,38 +99,47 @@ fn main() {
         all_eq!(simd_extract_dyn(x8, 7), 87);
     }
 
-    let y2 = i32x2([120, 121]);
-    let y4 = i32x4([140, 141, 142, 143]);
-    let y8 = i32x8([180, 181, 182, 183, 184, 185, 186, 187]);
+    let y2 = i32x2::from_array([120, 121]);
+    let y4 = i32x4::from_array([140, 141, 142, 143]);
+    let y8 = i32x8::from_array([180, 181, 182, 183, 184, 185, 186, 187]);
     unsafe {
-        all_eq!(simd_shuffle(x2, y2, const { SimdShuffleIdx([3u32, 0]) }), i32x2([121, 20]));
+        all_eq!(
+            simd_shuffle(x2, y2, const { SimdShuffleIdx([3u32, 0]) }),
+            i32x2::from_array([121, 20])
+        );
         all_eq!(
             simd_shuffle(x2, y2, const { SimdShuffleIdx([3u32, 0, 1, 2]) }),
-            i32x4([121, 20, 21, 120])
+            i32x4::from_array([121, 20, 21, 120])
         );
         all_eq!(
             simd_shuffle(x2, y2, const { SimdShuffleIdx([3u32, 0, 1, 2, 1, 2, 3, 0]) }),
-            i32x8([121, 20, 21, 120, 21, 120, 121, 20])
+            i32x8::from_array([121, 20, 21, 120, 21, 120, 121, 20])
         );
 
-        all_eq!(simd_shuffle(x4, y4, const { SimdShuffleIdx([7u32, 2]) }), i32x2([143, 42]));
+        all_eq!(
+            simd_shuffle(x4, y4, const { SimdShuffleIdx([7u32, 2]) }),
+            i32x2::from_array([143, 42])
+        );
         all_eq!(
             simd_shuffle(x4, y4, const { SimdShuffleIdx([7u32, 2, 5, 0]) }),
-            i32x4([143, 42, 141, 40])
+            i32x4::from_array([143, 42, 141, 40])
         );
         all_eq!(
             simd_shuffle(x4, y4, const { SimdShuffleIdx([7u32, 2, 5, 0, 3, 6, 4, 1]) }),
-            i32x8([143, 42, 141, 40, 43, 142, 140, 41])
+            i32x8::from_array([143, 42, 141, 40, 43, 142, 140, 41])
         );
 
-        all_eq!(simd_shuffle(x8, y8, const { SimdShuffleIdx([11u32, 5]) }), i32x2([183, 85]));
+        all_eq!(
+            simd_shuffle(x8, y8, const { SimdShuffleIdx([11u32, 5]) }),
+            i32x2::from_array([183, 85])
+        );
         all_eq!(
             simd_shuffle(x8, y8, const { SimdShuffleIdx([11u32, 5, 15, 0]) }),
-            i32x4([183, 85, 187, 80])
+            i32x4::from_array([183, 85, 187, 80])
         );
         all_eq!(
             simd_shuffle(x8, y8, const { SimdShuffleIdx([11u32, 5, 15, 0, 3, 8, 12, 1]) }),
-            i32x8([183, 85, 187, 80, 83, 180, 184, 81])
+            i32x8::from_array([183, 85, 187, 80, 83, 180, 184, 81])
         );
     }
 }
diff --git a/tests/ui/simd/intrinsic/generic-gather-scatter-pass.rs b/tests/ui/simd/intrinsic/generic-gather-scatter-pass.rs
index b98d4d6575b..c2418c019ed 100644
--- a/tests/ui/simd/intrinsic/generic-gather-scatter-pass.rs
+++ b/tests/ui/simd/intrinsic/generic-gather-scatter-pass.rs
@@ -6,24 +6,26 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
+
 use std::intrinsics::simd::{simd_gather, simd_scatter};
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct x4<T>(pub [T; 4]);
+type x4<T> = Simd<T, 4>;
 
 fn main() {
     let mut x = [0_f32, 1., 2., 3., 4., 5., 6., 7.];
 
-    let default = x4([-3_f32, -3., -3., -3.]);
-    let s_strided = x4([0_f32, 2., -3., 6.]);
-    let mask = x4([-1_i32, -1, 0, -1]);
+    let default = x4::from_array([-3_f32, -3., -3., -3.]);
+    let s_strided = x4::from_array([0_f32, 2., -3., 6.]);
+    let mask = x4::from_array([-1_i32, -1, 0, -1]);
 
     // reading from *const
     unsafe {
         let pointer = x.as_ptr();
         let pointers =
-            x4([pointer.offset(0), pointer.offset(2), pointer.offset(4), pointer.offset(6)]);
+            x4::from_array(std::array::from_fn(|i| pointer.add(i * 2)));
 
         let r_strided = simd_gather(default, pointers, mask);
 
@@ -34,7 +36,7 @@ fn main() {
     unsafe {
         let pointer = x.as_mut_ptr();
         let pointers =
-            x4([pointer.offset(0), pointer.offset(2), pointer.offset(4), pointer.offset(6)]);
+            x4::from_array(std::array::from_fn(|i| pointer.add(i * 2)));
 
         let r_strided = simd_gather(default, pointers, mask);
 
@@ -45,9 +47,9 @@ fn main() {
     unsafe {
         let pointer = x.as_mut_ptr();
         let pointers =
-            x4([pointer.offset(0), pointer.offset(2), pointer.offset(4), pointer.offset(6)]);
+            x4::from_array(std::array::from_fn(|i| pointer.add(i * 2)));
 
-        let values = x4([42_f32, 43_f32, 44_f32, 45_f32]);
+        let values = x4::from_array([42_f32, 43_f32, 44_f32, 45_f32]);
         simd_scatter(values, pointers, mask);
 
         assert_eq!(x, [42., 1., 43., 3., 4., 5., 45., 7.]);
@@ -65,14 +67,14 @@ fn main() {
         &x[7] as *const f32,
     ];
 
-    let default = x4([y[0], y[0], y[0], y[0]]);
-    let s_strided = x4([y[0], y[2], y[0], y[6]]);
+    let default = x4::from_array([y[0], y[0], y[0], y[0]]);
+    let s_strided = x4::from_array([y[0], y[2], y[0], y[6]]);
 
     // reading from *const
     unsafe {
         let pointer = y.as_ptr();
         let pointers =
-            x4([pointer.offset(0), pointer.offset(2), pointer.offset(4), pointer.offset(6)]);
+            x4::from_array(std::array::from_fn(|i| pointer.add(i * 2)));
 
         let r_strided = simd_gather(default, pointers, mask);
 
@@ -83,7 +85,7 @@ fn main() {
     unsafe {
         let pointer = y.as_mut_ptr();
         let pointers =
-            x4([pointer.offset(0), pointer.offset(2), pointer.offset(4), pointer.offset(6)]);
+            x4::from_array(std::array::from_fn(|i| pointer.add(i * 2)));
 
         let r_strided = simd_gather(default, pointers, mask);
 
@@ -94,9 +96,9 @@ fn main() {
     unsafe {
         let pointer = y.as_mut_ptr();
         let pointers =
-            x4([pointer.offset(0), pointer.offset(2), pointer.offset(4), pointer.offset(6)]);
+            x4::from_array(std::array::from_fn(|i| pointer.add(i * 2)));
 
-        let values = x4([y[7], y[6], y[5], y[1]]);
+        let values = x4::from_array([y[7], y[6], y[5], y[1]]);
         simd_scatter(values, pointers, mask);
 
         let s = [
diff --git a/tests/ui/simd/intrinsic/generic-select-pass.rs b/tests/ui/simd/intrinsic/generic-select-pass.rs
index 0e5f7c4902f..ff2d70d6a97 100644
--- a/tests/ui/simd/intrinsic/generic-select-pass.rs
+++ b/tests/ui/simd/intrinsic/generic-select-pass.rs
@@ -6,38 +6,24 @@
 // Test that the simd_select intrinsics produces correct results.
 #![feature(repr_simd, core_intrinsics)]
 
-use std::intrinsics::simd::{simd_select, simd_select_bitmask};
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct i32x4(pub [i32; 4]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct u32x4(pub [u32; 4]);
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct u32x8([u32; 8]);
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct f32x4(pub [f32; 4]);
+use std::intrinsics::simd::{simd_select, simd_select_bitmask};
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct b8x4(pub [i8; 4]);
+type b8x4 = i8x4;
 
 fn main() {
-    let m0 = b8x4([!0, !0, !0, !0]);
-    let m1 = b8x4([0, 0, 0, 0]);
-    let m2 = b8x4([!0, !0, 0, 0]);
-    let m3 = b8x4([0, 0, !0, !0]);
-    let m4 = b8x4([!0, 0, !0, 0]);
+    let m0 = b8x4::from_array([!0, !0, !0, !0]);
+    let m1 = b8x4::from_array([0, 0, 0, 0]);
+    let m2 = b8x4::from_array([!0, !0, 0, 0]);
+    let m3 = b8x4::from_array([0, 0, !0, !0]);
+    let m4 = b8x4::from_array([!0, 0, !0, 0]);
 
     unsafe {
-        let a = i32x4([1, -2, 3, 4]);
-        let b = i32x4([5, 6, -7, 8]);
+        let a = i32x4::from_array([1, -2, 3, 4]);
+        let b = i32x4::from_array([5, 6, -7, 8]);
 
         let r: i32x4 = simd_select(m0, a, b);
         let e = a;
@@ -48,21 +34,21 @@ fn main() {
         assert_eq!(r, e);
 
         let r: i32x4 = simd_select(m2, a, b);
-        let e = i32x4([1, -2, -7, 8]);
+        let e = i32x4::from_array([1, -2, -7, 8]);
         assert_eq!(r, e);
 
         let r: i32x4 = simd_select(m3, a, b);
-        let e = i32x4([5, 6, 3, 4]);
+        let e = i32x4::from_array([5, 6, 3, 4]);
         assert_eq!(r, e);
 
         let r: i32x4 = simd_select(m4, a, b);
-        let e = i32x4([1, 6, 3, 8]);
+        let e = i32x4::from_array([1, 6, 3, 8]);
         assert_eq!(r, e);
     }
 
     unsafe {
-        let a = u32x4([1, 2, 3, 4]);
-        let b = u32x4([5, 6, 7, 8]);
+        let a = u32x4::from_array([1, 2, 3, 4]);
+        let b = u32x4::from_array([5, 6, 7, 8]);
 
         let r: u32x4 = simd_select(m0, a, b);
         let e = a;
@@ -73,21 +59,21 @@ fn main() {
         assert_eq!(r, e);
 
         let r: u32x4 = simd_select(m2, a, b);
-        let e = u32x4([1, 2, 7, 8]);
+        let e = u32x4::from_array([1, 2, 7, 8]);
         assert_eq!(r, e);
 
         let r: u32x4 = simd_select(m3, a, b);
-        let e = u32x4([5, 6, 3, 4]);
+        let e = u32x4::from_array([5, 6, 3, 4]);
         assert_eq!(r, e);
 
         let r: u32x4 = simd_select(m4, a, b);
-        let e = u32x4([1, 6, 3, 8]);
+        let e = u32x4::from_array([1, 6, 3, 8]);
         assert_eq!(r, e);
     }
 
     unsafe {
-        let a = f32x4([1., 2., 3., 4.]);
-        let b = f32x4([5., 6., 7., 8.]);
+        let a = f32x4::from_array([1., 2., 3., 4.]);
+        let b = f32x4::from_array([5., 6., 7., 8.]);
 
         let r: f32x4 = simd_select(m0, a, b);
         let e = a;
@@ -98,23 +84,23 @@ fn main() {
         assert_eq!(r, e);
 
         let r: f32x4 = simd_select(m2, a, b);
-        let e = f32x4([1., 2., 7., 8.]);
+        let e = f32x4::from_array([1., 2., 7., 8.]);
         assert_eq!(r, e);
 
         let r: f32x4 = simd_select(m3, a, b);
-        let e = f32x4([5., 6., 3., 4.]);
+        let e = f32x4::from_array([5., 6., 3., 4.]);
         assert_eq!(r, e);
 
         let r: f32x4 = simd_select(m4, a, b);
-        let e = f32x4([1., 6., 3., 8.]);
+        let e = f32x4::from_array([1., 6., 3., 8.]);
         assert_eq!(r, e);
     }
 
     unsafe {
         let t = !0 as i8;
         let f = 0 as i8;
-        let a = b8x4([t, f, t, f]);
-        let b = b8x4([f, f, f, t]);
+        let a = b8x4::from_array([t, f, t, f]);
+        let b = b8x4::from_array([f, f, f, t]);
 
         let r: b8x4 = simd_select(m0, a, b);
         let e = a;
@@ -125,21 +111,21 @@ fn main() {
         assert_eq!(r, e);
 
         let r: b8x4 = simd_select(m2, a, b);
-        let e = b8x4([t, f, f, t]);
+        let e = b8x4::from_array([t, f, f, t]);
         assert_eq!(r, e);
 
         let r: b8x4 = simd_select(m3, a, b);
-        let e = b8x4([f, f, t, f]);
+        let e = b8x4::from_array([f, f, t, f]);
         assert_eq!(r, e);
 
         let r: b8x4 = simd_select(m4, a, b);
-        let e = b8x4([t, f, t, t]);
+        let e = b8x4::from_array([t, f, t, t]);
         assert_eq!(r, e);
     }
 
     unsafe {
-        let a = u32x8([0, 1, 2, 3, 4, 5, 6, 7]);
-        let b = u32x8([8, 9, 10, 11, 12, 13, 14, 15]);
+        let a = u32x8::from_array([0, 1, 2, 3, 4, 5, 6, 7]);
+        let b = u32x8::from_array([8, 9, 10, 11, 12, 13, 14, 15]);
 
         let r: u32x8 = simd_select_bitmask(0u8, a, b);
         let e = b;
@@ -150,21 +136,21 @@ fn main() {
         assert_eq!(r, e);
 
         let r: u32x8 = simd_select_bitmask(0b01010101u8, a, b);
-        let e = u32x8([0, 9, 2, 11, 4, 13, 6, 15]);
+        let e = u32x8::from_array([0, 9, 2, 11, 4, 13, 6, 15]);
         assert_eq!(r, e);
 
         let r: u32x8 = simd_select_bitmask(0b10101010u8, a, b);
-        let e = u32x8([8, 1, 10, 3, 12, 5, 14, 7]);
+        let e = u32x8::from_array([8, 1, 10, 3, 12, 5, 14, 7]);
         assert_eq!(r, e);
 
         let r: u32x8 = simd_select_bitmask(0b11110000u8, a, b);
-        let e = u32x8([8, 9, 10, 11, 4, 5, 6, 7]);
+        let e = u32x8::from_array([8, 9, 10, 11, 4, 5, 6, 7]);
         assert_eq!(r, e);
     }
 
     unsafe {
-        let a = u32x4([0, 1, 2, 3]);
-        let b = u32x4([4, 5, 6, 7]);
+        let a = u32x4::from_array([0, 1, 2, 3]);
+        let b = u32x4::from_array([4, 5, 6, 7]);
 
         let r: u32x4 = simd_select_bitmask(0u8, a, b);
         let e = b;
@@ -175,15 +161,15 @@ fn main() {
         assert_eq!(r, e);
 
         let r: u32x4 = simd_select_bitmask(0b0101u8, a, b);
-        let e = u32x4([0, 5, 2, 7]);
+        let e = u32x4::from_array([0, 5, 2, 7]);
         assert_eq!(r, e);
 
         let r: u32x4 = simd_select_bitmask(0b1010u8, a, b);
-        let e = u32x4([4, 1, 6, 3]);
+        let e = u32x4::from_array([4, 1, 6, 3]);
         assert_eq!(r, e);
 
         let r: u32x4 = simd_select_bitmask(0b1100u8, a, b);
-        let e = u32x4([4, 5, 2, 3]);
+        let e = u32x4::from_array([4, 5, 2, 3]);
         assert_eq!(r, e);
     }
 }
diff --git a/tests/ui/simd/intrinsic/inlining-issue67557.rs b/tests/ui/simd/intrinsic/inlining-issue67557.rs
index 13e7266b2a5..14f180425d8 100644
--- a/tests/ui/simd/intrinsic/inlining-issue67557.rs
+++ b/tests/ui/simd/intrinsic/inlining-issue67557.rs
@@ -5,11 +5,13 @@
 //@ compile-flags: -Zmir-opt-level=4
 #![feature(core_intrinsics, repr_simd)]
 
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
+
 use std::intrinsics::simd::simd_shuffle;
 
-#[repr(simd)]
-#[derive(Debug, PartialEq)]
-struct Simd2([u8; 2]);
+type Simd2 = u8x2;
 
 #[repr(simd)]
 struct SimdShuffleIdx<const LEN: usize>([u32; LEN]);
@@ -17,7 +19,11 @@ struct SimdShuffleIdx<const LEN: usize>([u32; LEN]);
 fn main() {
     unsafe {
         const IDX: SimdShuffleIdx<2> = SimdShuffleIdx([0, 1]);
-        let p_res: Simd2 = simd_shuffle(Simd2([10, 11]), Simd2([12, 13]), IDX);
+        let p_res: Simd2 = simd_shuffle(
+            Simd2::from_array([10, 11]),
+            Simd2::from_array([12, 13]),
+            IDX,
+        );
         let a_res: Simd2 = inline_me();
 
         assert_10_11(p_res);
@@ -27,16 +33,16 @@ fn main() {
 
 #[inline(never)]
 fn assert_10_11(x: Simd2) {
-    assert_eq!(x, Simd2([10, 11]));
+    assert_eq!(x.into_array(), [10, 11]);
 }
 
 #[inline(never)]
 fn assert_10_13(x: Simd2) {
-    assert_eq!(x, Simd2([10, 13]));
+    assert_eq!(x.into_array(), [10, 13]);
 }
 
 #[inline(always)]
 unsafe fn inline_me() -> Simd2 {
     const IDX: SimdShuffleIdx<2> = SimdShuffleIdx([0, 3]);
-    simd_shuffle(Simd2([10, 11]), Simd2([12, 13]), IDX)
+    simd_shuffle(Simd2::from_array([10, 11]), Simd2::from_array([12, 13]), IDX)
 }
diff --git a/tests/ui/simd/intrinsic/ptr-cast.rs b/tests/ui/simd/intrinsic/ptr-cast.rs
index 3a73c0273e1..63b65d83f76 100644
--- a/tests/ui/simd/intrinsic/ptr-cast.rs
+++ b/tests/ui/simd/intrinsic/ptr-cast.rs
@@ -2,18 +2,20 @@
 
 #![feature(repr_simd, core_intrinsics)]
 
+#[path = "../../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
+
 use std::intrinsics::simd::{simd_cast_ptr, simd_expose_provenance, simd_with_exposed_provenance};
 
-#[derive(Copy, Clone)]
-#[repr(simd)]
-struct V<T>([T; 2]);
+type V<T> = Simd<T, 2>;
 
 fn main() {
     unsafe {
         let mut foo = 4i8;
         let ptr = &mut foo as *mut i8;
 
-        let ptrs = V::<*mut i8>([ptr, core::ptr::null_mut()]);
+        let ptrs: V::<*mut i8> = Simd([ptr, core::ptr::null_mut()]);
 
         // change constness and type
         let const_ptrs: V<*const u8> = simd_cast_ptr(ptrs);
@@ -22,8 +24,8 @@ fn main() {
 
         let with_exposed_provenance: V<*mut i8> = simd_with_exposed_provenance(exposed_addr);
 
-        assert!(const_ptrs.0 == [ptr as *const u8, core::ptr::null()]);
-        assert!(exposed_addr.0 == [ptr as usize, 0]);
-        assert!(with_exposed_provenance.0 == ptrs.0);
+        assert!(const_ptrs.into_array() == [ptr as *const u8, core::ptr::null()]);
+        assert!(exposed_addr.into_array() == [ptr as usize, 0]);
+        assert!(with_exposed_provenance.into_array() == ptrs.into_array());
     }
 }
diff --git a/tests/ui/simd/issue-105439.rs b/tests/ui/simd/issue-105439.rs
index 0a44f36fb2e..1d57eff341c 100644
--- a/tests/ui/simd/issue-105439.rs
+++ b/tests/ui/simd/issue-105439.rs
@@ -10,7 +10,9 @@ struct i32x4([i32; 4]);
 
 #[inline(always)]
 fn to_array(a: i32x4) -> [i32; 4] {
-    a.0
+    // This was originally just `a.0`, but that ended up being annoying enough
+    // that it was banned by <https://github.com/rust-lang/compiler-team/issues/838>
+    unsafe { std::mem::transmute(a) }
 }
 
 fn main() {
diff --git a/tests/ui/simd/issue-39720.rs b/tests/ui/simd/issue-39720.rs
index db441e55167..09d6142c920 100644
--- a/tests/ui/simd/issue-39720.rs
+++ b/tests/ui/simd/issue-39720.rs
@@ -2,16 +2,16 @@
 
 #![feature(repr_simd, core_intrinsics)]
 
-#[repr(simd)]
-#[derive(Copy, Clone, Debug)]
-pub struct Char3(pub [i8; 3]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, Debug)]
-pub struct Short3(pub [i16; 3]);
+pub type Char3 = Simd<i8, 3>;
+
+pub type Short3 = Simd<i16, 3>;
 
 fn main() {
-    let cast: Short3 = unsafe { std::intrinsics::simd::simd_cast(Char3([10, -3, -9])) };
+    let cast: Short3 = unsafe { std::intrinsics::simd::simd_cast(Char3::from_array([10, -3, -9])) };
 
     println!("{:?}", cast);
 }
diff --git a/tests/ui/simd/issue-85915-simd-ptrs.rs b/tests/ui/simd/issue-85915-simd-ptrs.rs
index 4e2379d0525..a74c36fabc1 100644
--- a/tests/ui/simd/issue-85915-simd-ptrs.rs
+++ b/tests/ui/simd/issue-85915-simd-ptrs.rs
@@ -6,35 +6,27 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::{simd_gather, simd_scatter};
-
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct cptrx4<T>([*const T; 4]);
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct mptrx4<T>([*mut T; 4]);
+use std::intrinsics::simd::{simd_gather, simd_scatter};
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct f32x4([f32; 4]);
+type cptrx4<T> = Simd<*const T, 4>;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct i32x4([i32; 4]);
+type mptrx4<T> = Simd<*mut T, 4>;
 
 fn main() {
     let mut x = [0_f32, 1., 2., 3., 4., 5., 6., 7.];
 
-    let default = f32x4([-3_f32, -3., -3., -3.]);
-    let s_strided = f32x4([0_f32, 2., -3., 6.]);
-    let mask = i32x4([-1_i32, -1, 0, -1]);
+    let default = f32x4::from_array([-3_f32, -3., -3., -3.]);
+    let s_strided = f32x4::from_array([0_f32, 2., -3., 6.]);
+    let mask = i32x4::from_array([-1_i32, -1, 0, -1]);
 
     // reading from *const
     unsafe {
         let pointer = &x as *const f32;
-        let pointers = cptrx4([
+        let pointers = cptrx4::from_array([
             pointer.offset(0) as *const f32,
             pointer.offset(2),
             pointer.offset(4),
@@ -49,14 +41,14 @@ fn main() {
     // writing to *mut
     unsafe {
         let pointer = &mut x as *mut f32;
-        let pointers = mptrx4([
+        let pointers = mptrx4::from_array([
             pointer.offset(0) as *mut f32,
             pointer.offset(2),
             pointer.offset(4),
             pointer.offset(6),
         ]);
 
-        let values = f32x4([42_f32, 43_f32, 44_f32, 45_f32]);
+        let values = f32x4::from_array([42_f32, 43_f32, 44_f32, 45_f32]);
         simd_scatter(values, pointers, mask);
 
         assert_eq!(x, [42., 1., 43., 3., 4., 5., 45., 7.]);
diff --git a/tests/ui/simd/issue-89193.rs b/tests/ui/simd/issue-89193.rs
index a6c3017572a..da4cd456589 100644
--- a/tests/ui/simd/issue-89193.rs
+++ b/tests/ui/simd/issue-89193.rs
@@ -6,36 +6,38 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
+
 use std::intrinsics::simd::simd_gather;
 
-#[repr(simd)]
-#[derive(Copy, Clone, PartialEq, Debug)]
-struct x4<T>(pub [T; 4]);
+type x4<T> = Simd<T, 4>;
 
 fn main() {
     let x: [usize; 4] = [10, 11, 12, 13];
-    let default = x4([0_usize, 1, 2, 3]);
+    let default = x4::from_array([0_usize, 1, 2, 3]);
     let all_set = u8::MAX as i8; // aka -1
-    let mask = x4([all_set, all_set, all_set, all_set]);
-    let expected = x4([10_usize, 11, 12, 13]);
+    let mask = x4::from_array([all_set, all_set, all_set, all_set]);
+    let expected = x4::from_array([10_usize, 11, 12, 13]);
 
     unsafe {
         let pointer = x.as_ptr();
         let pointers =
-            x4([pointer.offset(0), pointer.offset(1), pointer.offset(2), pointer.offset(3)]);
+            x4::from_array(std::array::from_fn(|i| pointer.add(i)));
         let result = simd_gather(default, pointers, mask);
         assert_eq!(result, expected);
     }
 
     // and again for isize
     let x: [isize; 4] = [10, 11, 12, 13];
-    let default = x4([0_isize, 1, 2, 3]);
-    let expected = x4([10_isize, 11, 12, 13]);
+    let default = x4::from_array([0_isize, 1, 2, 3]);
+    let expected = x4::from_array([10_isize, 11, 12, 13]);
 
     unsafe {
         let pointer = x.as_ptr();
         let pointers =
-            x4([pointer.offset(0), pointer.offset(1), pointer.offset(2), pointer.offset(3)]);
+            x4::from_array(std::array::from_fn(|i| pointer.add(i)));
         let result = simd_gather(default, pointers, mask);
         assert_eq!(result, expected);
     }
diff --git a/tests/ui/simd/masked-load-store.rs b/tests/ui/simd/masked-load-store.rs
index 69ea76581ee..da32ba611c4 100644
--- a/tests/ui/simd/masked-load-store.rs
+++ b/tests/ui/simd/masked-load-store.rs
@@ -1,11 +1,11 @@
 //@ run-pass
 #![feature(repr_simd, core_intrinsics)]
 
-use std::intrinsics::simd::{simd_masked_load, simd_masked_store};
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[derive(Copy, Clone)]
-#[repr(simd)]
-struct Simd<T, const N: usize>([T; N]);
+use std::intrinsics::simd::{simd_masked_load, simd_masked_store};
 
 fn main() {
     unsafe {
@@ -15,7 +15,7 @@ fn main() {
         let b: Simd<u8, 4> =
             simd_masked_load(Simd::<i8, 4>([-1, 0, -1, -1]), b_src.as_ptr(), b_default);
 
-        assert_eq!(&b.0, &[4, 9, 6, 7]);
+        assert_eq!(b.as_array(), &[4, 9, 6, 7]);
 
         let mut output = [u8::MAX; 5];
 
diff --git a/tests/ui/simd/monomorphize-shuffle-index.rs b/tests/ui/simd/monomorphize-shuffle-index.rs
index a56f2ea1452..1490f8e2319 100644
--- a/tests/ui/simd/monomorphize-shuffle-index.rs
+++ b/tests/ui/simd/monomorphize-shuffle-index.rs
@@ -11,6 +11,10 @@
 )]
 #![allow(incomplete_features)]
 
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
+
 #[cfg(old)]
 use std::intrinsics::simd::simd_shuffle;
 
@@ -18,10 +22,6 @@ use std::intrinsics::simd::simd_shuffle;
 #[rustc_intrinsic]
 unsafe fn simd_shuffle_const_generic<T, U, const I: &'static [u32]>(a: T, b: T) -> U;
 
-#[derive(Copy, Clone)]
-#[repr(simd)]
-struct Simd<T, const N: usize>([T; N]);
-
 trait Shuffle<const N: usize> {
     const I: Simd<u32, N>;
     const J: &'static [u32] = &Self::I.0;
@@ -57,9 +57,9 @@ fn main() {
     let b = Simd::<u8, 4>([4, 5, 6, 7]);
     unsafe {
         let x: Simd<u8, 4> = I1.shuffle(a, b);
-        assert_eq!(x.0, [0, 2, 4, 6]);
+        assert_eq!(x.into_array(), [0, 2, 4, 6]);
 
         let y: Simd<u8, 2> = I2.shuffle(a, b);
-        assert_eq!(y.0, [1, 5]);
+        assert_eq!(y.into_array(), [1, 5]);
     }
 }
diff --git a/tests/ui/simd/repr_packed.rs b/tests/ui/simd/repr_packed.rs
index cc54477ae71..f0c6de7c402 100644
--- a/tests/ui/simd/repr_packed.rs
+++ b/tests/ui/simd/repr_packed.rs
@@ -3,15 +3,16 @@
 #![feature(repr_simd, core_intrinsics)]
 #![allow(non_camel_case_types)]
 
-use std::intrinsics::simd::simd_add;
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[repr(simd, packed)]
-struct Simd<T, const N: usize>([T; N]);
+use std::intrinsics::simd::simd_add;
 
 fn check_size_align<T, const N: usize>() {
     use std::mem;
-    assert_eq!(mem::size_of::<Simd<T, N>>(), mem::size_of::<[T; N]>());
-    assert_eq!(mem::size_of::<Simd<T, N>>() % mem::align_of::<Simd<T, N>>(), 0);
+    assert_eq!(mem::size_of::<PackedSimd<T, N>>(), mem::size_of::<[T; N]>());
+    assert_eq!(mem::size_of::<PackedSimd<T, N>>() % mem::align_of::<PackedSimd<T, N>>(), 0);
 }
 
 fn check_ty<T>() {
@@ -35,14 +36,21 @@ fn main() {
 
     unsafe {
         // powers-of-two have no padding and have the same layout as #[repr(simd)]
-        let x: Simd<f64, 4> =
-            simd_add(Simd::<f64, 4>([0., 1., 2., 3.]), Simd::<f64, 4>([2., 2., 2., 2.]));
-        assert_eq!(std::mem::transmute::<_, [f64; 4]>(x), [2., 3., 4., 5.]);
+        let x: PackedSimd<f64, 4> =
+            simd_add(
+                PackedSimd::<f64, 4>([0., 1., 2., 3.]),
+                PackedSimd::<f64, 4>([2., 2., 2., 2.]),
+            );
+        assert_eq!(x.into_array(), [2., 3., 4., 5.]);
 
         // non-powers-of-two should have padding (which is removed by #[repr(packed)]),
         // but the intrinsic handles it
-        let x: Simd<f64, 3> = simd_add(Simd::<f64, 3>([0., 1., 2.]), Simd::<f64, 3>([2., 2., 2.]));
-        let arr: [f64; 3] = x.0;
+        let x: PackedSimd<f64, 3> =
+            simd_add(
+                PackedSimd::<f64, 3>([0., 1., 2.]),
+                PackedSimd::<f64, 3>([2., 2., 2.]),
+            );
+        let arr: [f64; 3] = x.into_array();
         assert_eq!(arr, [2., 3., 4.]);
     }
 }
diff --git a/tests/ui/simd/shuffle.rs b/tests/ui/simd/shuffle.rs
index cd270edcf00..061571a4786 100644
--- a/tests/ui/simd/shuffle.rs
+++ b/tests/ui/simd/shuffle.rs
@@ -10,10 +10,16 @@ use std::marker::ConstParamTy;
 
 use std::intrinsics::simd::simd_shuffle;
 
+// not using `minisimd` because of the `ConstParamTy`
 #[derive(Copy, Clone, ConstParamTy, PartialEq, Eq)]
 #[repr(simd)]
 struct Simd<T, const N: usize>([T; N]);
 
+fn into_array<T, const N: usize>(v: Simd<T, N>) -> [T; N] {
+    const { assert!(size_of::<Simd<T, N>>() == size_of::<[T; N]>()) }
+    unsafe { std::intrinsics::transmute_unchecked(v) }
+}
+
 unsafe fn __shuffle_vector16<const IDX: Simd<u32, 16>, T, U>(x: T, y: T) -> U {
     simd_shuffle(x, y, IDX)
 }
@@ -25,10 +31,10 @@ fn main() {
     let b = Simd::<u8, 4>([4, 5, 6, 7]);
     unsafe {
         let x: Simd<u8, 4> = simd_shuffle(a, b, I1);
-        assert_eq!(x.0, [0, 2, 4, 6]);
+        assert_eq!(into_array(x), [0, 2, 4, 6]);
 
         let y: Simd<u8, 2> = simd_shuffle(a, b, I2);
-        assert_eq!(y.0, [1, 5]);
+        assert_eq!(into_array(y), [1, 5]);
     }
 
     // Test that an indirection (via an unnamed constant)
diff --git a/tests/ui/simd/simd-bitmask-notpow2.rs b/tests/ui/simd/simd-bitmask-notpow2.rs
index 4935097065e..b9af591d1b9 100644
--- a/tests/ui/simd/simd-bitmask-notpow2.rs
+++ b/tests/ui/simd/simd-bitmask-notpow2.rs
@@ -4,21 +4,23 @@
 //@ ignore-endian-big
 #![feature(repr_simd, core_intrinsics)]
 
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
+
 use std::intrinsics::simd::{simd_bitmask, simd_select_bitmask};
 
 fn main() {
     // Non-power-of-2 multi-byte mask.
-    #[repr(simd, packed)]
     #[allow(non_camel_case_types)]
-    #[derive(Copy, Clone, Debug, PartialEq)]
-    struct i32x10([i32; 10]);
+    type i32x10 = PackedSimd<i32, 10>;
     impl i32x10 {
         fn splat(x: i32) -> Self {
             Self([x; 10])
         }
     }
     unsafe {
-        let mask = i32x10([!0, !0, 0, !0, 0, 0, !0, 0, !0, 0]);
+        let mask = i32x10::from_array([!0, !0, 0, !0, 0, 0, !0, 0, !0, 0]);
         let mask_bits = if cfg!(target_endian = "little") { 0b0101001011 } else { 0b1101001010 };
         let mask_bytes =
             if cfg!(target_endian = "little") { [0b01001011, 0b01] } else { [0b11, 0b01001010] };
@@ -43,17 +45,20 @@ fn main() {
     }
 
     // Test for a mask where the next multiple of 8 is not a power of two.
-    #[repr(simd, packed)]
     #[allow(non_camel_case_types)]
-    #[derive(Copy, Clone, Debug, PartialEq)]
-    struct i32x20([i32; 20]);
+    type i32x20 = PackedSimd<i32, 20>;
     impl i32x20 {
         fn splat(x: i32) -> Self {
             Self([x; 20])
         }
     }
     unsafe {
-        let mask = i32x20([!0, !0, 0, !0, 0, 0, !0, 0, !0, 0, 0, 0, 0, !0, !0, !0, !0, !0, !0, !0]);
+        let mask = i32x20::from_array([
+            !0, !0,  0, !0,  0,
+             0, !0,  0, !0,  0,
+             0,  0,  0, !0, !0,
+            !0, !0, !0, !0, !0,
+        ]);
         let mask_bits = if cfg!(target_endian = "little") {
             0b11111110000101001011
         } else {
diff --git a/tests/ui/simd/simd-bitmask.rs b/tests/ui/simd/simd-bitmask.rs
index 6fcceeaa24b..609dae3647b 100644
--- a/tests/ui/simd/simd-bitmask.rs
+++ b/tests/ui/simd/simd-bitmask.rs
@@ -1,11 +1,11 @@
 //@run-pass
 #![feature(repr_simd, core_intrinsics)]
 
-use std::intrinsics::simd::{simd_bitmask, simd_select_bitmask};
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+use minisimd::*;
 
-#[derive(Copy, Clone)]
-#[repr(simd)]
-struct Simd<T, const N: usize>([T; N]);
+use std::intrinsics::simd::{simd_bitmask, simd_select_bitmask};
 
 fn main() {
     unsafe {
@@ -41,11 +41,11 @@ fn main() {
 
         let mask = if cfg!(target_endian = "little") { 0b0101u8 } else { 0b1010u8 };
         let r = simd_select_bitmask(mask, a, b);
-        assert_eq!(r.0, e);
+        assert_eq!(r.into_array(), e);
 
         let mask = if cfg!(target_endian = "little") { [0b0101u8] } else { [0b1010u8] };
         let r = simd_select_bitmask(mask, a, b);
-        assert_eq!(r.0, e);
+        assert_eq!(r.into_array(), e);
 
         let a = Simd::<i32, 16>([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]);
         let b = Simd::<i32, 16>([16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]);
@@ -57,7 +57,7 @@ fn main() {
             0b0011000000001010u16
         };
         let r = simd_select_bitmask(mask, a, b);
-        assert_eq!(r.0, e);
+        assert_eq!(r.into_array(), e);
 
         let mask = if cfg!(target_endian = "little") {
             [0b00001100u8, 0b01010000u8]
@@ -65,6 +65,6 @@ fn main() {
             [0b00110000u8, 0b00001010u8]
         };
         let r = simd_select_bitmask(mask, a, b);
-        assert_eq!(r.0, e);
+        assert_eq!(r.into_array(), e);
     }
 }
diff --git a/tests/ui/simd/target-feature-mixup.rs b/tests/ui/simd/target-feature-mixup.rs
index 77f18615248..82902891b97 100644
--- a/tests/ui/simd/target-feature-mixup.rs
+++ b/tests/ui/simd/target-feature-mixup.rs
@@ -8,6 +8,11 @@
 
 #![feature(repr_simd, target_feature, cfg_target_feature)]
 
+#[path = "../../auxiliary/minisimd.rs"]
+mod minisimd;
+#[allow(unused)]
+use minisimd::*;
+
 use std::process::{Command, ExitStatus};
 use std::env;
 
@@ -50,19 +55,13 @@ fn is_sigill(status: ExitStatus) -> bool {
 #[allow(nonstandard_style)]
 mod test {
     // An SSE type
-    #[repr(simd)]
-    #[derive(PartialEq, Debug, Clone, Copy)]
-    struct __m128i([u64; 2]);
+    type __m128i = super::u64x2;
 
     // An AVX type
-    #[repr(simd)]
-    #[derive(PartialEq, Debug, Clone, Copy)]
-    struct __m256i([u64; 4]);
+    type __m256i = super::u64x4;
 
     // An AVX-512 type
-    #[repr(simd)]
-    #[derive(PartialEq, Debug, Clone, Copy)]
-    struct __m512i([u64; 8]);
+    type __m512i = super::u64x8;
 
     pub fn main(level: &str) {
         unsafe {
@@ -88,9 +87,9 @@ mod test {
         )*) => ($(
             $(#[$attr])*
             unsafe fn $main(level: &str) {
-                let m128 = __m128i([1, 2]);
-                let m256 = __m256i([3, 4, 5, 6]);
-                let m512 = __m512i([7, 8, 9, 10, 11, 12, 13, 14]);
+                let m128 = __m128i::from_array([1, 2]);
+                let m256 = __m256i::from_array([3, 4, 5, 6]);
+                let m512 = __m512i::from_array([7, 8, 9, 10, 11, 12, 13, 14]);
                 assert_eq!(id_sse_128(m128), m128);
                 assert_eq!(id_sse_256(m256), m256);
                 assert_eq!(id_sse_512(m512), m512);
@@ -125,55 +124,55 @@ mod test {
 
     #[target_feature(enable = "sse2")]
     unsafe fn id_sse_128(a: __m128i) -> __m128i {
-        assert_eq!(a, __m128i([1, 2]));
+        assert_eq!(a, __m128i::from_array([1, 2]));
         a.clone()
     }
 
     #[target_feature(enable = "sse2")]
     unsafe fn id_sse_256(a: __m256i) -> __m256i {
-        assert_eq!(a, __m256i([3, 4, 5, 6]));
+        assert_eq!(a, __m256i::from_array([3, 4, 5, 6]));
         a.clone()
     }
 
     #[target_feature(enable = "sse2")]
     unsafe fn id_sse_512(a: __m512i) -> __m512i {
-        assert_eq!(a, __m512i([7, 8, 9, 10, 11, 12, 13, 14]));
+        assert_eq!(a, __m512i::from_array([7, 8, 9, 10, 11, 12, 13, 14]));
         a.clone()
     }
 
     #[target_feature(enable = "avx")]
     unsafe fn id_avx_128(a: __m128i) -> __m128i {
-        assert_eq!(a, __m128i([1, 2]));
+        assert_eq!(a, __m128i::from_array([1, 2]));
         a.clone()
     }
 
     #[target_feature(enable = "avx")]
     unsafe fn id_avx_256(a: __m256i) -> __m256i {
-        assert_eq!(a, __m256i([3, 4, 5, 6]));
+        assert_eq!(a, __m256i::from_array([3, 4, 5, 6]));
         a.clone()
     }
 
     #[target_feature(enable = "avx")]
     unsafe fn id_avx_512(a: __m512i) -> __m512i {
-        assert_eq!(a, __m512i([7, 8, 9, 10, 11, 12, 13, 14]));
+        assert_eq!(a, __m512i::from_array([7, 8, 9, 10, 11, 12, 13, 14]));
         a.clone()
     }
 
     #[target_feature(enable = "avx512bw")]
     unsafe fn id_avx512_128(a: __m128i) -> __m128i {
-        assert_eq!(a, __m128i([1, 2]));
+        assert_eq!(a, __m128i::from_array([1, 2]));
         a.clone()
     }
 
     #[target_feature(enable = "avx512bw")]
     unsafe fn id_avx512_256(a: __m256i) -> __m256i {
-        assert_eq!(a, __m256i([3, 4, 5, 6]));
+        assert_eq!(a, __m256i::from_array([3, 4, 5, 6]));
         a.clone()
     }
 
     #[target_feature(enable = "avx512bw")]
     unsafe fn id_avx512_512(a: __m512i) -> __m512i {
-        assert_eq!(a, __m512i([7, 8, 9, 10, 11, 12, 13, 14]));
+        assert_eq!(a, __m512i::from_array([7, 8, 9, 10, 11, 12, 13, 14]));
         a.clone()
     }
 }
diff --git a/tests/ui/traits/const-traits/hir-const-check.rs b/tests/ui/traits/const-traits/hir-const-check.rs
index c485fb12184..1b6fa1afab9 100644
--- a/tests/ui/traits/const-traits/hir-const-check.rs
+++ b/tests/ui/traits/const-traits/hir-const-check.rs
@@ -1,8 +1,10 @@
+//@ check-pass
 //@ compile-flags: -Znext-solver
 
 // Regression test for #69615.
 
 #![feature(const_trait_impl)]
+#![feature(const_try)]
 
 #[const_trait]
 pub trait MyTrait {
@@ -12,8 +14,6 @@ pub trait MyTrait {
 impl const MyTrait for () {
     fn method(&self) -> Option<()> {
         Some(())?;
-        //~^ ERROR `?` is not allowed on
-        //~| ERROR `?` is not allowed on
         None
     }
 }
diff --git a/tests/ui/traits/const-traits/hir-const-check.stderr b/tests/ui/traits/const-traits/hir-const-check.stderr
deleted file mode 100644
index d66a7ea3144..00000000000
--- a/tests/ui/traits/const-traits/hir-const-check.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
-  --> $DIR/hir-const-check.rs:14:9
-   |
-LL |         Some(())?;
-   |         ^^^^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `Option<()>` in constant functions
-  --> $DIR/hir-const-check.rs:14:9
-   |
-LL |         Some(())?;
-   |         ^^^^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0015`.
diff --git a/tests/ui/traits/const-traits/ice-119717-constant-lifetime.rs b/tests/ui/traits/const-traits/ice-119717-constant-lifetime.rs
index 47c85980aca..af552ac0c5e 100644
--- a/tests/ui/traits/const-traits/ice-119717-constant-lifetime.rs
+++ b/tests/ui/traits/const-traits/ice-119717-constant-lifetime.rs
@@ -1,11 +1,10 @@
 #![allow(incomplete_features)]
-#![feature(const_trait_impl, try_trait_v2)]
+#![feature(const_trait_impl, const_try, try_trait_v2)]
 
 use std::ops::FromResidual;
 
 impl<T> const FromResidual for T {
-    //~^ ERROR const `impl` for trait `FromResidual` which is not `const`
-    //~| ERROR type parameter `T` must be used as the type parameter for some local type
+    //~^ ERROR type parameter `T` must be used as the type parameter for some local type
     fn from_residual(t: T) -> _ {
         //~^ ERROR the placeholder `_` is not allowed
         t
diff --git a/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr b/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr
index 5c5fba95f02..08fc73fe77b 100644
--- a/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr
+++ b/tests/ui/traits/const-traits/ice-119717-constant-lifetime.stderr
@@ -1,12 +1,3 @@
-error: const `impl` for trait `FromResidual` which is not `const`
-  --> $DIR/ice-119717-constant-lifetime.rs:6:15
-   |
-LL | impl<T> const FromResidual for T {
-   |               ^^^^^^^^^^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
 error[E0210]: type parameter `T` must be used as the type parameter for some local type (e.g., `MyStruct<T>`)
   --> $DIR/ice-119717-constant-lifetime.rs:6:6
    |
@@ -17,7 +8,7 @@ LL | impl<T> const FromResidual for T {
    = note: only traits defined in the current crate can be implemented for a type parameter
 
 error[E0121]: the placeholder `_` is not allowed within types on item signatures for associated functions
-  --> $DIR/ice-119717-constant-lifetime.rs:9:31
+  --> $DIR/ice-119717-constant-lifetime.rs:8:31
    |
 LL |     fn from_residual(t: T) -> _ {
    |                               ^ not allowed in type signatures
@@ -28,7 +19,7 @@ LL -     fn from_residual(t: T) -> _ {
 LL +     fn from_residual(t: T) -> T {
    |
 
-error: aborting due to 3 previous errors
+error: aborting due to 2 previous errors
 
 Some errors have detailed explanations: E0121, E0210.
 For more information about an error, try `rustc --explain E0121`.
diff --git a/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.rs b/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.rs
index 5e368b9e6a9..bfce9dc9c73 100644
--- a/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.rs
+++ b/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.rs
@@ -6,20 +6,16 @@ struct TryMe;
 struct Error;
 
 impl const FromResidual<Error> for TryMe {}
-//~^ ERROR const `impl` for trait `FromResidual` which is not `const`
-//~| ERROR not all trait items implemented
+//~^ ERROR not all trait items implemented
 
 impl const Try for TryMe {
-    //~^ ERROR const `impl` for trait `Try` which is not `const`
-    //~| ERROR not all trait items implemented
+    //~^ ERROR not all trait items implemented
     type Output = ();
     type Residual = Error;
 }
 
 const fn t() -> TryMe {
     TryMe?;
-    //~^ ERROR `?` is not allowed on
-    //~| ERROR `?` is not allowed on
     TryMe
 }
 
diff --git a/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.stderr b/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.stderr
index 849d6522cd6..183203aa8ba 100644
--- a/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.stderr
+++ b/tests/ui/traits/const-traits/ice-126148-failed-to-normalize.stderr
@@ -1,12 +1,3 @@
-error: const `impl` for trait `FromResidual` which is not `const`
-  --> $DIR/ice-126148-failed-to-normalize.rs:8:12
-   |
-LL | impl const FromResidual<Error> for TryMe {}
-   |            ^^^^^^^^^^^^^^^^^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
 error[E0046]: not all trait items implemented, missing: `from_residual`
   --> $DIR/ice-126148-failed-to-normalize.rs:8:1
    |
@@ -15,17 +6,8 @@ LL | impl const FromResidual<Error> for TryMe {}
    |
    = help: implement the missing item: `fn from_residual(_: Error) -> Self { todo!() }`
 
-error: const `impl` for trait `Try` which is not `const`
-  --> $DIR/ice-126148-failed-to-normalize.rs:12:12
-   |
-LL | impl const Try for TryMe {
-   |            ^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
 error[E0046]: not all trait items implemented, missing: `from_output`, `branch`
-  --> $DIR/ice-126148-failed-to-normalize.rs:12:1
+  --> $DIR/ice-126148-failed-to-normalize.rs:11:1
    |
 LL | impl const Try for TryMe {
    | ^^^^^^^^^^^^^^^^^^^^^^^^ missing `from_output`, `branch` in implementation
@@ -33,23 +15,6 @@ LL | impl const Try for TryMe {
    = help: implement the missing item: `fn from_output(_: <Self as Try>::Output) -> Self { todo!() }`
    = help: implement the missing item: `fn branch(self) -> ControlFlow<<Self as Try>::Residual, <Self as Try>::Output> { todo!() }`
 
-error[E0015]: `?` is not allowed on `TryMe` in constant functions
-  --> $DIR/ice-126148-failed-to-normalize.rs:20:5
-   |
-LL |     TryMe?;
-   |     ^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `TryMe` in constant functions
-  --> $DIR/ice-126148-failed-to-normalize.rs:20:5
-   |
-LL |     TryMe?;
-   |     ^^^^^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 6 previous errors
+error: aborting due to 2 previous errors
 
-Some errors have detailed explanations: E0015, E0046.
-For more information about an error, try `rustc --explain E0015`.
+For more information about this error, try `rustc --explain E0046`.
diff --git a/tests/ui/traits/const-traits/trait-default-body-stability.rs b/tests/ui/traits/const-traits/trait-default-body-stability.rs
index 567f1b3c284..a8157d37ce3 100644
--- a/tests/ui/traits/const-traits/trait-default-body-stability.rs
+++ b/tests/ui/traits/const-traits/trait-default-body-stability.rs
@@ -1,4 +1,4 @@
-//@ known-bug: #110395
+//@ check-pass
 //@ compile-flags: -Znext-solver
 #![allow(incomplete_features)]
 #![feature(staged_api)]
diff --git a/tests/ui/traits/const-traits/trait-default-body-stability.stderr b/tests/ui/traits/const-traits/trait-default-body-stability.stderr
deleted file mode 100644
index b995d6f4f3d..00000000000
--- a/tests/ui/traits/const-traits/trait-default-body-stability.stderr
+++ /dev/null
@@ -1,37 +0,0 @@
-error: const `impl` for trait `Try` which is not `const`
-  --> $DIR/trait-default-body-stability.rs:19:12
-   |
-LL | impl const Try for T {
-   |            ^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
-error: const `impl` for trait `FromResidual` which is not `const`
-  --> $DIR/trait-default-body-stability.rs:34:12
-   |
-LL | impl const FromResidual for T {
-   |            ^^^^^^^^^^^^ this trait is not `const`
-   |
-   = note: marking a trait with `const` ensures all default method bodies are `const`
-   = note: adding a non-const method body in the future would be a breaking change
-
-error[E0015]: `?` is not allowed on `T` in constant functions
-  --> $DIR/trait-default-body-stability.rs:46:9
-   |
-LL |         T?
-   |         ^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error[E0015]: `?` is not allowed on `T` in constant functions
-  --> $DIR/trait-default-body-stability.rs:46:9
-   |
-LL |         T?
-   |         ^^
-   |
-   = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0015`.
diff --git a/tests/crashes/131507.rs b/tests/ui/trivial-bounds/everybody-copies.rs
index 05b5e76bed7..3469fa1f1da 100644
--- a/tests/crashes/131507.rs
+++ b/tests/ui/trivial-bounds/everybody-copies.rs
@@ -1,5 +1,8 @@
-//@ known-bug: #131507
-//@ compile-flags: -Zmir-enable-passes=+GVN -Zmir-enable-passes=+Inline -Zvalidate-mir
+//! Regression test for #131507
+//@ compile-flags: -Zmir-enable-passes=+GVN -Zmir-enable-passes=+Inline -Zvalidate-mir --crate-type lib
+//@ build-pass
+
+#![expect(incomplete_features)]
 #![feature(non_lifetime_binders)]
 
 fn brick()
diff --git a/tests/crashes/121363.rs b/tests/ui/trivial-bounds/two-sized-strs.rs
index 38796342284..5cb82eac417 100644
--- a/tests/crashes/121363.rs
+++ b/tests/ui/trivial-bounds/two-sized-strs.rs
@@ -1,7 +1,9 @@
-//@ known-bug: #121363
+//! Regression test for #121363
 //@ compile-flags: -Zmir-enable-passes=+GVN --crate-type lib
+//@ build-pass
 
 #![feature(trivial_bounds)]
+#![expect(trivial_bounds)]
 
 #[derive(Debug)]
 struct TwoStrs(str, str)
diff --git a/tests/ui/type-alias-impl-trait/issue-60662.stdout b/tests/ui/type-alias-impl-trait/issue-60662.stdout
index 56fef852e37..52152a73aff 100644
--- a/tests/ui/type-alias-impl-trait/issue-60662.stdout
+++ b/tests/ui/type-alias-impl-trait/issue-60662.stdout
@@ -5,7 +5,7 @@
 #![feature(type_alias_impl_trait)]
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 
 trait Animal { }
diff --git a/tests/ui/uninhabited/auxiliary/staged-api.rs b/tests/ui/uninhabited/auxiliary/staged-api.rs
index 342ecf020ea..925bb1e0c65 100644
--- a/tests/ui/uninhabited/auxiliary/staged-api.rs
+++ b/tests/ui/uninhabited/auxiliary/staged-api.rs
@@ -6,3 +6,9 @@ pub struct Foo<T> {
     #[unstable(feature = "unstable", issue = "none")]
     pub field: T,
 }
+
+#[unstable(feature = "my_coro_state", issue = "none")]
+pub enum MyCoroutineState<Y, R> {
+    Yielded(Y),
+    Complete(R),
+}
diff --git a/tests/ui/uninhabited/uninhabited-unstable-field.current.stderr b/tests/ui/uninhabited/uninhabited-unstable-field.current.stderr
deleted file mode 100644
index 9e0feb4c473..00000000000
--- a/tests/ui/uninhabited/uninhabited-unstable-field.current.stderr
+++ /dev/null
@@ -1,22 +0,0 @@
-error[E0004]: non-exhaustive patterns: type `Foo<Void>` is non-empty
-  --> $DIR/uninhabited-unstable-field.rs:13:11
-   |
-LL |     match x {}
-   |           ^
-   |
-note: `Foo<Void>` defined here
-  --> $DIR/auxiliary/staged-api.rs:5:1
-   |
-LL | pub struct Foo<T> {
-   | ^^^^^^^^^^^^^^^^^
-   = note: the matched value is of type `Foo<Void>`
-help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown
-   |
-LL ~     match x {
-LL +         _ => todo!(),
-LL ~     }
-   |
-
-error: aborting due to 1 previous error
-
-For more information about this error, try `rustc --explain E0004`.
diff --git a/tests/ui/uninhabited/uninhabited-unstable-field.exhaustive.stderr b/tests/ui/uninhabited/uninhabited-unstable-field.exhaustive.stderr
deleted file mode 100644
index 9e0feb4c473..00000000000
--- a/tests/ui/uninhabited/uninhabited-unstable-field.exhaustive.stderr
+++ /dev/null
@@ -1,22 +0,0 @@
-error[E0004]: non-exhaustive patterns: type `Foo<Void>` is non-empty
-  --> $DIR/uninhabited-unstable-field.rs:13:11
-   |
-LL |     match x {}
-   |           ^
-   |
-note: `Foo<Void>` defined here
-  --> $DIR/auxiliary/staged-api.rs:5:1
-   |
-LL | pub struct Foo<T> {
-   | ^^^^^^^^^^^^^^^^^
-   = note: the matched value is of type `Foo<Void>`
-help: ensure that all possible cases are being handled by adding a match arm with a wildcard pattern as shown
-   |
-LL ~     match x {
-LL +         _ => todo!(),
-LL ~     }
-   |
-
-error: aborting due to 1 previous error
-
-For more information about this error, try `rustc --explain E0004`.
diff --git a/tests/ui/uninhabited/uninhabited-unstable-field.rs b/tests/ui/uninhabited/uninhabited-unstable-field.rs
index 9b507c518ab..321b864aa27 100644
--- a/tests/ui/uninhabited/uninhabited-unstable-field.rs
+++ b/tests/ui/uninhabited/uninhabited-unstable-field.rs
@@ -1,29 +1,45 @@
 //@ aux-build: staged-api.rs
-//@ revisions: current exhaustive
-
+//! The field of `Pin` used to be public, which would cause `Pin<Void>` to be uninhabited. To remedy
+//! this, we temporarily made it so unstable fields are always considered inhabited. This has now
+//! been reverted, and this file ensures that we don't special-case unstable fields wrt
+//! inhabitedness anymore.
 #![feature(exhaustive_patterns)]
+#![feature(never_type)]
+#![feature(my_coro_state)] // Custom feature from `staged-api.rs`
+#![deny(unreachable_patterns)]
 
 extern crate staged_api;
 
-use staged_api::Foo;
+use staged_api::{Foo, MyCoroutineState};
 
 enum Void {}
 
 fn demo(x: Foo<Void>) {
     match x {}
-    //~^ ERROR non-exhaustive patterns
 }
 
-// Ensure that the pattern is not considered unreachable.
+// Ensure that the pattern is considered unreachable.
 fn demo2(x: Foo<Void>) {
     match x {
-        Foo { .. } => {}
+        Foo { .. } => {} //~ ERROR unreachable
     }
 }
 
 // Same as above, but for wildcard.
 fn demo3(x: Foo<Void>) {
-    match x { _ => {} }
+    match x {
+        _ => {} //~ ERROR unreachable
+    }
+}
+
+fn unstable_enum(x: MyCoroutineState<i32, !>) {
+    match x {
+        MyCoroutineState::Yielded(_) => {}
+    }
+    match x {
+        MyCoroutineState::Yielded(_) => {}
+        MyCoroutineState::Complete(_) => {} //~ ERROR unreachable
+    }
 }
 
 fn main() {}
diff --git a/tests/ui/uninhabited/uninhabited-unstable-field.stderr b/tests/ui/uninhabited/uninhabited-unstable-field.stderr
new file mode 100644
index 00000000000..a0c9f9366a6
--- /dev/null
+++ b/tests/ui/uninhabited/uninhabited-unstable-field.stderr
@@ -0,0 +1,40 @@
+error: unreachable pattern
+  --> $DIR/uninhabited-unstable-field.rs:24:9
+   |
+LL |         Foo { .. } => {}
+   |         ^^^^^^^^^^------
+   |         |
+   |         matches no values because `Foo<Void>` is uninhabited
+   |         help: remove the match arm
+   |
+   = note: to learn more about uninhabited types, see https://doc.rust-lang.org/nomicon/exotic-sizes.html#empty-types
+note: the lint level is defined here
+  --> $DIR/uninhabited-unstable-field.rs:9:9
+   |
+LL | #![deny(unreachable_patterns)]
+   |         ^^^^^^^^^^^^^^^^^^^^
+
+error: unreachable pattern
+  --> $DIR/uninhabited-unstable-field.rs:31:9
+   |
+LL |         _ => {}
+   |         ^------
+   |         |
+   |         matches no values because `Foo<Void>` is uninhabited
+   |         help: remove the match arm
+   |
+   = note: to learn more about uninhabited types, see https://doc.rust-lang.org/nomicon/exotic-sizes.html#empty-types
+
+error: unreachable pattern
+  --> $DIR/uninhabited-unstable-field.rs:41:9
+   |
+LL |         MyCoroutineState::Complete(_) => {}
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------
+   |         |
+   |         matches no values because `!` is uninhabited
+   |         help: remove the match arm
+   |
+   = note: to learn more about uninhabited types, see https://doc.rust-lang.org/nomicon/exotic-sizes.html#empty-types
+
+error: aborting due to 3 previous errors
+
diff --git a/tests/ui/unpretty/bad-literal.stdout b/tests/ui/unpretty/bad-literal.stdout
index 06116a4ab55..ba8467359cd 100644
--- a/tests/ui/unpretty/bad-literal.stdout
+++ b/tests/ui/unpretty/bad-literal.stdout
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ compile-flags: -Zunpretty=hir
 //@ check-fail
diff --git a/tests/ui/unpretty/debug-fmt-hir.stdout b/tests/ui/unpretty/debug-fmt-hir.stdout
index dc18675ea80..1d224c9e91f 100644
--- a/tests/ui/unpretty/debug-fmt-hir.stdout
+++ b/tests/ui/unpretty/debug-fmt-hir.stdout
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ compile-flags: -Zunpretty=hir
 //@ check-pass
diff --git a/tests/ui/unpretty/deprecated-attr.stdout b/tests/ui/unpretty/deprecated-attr.stdout
index 042c2f61bd4..0abeef6f61e 100644
--- a/tests/ui/unpretty/deprecated-attr.stdout
+++ b/tests/ui/unpretty/deprecated-attr.stdout
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ compile-flags: -Zunpretty=hir
 //@ check-pass
diff --git a/tests/ui/unpretty/diagnostic-attr.stdout b/tests/ui/unpretty/diagnostic-attr.stdout
index 3b15a845d68..a1325c61ca7 100644
--- a/tests/ui/unpretty/diagnostic-attr.stdout
+++ b/tests/ui/unpretty/diagnostic-attr.stdout
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ compile-flags: -Zunpretty=hir
 //@ check-pass
diff --git a/tests/ui/unpretty/exhaustive-asm.hir.stdout b/tests/ui/unpretty/exhaustive-asm.hir.stdout
index ec9bda57331..bbd846a8845 100644
--- a/tests/ui/unpretty/exhaustive-asm.hir.stdout
+++ b/tests/ui/unpretty/exhaustive-asm.hir.stdout
@@ -1,6 +1,6 @@
 #[prelude_import]
 use std::prelude::rust_2024::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ revisions: expanded hir
 //@[expanded]compile-flags: -Zunpretty=expanded
diff --git a/tests/ui/unpretty/exhaustive.hir.stdout b/tests/ui/unpretty/exhaustive.hir.stdout
index a559d51ed5d..77807728c9d 100644
--- a/tests/ui/unpretty/exhaustive.hir.stdout
+++ b/tests/ui/unpretty/exhaustive.hir.stdout
@@ -30,7 +30,7 @@
 #![allow(incomplete_features)]
 #[prelude_import]
 use std::prelude::rust_2024::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 
 #[prelude_import]
diff --git a/tests/ui/unpretty/flattened-format-args.stdout b/tests/ui/unpretty/flattened-format-args.stdout
index 4af82924c7b..3cd02734665 100644
--- a/tests/ui/unpretty/flattened-format-args.stdout
+++ b/tests/ui/unpretty/flattened-format-args.stdout
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ compile-flags: -Zunpretty=hir -Zflatten-format-args=yes
 //@ check-pass
diff --git a/tests/ui/unpretty/let-else-hir.stdout b/tests/ui/unpretty/let-else-hir.stdout
index a6dd943ec1b..a83790d8bee 100644
--- a/tests/ui/unpretty/let-else-hir.stdout
+++ b/tests/ui/unpretty/let-else-hir.stdout
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ compile-flags: -Zunpretty=hir
 //@ check-pass
diff --git a/tests/ui/unpretty/self-hir.stdout b/tests/ui/unpretty/self-hir.stdout
index a9e80b1f592..1eafc3c8b46 100644
--- a/tests/ui/unpretty/self-hir.stdout
+++ b/tests/ui/unpretty/self-hir.stdout
@@ -1,6 +1,6 @@
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 //@ compile-flags: -Zunpretty=hir
 //@ check-pass
diff --git a/tests/ui/unpretty/unpretty-expr-fn-arg.stdout b/tests/ui/unpretty/unpretty-expr-fn-arg.stdout
index fd2e794fcac..e9fd2222a8d 100644
--- a/tests/ui/unpretty/unpretty-expr-fn-arg.stdout
+++ b/tests/ui/unpretty/unpretty-expr-fn-arg.stdout
@@ -10,7 +10,7 @@
 #![allow(dead_code)]
 #[prelude_import]
 use ::std::prelude::rust_2015::*;
-#[macro_use]
+#[attr = MacroUse {arguments: UseAll}]
 extern crate std;
 
 fn main() ({ } as ())
diff --git a/tests/ui/wasm/simd-to-array-80108.rs b/tests/ui/wasm/simd-to-array-80108.rs
index c7f8585eaa4..f6b368992be 100644
--- a/tests/ui/wasm/simd-to-array-80108.rs
+++ b/tests/ui/wasm/simd-to-array-80108.rs
@@ -10,6 +10,8 @@ pub struct Vector([i32; 4]);
 
 impl Vector {
     pub const fn to_array(self) -> [i32; 4] {
-        self.0
+        // This used to just be `.0`, but that was banned in
+        // <https://github.com/rust-lang/compiler-team/issues/838>
+        unsafe { std::mem::transmute(self) }
     }
 }
diff --git a/triagebot.toml b/triagebot.toml
index 61d8a814c89..5b522a6617c 100644
--- a/triagebot.toml
+++ b/triagebot.toml
@@ -302,9 +302,9 @@ trigger_files = [
     "compiler",
 
     # Tests
-    "tests/assembly",
+    "tests/assembly-llvm",
     "tests/auxiliary",
-    "tests/codegen",
+    "tests/codegen-llvm",
     "tests/codegen-units",
     "tests/COMPILER_TESTS.md",
     "tests/coverage",
@@ -558,10 +558,10 @@ trigger_files = [
     "src/doc/unstable-book/src/language-features/cfg-sanitize.md",
     "src/doc/unstable-book/src/language-features/cfi-encoding.md",
     "src/doc/unstable-book/src/language-features/no-sanitize.md",
-    "tests/codegen/sanitizer",
-    "tests/codegen/split-lto-unit.rs",
-    "tests/codegen/stack-probes-inline.rs",
-    "tests/codegen/stack-protector.rs",
+    "tests/codegen-llvm/sanitizer",
+    "tests/codegen-llvm/split-lto-unit.rs",
+    "tests/codegen-llvm/stack-probes-inline.rs",
+    "tests/codegen-llvm/stack-protector.rs",
     "tests/ui/sanitizer",
     "tests/ui/stack-protector"
 ]
@@ -1147,6 +1147,12 @@ cc = ["@nnethercote"]
 message = "Changes to the size of AST and/or HIR nodes."
 cc = ["@nnethercote"]
 
+[mentions."tests/ui/issues"]
+message = """
+This PR modifies `tests/ui/issues/`. If this PR is adding new tests to `tests/ui/issues/`,
+please refrain from doing so, and instead add it to more descriptive subdirectories.
+"""
+
 [mentions."compiler/rustc_sanitizers"]
 cc = ["@rcvalle"]
 
@@ -1183,16 +1189,16 @@ cc = ["@Urgau"]
 [mentions."src/doc/rustc/src/platform-support"]
 cc = ["@Noratrieb"]
 
-[mentions."tests/codegen/sanitizer"]
+[mentions."tests/codegen-llvm/sanitizer"]
 cc = ["@rcvalle"]
 
-[mentions."tests/codegen/split-lto-unit.rs"]
+[mentions."tests/codegen-llvm/split-lto-unit.rs"]
 cc = ["@rust-lang/project-exploit-mitigations", "@rcvalle"]
 
-[mentions."tests/codegen/stack-probes-inline.rs"]
+[mentions."tests/codegen-llvm/stack-probes-inline.rs"]
 cc = ["@rust-lang/project-exploit-mitigations", "@rcvalle"]
 
-[mentions."tests/codegen/stack-protector.rs"]
+[mentions."tests/codegen-llvm/stack-protector.rs"]
 cc = ["@rust-lang/project-exploit-mitigations", "@rcvalle"]
 
 [mentions."tests/ui/sanitizer"]