DoxigAlpha

fromCallingConvention

Returns the array of Arch to which a specific std.builtin.CallingConvention applies. Asserts that cc is not .auto, .@"async", .naked, or .@"inline".

Function parameters

Parameters

#
cc:std.builtin.CallingConvention.Tag

Type definitions in this namespace

Types

#

Functions in this namespace

Functions

#
requiresLibC
Does this target require linking libc? This may be the case if the target has an unstable
cCharSignedness
Default signedness of `char` for the native C compiler for this target

Source

Implementation

#
pub fn fromCallingConvention(cc: std.builtin.CallingConvention.Tag) []const Arch {
    return switch (cc) {
        .auto,
        .async,
        .naked,
        .@"inline",
        => unreachable,

        .x86_64_sysv,
        .x86_64_win,
        .x86_64_regcall_v3_sysv,
        .x86_64_regcall_v4_win,
        .x86_64_vectorcall,
        .x86_64_interrupt,
        => &.{.x86_64},

        .x86_sysv,
        .x86_win,
        .x86_stdcall,
        .x86_fastcall,
        .x86_thiscall,
        .x86_thiscall_mingw,
        .x86_regcall_v3,
        .x86_regcall_v4_win,
        .x86_vectorcall,
        .x86_interrupt,
        => &.{.x86},

        .aarch64_aapcs,
        .aarch64_aapcs_darwin,
        .aarch64_aapcs_win,
        .aarch64_vfabi,
        .aarch64_vfabi_sve,
        => &.{ .aarch64, .aarch64_be },

        .arm_aapcs,
        .arm_aapcs_vfp,
        .arm_interrupt,
        => &.{ .arm, .armeb, .thumb, .thumbeb },

        .mips64_n64,
        .mips64_n32,
        .mips64_interrupt,
        => &.{ .mips64, .mips64el },

        .mips_o32,
        .mips_interrupt,
        => &.{ .mips, .mipsel },

        .riscv64_lp64,
        .riscv64_lp64_v,
        .riscv64_interrupt,
        => &.{.riscv64},

        .riscv32_ilp32,
        .riscv32_ilp32_v,
        .riscv32_interrupt,
        => &.{.riscv32},

        .sparc64_sysv,
        => &.{.sparc64},

        .sparc_sysv,
        => &.{.sparc},

        .powerpc64_elf,
        .powerpc64_elf_altivec,
        .powerpc64_elf_v2,
        => &.{ .powerpc64, .powerpc64le },

        .powerpc_sysv,
        .powerpc_sysv_altivec,
        .powerpc_aix,
        .powerpc_aix_altivec,
        => &.{ .powerpc, .powerpcle },

        .wasm_mvp,
        => &.{ .wasm64, .wasm32 },

        .arc_sysv,
        => &.{.arc},

        .avr_gnu,
        .avr_builtin,
        .avr_signal,
        .avr_interrupt,
        => &.{.avr},

        .bpf_std,
        => &.{ .bpfel, .bpfeb },

        .csky_sysv,
        .csky_interrupt,
        => &.{.csky},

        .hexagon_sysv,
        .hexagon_sysv_hvx,
        => &.{.hexagon},

        .lanai_sysv,
        => &.{.lanai},

        .loongarch64_lp64,
        => &.{.loongarch64},

        .loongarch32_ilp32,
        => &.{.loongarch32},

        .m68k_sysv,
        .m68k_gnu,
        .m68k_rtd,
        .m68k_interrupt,
        => &.{.m68k},

        .msp430_eabi,
        => &.{.msp430},

        .or1k_sysv,
        => &.{.or1k},

        .propeller_sysv,
        => &.{.propeller},

        .s390x_sysv,
        .s390x_sysv_vx,
        => &.{.s390x},

        .ve_sysv,
        => &.{.ve},

        .xcore_xs1,
        .xcore_xs2,
        => &.{.xcore},

        .xtensa_call0,
        .xtensa_windowed,
        => &.{.xtensa},

        .amdgcn_device,
        .amdgcn_kernel,
        .amdgcn_cs,
        => &.{.amdgcn},

        .nvptx_device,
        .nvptx_kernel,
        => &.{ .nvptx, .nvptx64 },

        .spirv_device,
        .spirv_kernel,
        .spirv_fragment,
        .spirv_vertex,
        => &.{ .spirv32, .spirv64 },
    };
}