diff --git a/CMakeLists.txt b/CMakeLists.txt index 536d36e245..4ee6a2f148 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -645,6 +645,8 @@ set(ZIG_STAGE2_SOURCES "${CMAKE_SOURCE_DIR}/src/value.zig" "${CMAKE_SOURCE_DIR}/src/wasi_libc.zig" "${CMAKE_SOURCE_DIR}/src/windows_sdk.zig" + "${CMAKE_SOURCE_DIR}/src/stubs/aro_builtins.zig" + "${CMAKE_SOURCE_DIR}/src/stubs/aro_names.zig" ) if(MSVC) @@ -815,7 +817,9 @@ set(BUILD_ZIG2_ARGS -OReleaseSmall --name zig2 -femit-bin="${ZIG2_C_SOURCE}" --mod "build_options::${ZIG_CONFIG_ZIG_OUT}" - --mod "aro::deps/aro/lib.zig" + --mod "Builtins/Builtin.def::src/stubs/aro_builtins.zig" + --mod "Attribute/names.def::src/stubs/aro_names.zig" + --mod "aro:Builtins/Builtin.def,Attribute/names.def:deps/aro/lib.zig" --deps build_options,aro -target "${ZIG_HOST_TARGET_TRIPLE}" ) diff --git a/build.zig b/build.zig index a1c87215f0..5a544bfda7 100644 --- a/build.zig +++ b/build.zig @@ -8,6 +8,7 @@ const io = std.io; const fs = std.fs; const InstallDirectoryOptions = std.Build.InstallDirectoryOptions; const assert = std.debug.assert; +const GenerateDef = @import("deps/aro/build/GenerateDef.zig"); const zig_version = std.SemanticVersion{ .major = 0, .minor = 12, .patch = 0 }; const stack_size = 32 * 1024 * 1024; @@ -589,9 +590,13 @@ fn addCompilerStep( .max_rss = 7_000_000_000, }); exe.stack_size = stack_size; - exe.addAnonymousModule("aro", .{ + const aro_module = b.createModule(.{ .source_file = .{ .path = "deps/aro/lib.zig" }, }); + GenerateDef.add(b, "deps/aro/Builtins/Builtin.def", "Builtins/Builtin.def", exe, aro_module); + GenerateDef.add(b, "deps/aro/Attribute/names.def", "Attribute/names.def", exe, aro_module); + + exe.addModule("aro", aro_module); return exe; } diff --git a/deps/aro/Attribute.zig b/deps/aro/Attribute.zig index 8a3008c1b3..23e038d421 100644 --- a/deps/aro/Attribute.zig +++ b/deps/aro/Attribute.zig @@ -60,7 +60,7 @@ pub const ArgumentType = enum { fn fromType(comptime T: type) ArgumentType { return switch (T) { - []const u8 => .string, + Value.ByteRange => .string, Identifier => .identifier, u32 => .int, Alignment => .alignment, @@ -83,17 +83,13 @@ pub const ArgumentType = enum { } }; -fn getArguments(comptime descriptor: type) []const ZigType.StructField { - return if (@hasDecl(descriptor, "Args")) std.meta.fields(descriptor.Args) else &.{}; -} - /// number of required arguments pub fn requiredArgCount(attr: Tag) u32 { switch (attr) { inline else => |tag| { comptime var needed = 0; comptime { - const fields = getArguments(@field(attributes, @tagName(tag))); + const fields = std.meta.fields(@field(attributes, @tagName(tag))); for (fields) |arg_field| { if (!mem.eql(u8, arg_field.name, "__name_tok") and @typeInfo(arg_field.type) != .Optional) needed += 1; } @@ -109,7 +105,7 @@ pub fn maxArgCount(attr: Tag) u32 { inline else => |tag| { comptime var max = 0; comptime { - const fields = getArguments(@field(attributes, @tagName(tag))); + const fields = std.meta.fields(@field(attributes, @tagName(tag))); for (fields) |arg_field| { if (!mem.eql(u8, arg_field.name, "__name_tok")) max += 1; } @@ -128,13 +124,13 @@ fn UnwrapOptional(comptime T: type) type { pub const Formatting = struct { /// The quote char (single or double) to use when printing identifiers/strings corresponding - /// to the enum in the first field of the Args of `attr`. Identifier enums use single quotes, string enums + /// to the enum in the first field of the `attr`. Identifier enums use single quotes, string enums /// use double quotes fn quoteChar(attr: Tag) []const u8 { switch (attr) { .calling_convention => unreachable, inline else => |tag| { - const fields = getArguments(@field(attributes, @tagName(tag))); + const fields = std.meta.fields(@field(attributes, @tagName(tag))); if (fields.len == 0) unreachable; const Unwrapped = UnwrapOptional(fields[0].type); @@ -146,12 +142,12 @@ pub const Formatting = struct { } /// returns a comma-separated string of quoted enum values, representing the valid - /// choices for the string or identifier enum of the first field of the Args of `attr`. + /// choices for the string or identifier enum of the first field of the `attr`. pub fn choices(attr: Tag) []const u8 { switch (attr) { .calling_convention => unreachable, inline else => |tag| { - const fields = getArguments(@field(attributes, @tagName(tag))); + const fields = std.meta.fields(@field(attributes, @tagName(tag))); if (fields.len == 0) unreachable; const Unwrapped = UnwrapOptional(fields[0].type); @@ -176,7 +172,7 @@ pub fn wantsIdentEnum(attr: Tag) bool { switch (attr) { .calling_convention => return false, inline else => |tag| { - const fields = getArguments(@field(attributes, @tagName(tag))); + const fields = std.meta.fields(@field(attributes, @tagName(tag))); if (fields.len == 0) return false; const Unwrapped = UnwrapOptional(fields[0].type); @@ -190,7 +186,7 @@ pub fn wantsIdentEnum(attr: Tag) bool { pub fn diagnoseIdent(attr: Tag, arguments: *Arguments, ident: []const u8) ?Diagnostics.Message { switch (attr) { inline else => |tag| { - const fields = getArguments(@field(attributes, @tagName(tag))); + const fields = std.meta.fields(@field(attributes, @tagName(tag))); if (fields.len == 0) unreachable; const Unwrapped = UnwrapOptional(fields[0].type); if (@typeInfo(Unwrapped) != .Enum) unreachable; @@ -209,7 +205,7 @@ pub fn diagnoseIdent(attr: Tag, arguments: *Arguments, ident: []const u8) ?Diagn pub fn wantsAlignment(attr: Tag, idx: usize) bool { switch (attr) { inline else => |tag| { - const fields = getArguments(@field(attributes, @tagName(tag))); + const fields = std.meta.fields(@field(attributes, @tagName(tag))); if (fields.len == 0) return false; return switch (idx) { @@ -223,7 +219,7 @@ pub fn wantsAlignment(attr: Tag, idx: usize) bool { pub fn diagnoseAlignment(attr: Tag, arguments: *Arguments, arg_idx: u32, val: Value, ty: Type, comp: *Compilation) ?Diagnostics.Message { switch (attr) { inline else => |tag| { - const arg_fields = getArguments(@field(attributes, @tagName(tag))); + const arg_fields = std.meta.fields(@field(attributes, @tagName(tag))); if (arg_fields.len == 0) unreachable; switch (arg_idx) { @@ -267,10 +263,17 @@ fn diagnoseField( .bytes => { const bytes = val.data.bytes.trim(1); // remove null terminator if (wanted == Value.ByteRange) { + std.debug.assert(node.tag == .string_literal_expr); + if (!node.ty.elemType().is(.char) and !node.ty.elemType().is(.uchar)) { + return Diagnostics.Message{ + .tag = .attribute_requires_string, + .extra = .{ .str = decl.name }, + }; + } @field(@field(arguments, decl.name), field.name) = bytes; return null; } else if (@typeInfo(wanted) == .Enum and @hasDecl(wanted, "opts") and wanted.opts.enum_kind == .string) { - const str = bytes.slice(strings); + const str = bytes.slice(strings, .@"1"); if (std.meta.stringToEnum(wanted, str)) |enum_val| { @field(@field(arguments, decl.name), field.name) = enum_val; return null; @@ -305,7 +308,7 @@ pub fn diagnose(attr: Tag, arguments: *Arguments, arg_idx: u32, val: Value, node .tag = .attribute_too_many_args, .extra = .{ .attr_arg_count = .{ .attribute = attr, .expected = max_arg_count } }, }; - const arg_fields = getArguments(@field(attributes, decl.name)); + const arg_fields = std.meta.fields(@field(attributes, decl.name)); switch (arg_idx) { inline 0...arg_fields.len - 1 => |arg_i| { return diagnoseField(decl, arg_fields[arg_i], UnwrapOptional(arg_fields[arg_i].type), arguments, val, node, strings); @@ -330,212 +333,107 @@ pub const Identifier = struct { const attributes = struct { pub const access = struct { - const gnu = "access"; + access_mode: enum { + read_only, + read_write, + write_only, + none, - const Args = struct { - access_mode: enum { - read_only, - read_write, - write_only, - none, - - const opts = struct { - const enum_kind = .identifier; - }; - }, - ref_index: u32, - size_index: ?u32 = null, - }; + const opts = struct { + const enum_kind = .identifier; + }; + }, + ref_index: u32, + size_index: ?u32 = null, }; pub const alias = struct { - const gnu = "alias"; - const Args = struct { - alias: Value.ByteRange, - }; + alias: Value.ByteRange, }; pub const aligned = struct { - const gnu = "aligned"; - const declspec = "align"; - - const Args = struct { - alignment: ?Alignment = null, - __name_tok: TokenIndex, - }; + alignment: ?Alignment = null, + __name_tok: TokenIndex, }; pub const alloc_align = struct { - const gnu = "alloc_align"; - - const Args = struct { - position: u32, - }; + position: u32, }; pub const alloc_size = struct { - const gnu = "alloc_size"; - - const Args = struct { - position_1: u32, - position_2: ?u32 = null, - }; + position_1: u32, + position_2: ?u32 = null, }; pub const allocate = struct { - const declspec = "allocate"; - - const Args = struct { - segname: Value.ByteRange, - }; - }; - pub const allocator = struct { - const declspec = "allocator"; - }; - pub const always_inline = struct { - const gnu = "always_inline"; - }; - pub const appdomain = struct { - const declspec = "appdomain"; - }; - pub const artificial = struct { - const gnu = "artificial"; + segname: Value.ByteRange, }; + pub const allocator = struct {}; + pub const always_inline = struct {}; + pub const appdomain = struct {}; + pub const artificial = struct {}; pub const assume_aligned = struct { - const gnu = "assume_aligned"; - const Args = struct { - alignment: Alignment, - offset: ?u32 = null, - }; + alignment: Alignment, + offset: ?u32 = null, }; pub const cleanup = struct { - const gnu = "cleanup"; - const Args = struct { - function: Identifier, - }; + function: Identifier, }; pub const code_seg = struct { - const declspec = "code_seg"; - const Args = struct { - segname: Value.ByteRange, - }; - }; - pub const cold = struct { - const gnu = "cold"; - }; - pub const common = struct { - const gnu = "common"; - }; - pub const @"const" = struct { - const gnu = "const"; + segname: Value.ByteRange, }; + pub const cold = struct {}; + pub const common = struct {}; + pub const @"const" = struct {}; pub const constructor = struct { - const gnu = "constructor"; - const Args = struct { - priority: ?u32 = null, - }; + priority: ?u32 = null, }; pub const copy = struct { - const gnu = "copy"; - const Args = struct { - function: Identifier, - }; + function: Identifier, }; pub const deprecated = struct { - const gnu = "deprecated"; - const declspec = "deprecated"; - const c2x = "deprecated"; - - const Args = struct { - msg: ?Value.ByteRange = null, - __name_tok: TokenIndex, - }; - }; - pub const designated_init = struct { - const gnu = "designated_init"; + msg: ?Value.ByteRange = null, + __name_tok: TokenIndex, }; + pub const designated_init = struct {}; pub const destructor = struct { - const gnu = "destructor"; - const Args = struct { - priority: ?u32 = null, - }; - }; - pub const dllexport = struct { - const declspec = "dllexport"; - }; - pub const dllimport = struct { - const declspec = "dllimport"; + priority: ?u32 = null, }; + pub const dllexport = struct {}; + pub const dllimport = struct {}; pub const @"error" = struct { - const gnu = "error"; - const Args = struct { - msg: Value.ByteRange, - __name_tok: TokenIndex, - }; - }; - pub const externally_visible = struct { - const gnu = "externally_visible"; - }; - pub const fallthrough = struct { - const gnu = "fallthrough"; - const c2x = "fallthrough"; - }; - pub const flatten = struct { - const gnu = "flatten"; + msg: Value.ByteRange, + __name_tok: TokenIndex, }; + pub const externally_visible = struct {}; + pub const fallthrough = struct {}; + pub const flatten = struct {}; pub const format = struct { - const gnu = "format"; - const Args = struct { - archetype: enum { - printf, - scanf, - strftime, - strfmon, + archetype: enum { + printf, + scanf, + strftime, + strfmon, - const opts = struct { - const enum_kind = .identifier; - }; - }, - string_index: u32, - first_to_check: u32, - }; + const opts = struct { + const enum_kind = .identifier; + }; + }, + string_index: u32, + first_to_check: u32, }; pub const format_arg = struct { - const gnu = "format_arg"; - const Args = struct { - string_index: u32, - }; - }; - pub const gnu_inline = struct { - const gnu = "gnu_inline"; - }; - pub const hot = struct { - const gnu = "hot"; + string_index: u32, }; + pub const gnu_inline = struct {}; + pub const hot = struct {}; pub const ifunc = struct { - const gnu = "ifunc"; - const Args = struct { - resolver: Value.ByteRange, - }; - }; - pub const interrupt = struct { - const gnu = "interrupt"; - }; - pub const interrupt_handler = struct { - const gnu = "interrupt_handler"; - }; - pub const jitintrinsic = struct { - const declspec = "jitintrinsic"; - }; - pub const leaf = struct { - const gnu = "leaf"; - }; - pub const malloc = struct { - const gnu = "malloc"; - }; - pub const may_alias = struct { - const gnu = "may_alias"; + resolver: Value.ByteRange, }; + pub const interrupt = struct {}; + pub const interrupt_handler = struct {}; + pub const jitintrinsic = struct {}; + pub const leaf = struct {}; + pub const malloc = struct {}; + pub const may_alias = struct {}; pub const mode = struct { - const gnu = "mode"; - const Args = struct { - mode: enum { - // zig fmt: off + mode: enum { + // zig fmt: off byte, word, pointer, BI, QI, HI, PSI, SI, PDI, @@ -558,336 +456,184 @@ const attributes = struct { BND32, BND64, // zig fmt: on - const opts = struct { - const enum_kind = .identifier; - }; - }, - }; - }; - pub const naked = struct { - const declspec = "naked"; - }; - pub const no_address_safety_analysis = struct { - const gnu = "no_address_safety_analysise"; - }; - pub const no_icf = struct { - const gnu = "no_icf"; - }; - pub const no_instrument_function = struct { - const gnu = "no_instrument_function"; - }; - pub const no_profile_instrument_function = struct { - const gnu = "no_profile_instrument_function"; - }; - pub const no_reorder = struct { - const gnu = "no_reorder"; + const opts = struct { + const enum_kind = .identifier; + }; + }, }; + pub const naked = struct {}; + pub const no_address_safety_analysis = struct {}; + pub const no_icf = struct {}; + pub const no_instrument_function = struct {}; + pub const no_profile_instrument_function = struct {}; + pub const no_reorder = struct {}; pub const no_sanitize = struct { - const gnu = "no_sanitize"; /// Todo: represent args as union? - const Args = struct { - alignment: Value.ByteRange, - object_size: ?Value.ByteRange = null, - }; - }; - pub const no_sanitize_address = struct { - const gnu = "no_sanitize_address"; - const declspec = "no_sanitize_address"; - }; - pub const no_sanitize_coverage = struct { - const gnu = "no_sanitize_coverage"; - }; - pub const no_sanitize_thread = struct { - const gnu = "no_sanitize_thread"; - }; - pub const no_sanitize_undefined = struct { - const gnu = "no_sanitize_undefined"; - }; - pub const no_split_stack = struct { - const gnu = "no_split_stack"; - }; - pub const no_stack_limit = struct { - const gnu = "no_stack_limit"; - }; - pub const no_stack_protector = struct { - const gnu = "no_stack_protector"; - }; - pub const @"noalias" = struct { - const declspec = "noalias"; - }; - pub const noclone = struct { - const gnu = "noclone"; - }; - pub const nocommon = struct { - const gnu = "nocommon"; - }; - pub const nodiscard = struct { - const c2x = "nodiscard"; - }; - pub const noinit = struct { - const gnu = "noinit"; - }; - pub const @"noinline" = struct { - const gnu = "noinline"; - const declspec = "noinline"; - }; - pub const noipa = struct { - const gnu = "noipa"; + alignment: Value.ByteRange, + object_size: ?Value.ByteRange = null, }; + pub const no_sanitize_address = struct {}; + pub const no_sanitize_coverage = struct {}; + pub const no_sanitize_thread = struct {}; + pub const no_sanitize_undefined = struct {}; + pub const no_split_stack = struct {}; + pub const no_stack_limit = struct {}; + pub const no_stack_protector = struct {}; + pub const @"noalias" = struct {}; + pub const noclone = struct {}; + pub const nocommon = struct {}; + pub const nodiscard = struct {}; + pub const noinit = struct {}; + pub const @"noinline" = struct {}; + pub const noipa = struct {}; // TODO: arbitrary number of arguments // const nonnull = struct { - // const gnu = "nonnull"; - // const Args = struct { - // arg_index: []const u32, + // // arg_index: []const u32, // }; // }; - pub const nonstring = struct { - const gnu = "nonstring"; - }; - pub const noplt = struct { - const gnu = "noplt"; - }; - pub const @"noreturn" = struct { - const gnu = "noreturn"; - const c2x = "noreturn"; - const declspec = "noreturn"; - }; + pub const nonstring = struct {}; + pub const noplt = struct {}; + pub const @"noreturn" = struct {}; // TODO: union args ? // const optimize = struct { - // const gnu = "optimize"; - // const Args = struct { - // optimize, // u32 | []const u8 -- optimize? + // // optimize, // u32 | []const u8 -- optimize? // }; // }; - pub const @"packed" = struct { - const gnu = "packed"; - }; - pub const patchable_function_entry = struct { - const gnu = "patchable_function_entry"; - }; - pub const persistent = struct { - const gnu = "persistent"; - }; - pub const process = struct { - const declspec = "process"; - }; - pub const pure = struct { - const gnu = "pure"; - }; - pub const reproducible = struct { - const c2x = "reproducible"; - }; - pub const restrict = struct { - const declspec = "restrict"; - }; - pub const retain = struct { - const gnu = "retain"; - }; - pub const returns_nonnull = struct { - const gnu = "returns_nonnull"; - }; - pub const returns_twice = struct { - const gnu = "returns_twice"; - }; - pub const safebuffers = struct { - const declspec = "safebuffers"; - }; + pub const @"packed" = struct {}; + pub const patchable_function_entry = struct {}; + pub const persistent = struct {}; + pub const process = struct {}; + pub const pure = struct {}; + pub const reproducible = struct {}; + pub const restrict = struct {}; + pub const retain = struct {}; + pub const returns_nonnull = struct {}; + pub const returns_twice = struct {}; + pub const safebuffers = struct {}; pub const scalar_storage_order = struct { - const gnu = "scalar_storage_order"; - const Args = struct { - order: enum { - @"little-endian", - @"big-endian", + order: enum { + @"little-endian", + @"big-endian", - const opts = struct { - const enum_kind = .string; - }; - }, - }; + const opts = struct { + const enum_kind = .string; + }; + }, }; pub const section = struct { - const gnu = "section"; - const Args = struct { - name: Value.ByteRange, - }; - }; - pub const selectany = struct { - const declspec = "selectany"; + name: Value.ByteRange, }; + pub const selectany = struct {}; pub const sentinel = struct { - const gnu = "sentinel"; - const Args = struct { - position: ?u32 = null, - }; + position: ?u32 = null, }; pub const simd = struct { - const gnu = "simd"; - const Args = struct { - mask: ?enum { - notinbranch, - inbranch, + mask: ?enum { + notinbranch, + inbranch, - const opts = struct { - const enum_kind = .string; - }; - } = null, - }; + const opts = struct { + const enum_kind = .string; + }; + } = null, }; pub const spectre = struct { - const declspec = "spectre"; - const Args = struct { - arg: enum { - nomitigation, + arg: enum { + nomitigation, - const opts = struct { - const enum_kind = .identifier; - }; - }, - }; - }; - pub const stack_protect = struct { - const gnu = "stack_protect"; + const opts = struct { + const enum_kind = .identifier; + }; + }, }; + pub const stack_protect = struct {}; pub const symver = struct { - const gnu = "symver"; - const Args = struct { - version: Value.ByteRange, // TODO: validate format "name2@nodename" - }; + version: Value.ByteRange, // TODO: validate format "name2@nodename" + }; pub const target = struct { - const gnu = "target"; - const Args = struct { - options: Value.ByteRange, // TODO: multiple arguments - }; + options: Value.ByteRange, // TODO: multiple arguments + }; pub const target_clones = struct { - const gnu = "target_clones"; - const Args = struct { - options: Value.ByteRange, // TODO: multiple arguments - }; - }; - pub const thread = struct { - const declspec = "thread"; - }; - pub const tls_model = struct { - const gnu = "tls_model"; - const Args = struct { - model: enum { - @"global-dynamic", - @"local-dynamic", - @"initial-exec", - @"local-exec", + options: Value.ByteRange, // TODO: multiple arguments - const opts = struct { - const enum_kind = .string; - }; - }, - }; }; - pub const transparent_union = struct { - const gnu = "transparent_union"; + pub const thread = struct {}; + pub const tls_model = struct { + model: enum { + @"global-dynamic", + @"local-dynamic", + @"initial-exec", + @"local-exec", + + const opts = struct { + const enum_kind = .string; + }; + }, }; + pub const transparent_union = struct {}; pub const unavailable = struct { - const gnu = "unavailable"; - const Args = struct { - msg: ?Value.ByteRange = null, - __name_tok: TokenIndex, - }; - }; - pub const uninitialized = struct { - const gnu = "uninitialized"; - }; - pub const unsequenced = struct { - const c2x = "unsequenced"; - }; - pub const unused = struct { - const gnu = "unused"; - const c2x = "maybe_unused"; - }; - pub const used = struct { - const gnu = "used"; + msg: ?Value.ByteRange = null, + __name_tok: TokenIndex, }; + pub const uninitialized = struct {}; + pub const unsequenced = struct {}; + pub const unused = struct {}; + pub const used = struct {}; pub const uuid = struct { - const declspec = "uuid"; - const Args = struct { - uuid: Value.ByteRange, - }; + uuid: Value.ByteRange, }; pub const vector_size = struct { - const gnu = "vector_size"; - const Args = struct { - bytes: u32, // TODO: validate "The bytes argument must be a positive power-of-two multiple of the base type size" - }; + bytes: u32, // TODO: validate "The bytes argument must be a positive power-of-two multiple of the base type size" + }; pub const visibility = struct { - const gnu = "visibility"; - const Args = struct { - visibility_type: enum { - default, - hidden, - internal, - protected, + visibility_type: enum { + default, + hidden, + internal, + protected, - const opts = struct { - const enum_kind = .string; - }; - }, - }; + const opts = struct { + const enum_kind = .string; + }; + }, }; pub const warn_if_not_aligned = struct { - const gnu = "warn_if_not_aligned"; - const Args = struct { - alignment: Alignment, - }; - }; - pub const warn_unused_result = struct { - const gnu = "warn_unused_result"; + alignment: Alignment, }; + pub const warn_unused_result = struct {}; pub const warning = struct { - const gnu = "warning"; - const Args = struct { - msg: Value.ByteRange, - __name_tok: TokenIndex, - }; - }; - pub const weak = struct { - const gnu = "weak"; + msg: Value.ByteRange, + __name_tok: TokenIndex, }; + pub const weak = struct {}; pub const weakref = struct { - const gnu = "weakref"; - const Args = struct { - target: ?Value.ByteRange = null, - }; + target: ?Value.ByteRange = null, }; pub const zero_call_used_regs = struct { - const gnu = "zero_call_used_regs"; - const Args = struct { - choice: enum { - skip, - used, - @"used-gpr", - @"used-arg", - @"used-gpr-arg", - all, - @"all-gpr", - @"all-arg", - @"all-gpr-arg", + choice: enum { + skip, + used, + @"used-gpr", + @"used-arg", + @"used-gpr-arg", + all, + @"all-gpr", + @"all-arg", + @"all-gpr-arg", - const opts = struct { - const enum_kind = .string; - }; - }, - }; + const opts = struct { + const enum_kind = .string; + }; + }, }; pub const asm_label = struct { - const Args = struct { - name: Value.ByteRange, - }; + name: Value.ByteRange, }; pub const calling_convention = struct { - const Args = struct { - cc: CallingConvention, - }; + cc: CallingConvention, }; }; @@ -899,7 +645,7 @@ pub const Arguments = blk: { inline for (decls, &union_fields) |decl, *field| { field.* = .{ .name = decl.name, - .type = if (@hasDecl(@field(attributes, decl.name), "Args")) @field(attributes, decl.name).Args else void, + .type = @field(attributes, decl.name), .alignment = 0, }; } @@ -916,17 +662,16 @@ pub const Arguments = blk: { pub fn ArgumentsForTag(comptime tag: Tag) type { const decl = @typeInfo(attributes).Struct.decls[@intFromEnum(tag)]; - return if (@hasDecl(@field(attributes, decl.name), "Args")) @field(attributes, decl.name).Args else void; + return @field(attributes, decl.name); } pub fn initArguments(tag: Tag, name_tok: TokenIndex) Arguments { switch (tag) { inline else => |arg_tag| { const union_element = @field(attributes, @tagName(arg_tag)); - const has_args = @hasDecl(union_element, "Args"); - const init = if (has_args) std.mem.zeroInit(union_element.Args, .{}) else {}; + const init = std.mem.zeroInit(union_element, .{}); var args = @unionInit(Arguments, @tagName(arg_tag), init); - if (has_args and @hasField(@field(attributes, @tagName(arg_tag)).Args, "__name_tok")) { + if (@hasField(@field(attributes, @tagName(arg_tag)), "__name_tok")) { @field(args, @tagName(arg_tag)).__name_tok = name_tok; } return args; @@ -935,56 +680,29 @@ pub fn initArguments(tag: Tag, name_tok: TokenIndex) Arguments { } pub fn fromString(kind: Kind, namespace: ?[]const u8, name: []const u8) ?Tag { - return switch (kind) { - .c2x => fromStringC2X(namespace, name), - .declspec => fromStringDeclspec(name), - .gnu => fromStringGnu(name), + const Properties = struct { + tag: Tag, + gnu: bool = false, + declspec: bool = false, + c2x: bool = false, }; -} + const attribute_names = @import("Attribute/names.def").with(Properties); -fn fromStringGnu(name: []const u8) ?Tag { const normalized = normalize(name); - const decls = @typeInfo(attributes).Struct.decls; - @setEvalBranchQuota(3000); - inline for (decls, 0..) |decl, i| { - if (@hasDecl(@field(attributes, decl.name), "gnu")) { - if (mem.eql(u8, @field(attributes, decl.name).gnu, normalized)) { - return @enumFromInt(i); - } - } - } - return null; -} - -fn fromStringC2X(namespace: ?[]const u8, name: []const u8) ?Tag { - const normalized = normalize(name); - if (namespace) |ns| { + const actual_kind: Kind = if (namespace) |ns| blk: { const normalized_ns = normalize(ns); if (mem.eql(u8, normalized_ns, "gnu")) { - return fromStringGnu(normalized); + break :blk .gnu; } return null; - } - const decls = @typeInfo(attributes).Struct.decls; - inline for (decls, 0..) |decl, i| { - if (@hasDecl(@field(attributes, decl.name), "c2x")) { - if (mem.eql(u8, @field(attributes, decl.name).c2x, normalized)) { - return @enumFromInt(i); - } - } - } - return null; -} + } else kind; -fn fromStringDeclspec(name: []const u8) ?Tag { - const normalized = normalize(name); - const decls = @typeInfo(attributes).Struct.decls; - inline for (decls, 0..) |decl, i| { - if (@hasDecl(@field(attributes, decl.name), "declspec")) { - if (mem.eql(u8, @field(attributes, decl.name).declspec, normalized)) { - return @enumFromInt(i); - } - } + const tag_and_opts = attribute_names.fromName(normalized) orelse return null; + switch (actual_kind) { + inline else => |tag| { + if (@field(tag_and_opts.properties, @tagName(tag))) + return tag_and_opts.properties.tag; + }, } return null; } diff --git a/deps/aro/Attribute/names.def b/deps/aro/Attribute/names.def new file mode 100644 index 0000000000..bed39691a1 --- /dev/null +++ b/deps/aro/Attribute/names.def @@ -0,0 +1,431 @@ +# multiple +deprecated + .tag = .deprecated + .c2x = true + .gnu = true + .declspec = true + +fallthrough + .tag = .fallthrough + .c2x = true + .gnu = true + +noreturn + .tag = .@"noreturn" + .c2x = true + .gnu = true + .declspec = true + +no_sanitize_address + .tag = .no_sanitize_address + .gnu = true + .declspec = true + +noinline + .tag = .@"noinline" + .gnu = true + .declspec = true + +# c2x only +nodiscard + .tag = .nodiscard + .c2x = true + +reproducible + .tag = .reproducible + .c2x = true + +unsequenced + .tag = .unsequenced + .c2x = true + +maybe_unused + .tag = .unused + .c2x = true + +# gnu only +access + .tag = .access + .gnu = true + +alias + .tag = .alias + .gnu = true + +aligned + .tag = .aligned + .gnu = true + +alloc_align + .tag = .alloc_align + .gnu = true + +alloc_size + .tag = .alloc_size + .gnu = true + +always_inline + .tag = .always_inline + .gnu = true + +artificial + .tag = .artificial + .gnu = true + +assume_aligned + .tag = .assume_aligned + .gnu = true + +cleanup + .tag = .cleanup + .gnu = true + +cold + .tag = .cold + .gnu = true + +common + .tag = .common + .gnu = true + +const + .tag = .@"const" + .gnu = true + +constructor + .tag = .constructor + .gnu = true + +copy + .tag = .copy + .gnu = true + +designated_init + .tag = .designated_init + .gnu = true + +destructor + .tag = .destructor + .gnu = true + +error + .tag = .@"error" + .gnu = true + +externally_visible + .tag = .externally_visible + .gnu = true + +flatten + .tag = .flatten + .gnu = true + +format + .tag = .format + .gnu = true + +format_arg + .tag = .format_arg + .gnu = true + +gnu_inline + .tag = .gnu_inline + .gnu = true + +hot + .tag = .hot + .gnu = true + +ifunc + .tag = .ifunc + .gnu = true + +interrupt + .tag = .interrupt + .gnu = true + +interrupt_handler + .tag = .interrupt_handler + .gnu = true + +leaf + .tag = .leaf + .gnu = true + +malloc + .tag = .malloc + .gnu = true + +may_alias + .tag = .may_alias + .gnu = true + +mode + .tag = .mode + .gnu = true + +no_address_safety_analysis + .tag = .no_address_safety_analysis + .gnu = true + +no_icf + .tag = .no_icf + .gnu = true + +no_instrument_function + .tag = .no_instrument_function + .gnu = true + +no_profile_instrument_function + .tag = .no_profile_instrument_function + .gnu = true + +no_reorder + .tag = .no_reorder + .gnu = true + +no_sanitize + .tag = .no_sanitize + .gnu = true + +no_sanitize_coverage + .tag = .no_sanitize_coverage + .gnu = true + +no_sanitize_thread + .tag = .no_sanitize_thread + .gnu = true + +no_sanitize_undefined + .tag = .no_sanitize_undefined + .gnu = true + +no_split_stack + .tag = .no_split_stack + .gnu = true + +no_stack_limit + .tag = .no_stack_limit + .gnu = true + +no_stack_protector + .tag = .no_stack_protector + .gnu = true + +noclone + .tag = .noclone + .gnu = true + +nocommon + .tag = .nocommon + .gnu = true + +noinit + .tag = .noinit + .gnu = true + +noipa + .tag = .noipa + .gnu = true + +# nonnull +# .tag = .nonnull +# .gnu = true + +nonstring + .tag = .nonstring + .gnu = true + +noplt + .tag = .noplt + .gnu = true + +# optimize +# .tag = .optimize +# .gnu = true + +packed + .tag = .@"packed" + .gnu = true + +patchable_function_entry + .tag = .patchable_function_entry + .gnu = true + +persistent + .tag = .persistent + .gnu = true + +pure + .tag = .pure + .gnu = true + +retain + .tag = .retain + .gnu = true + +returns_nonnull + .tag = .returns_nonnull + .gnu = true + +returns_twice + .tag = .returns_twice + .gnu = true + +scalar_storage_order + .tag = .scalar_storage_order + .gnu = true + +section + .tag = .section + .gnu = true + +sentinel + .tag = .sentinel + .gnu = true + +simd + .tag = .simd + .gnu = true + +stack_protect + .tag = .stack_protect + .gnu = true + +symver + .tag = .symver + .gnu = true + +target + .tag = .target + .gnu = true + +target_clones + .tag = .target_clones + .gnu = true + +tls_model + .tag = .tls_model + .gnu = true + +transparent_union + .tag = .transparent_union + .gnu = true + +unavailable + .tag = .unavailable + .gnu = true + +uninitialized + .tag = .uninitialized + .gnu = true + +unused + .tag = .unused + .gnu = true + +used + .tag = .used + .gnu = true + +vector_size + .tag = .vector_size + .gnu = true + +visibility + .tag = .visibility + .gnu = true + +warn_if_not_aligned + .tag = .warn_if_not_aligned + .gnu = true + +warn_unused_result + .tag = .warn_unused_result + .gnu = true + +warning + .tag = .warning + .gnu = true + +weak + .tag = .weak + .gnu = true + +weakref + .tag = .weakref + .gnu = true + +zero_call_used_regs + .tag = .zero_call_used_regs + .gnu = true + +# declspec only +align + .tag = .aligned + .declspec = true + +allocate + .tag = .allocate + .declspec = true + +allocator + .tag = .allocator + .declspec = true + +appdomain + .tag = .appdomain + .declspec = true + +code_seg + .tag = .code_seg + .declspec = true + +dllexport + .tag = .dllexport + .declspec = true + +dllimport + .tag = .dllimport + .declspec = true + +jitintrinsic + .tag = .jitintrinsic + .declspec = true + +naked + .tag = .naked + .declspec = true + +noalias + .tag = .@"noalias" + .declspec = true + +process + .tag = .process + .declspec = true + +restrict + .tag = .restrict + .declspec = true + +safebuffers + .tag = .safebuffers + .declspec = true + +selectany + .tag = .selectany + .declspec = true + +spectre + .tag = .spectre + .declspec = true + +thread + .tag = .thread + .declspec = true + +uuid + .tag = .uuid + .declspec = true + diff --git a/deps/aro/Builtins.zig b/deps/aro/Builtins.zig index 6d01cc4c66..fe676e935e 100644 --- a/deps/aro/Builtins.zig +++ b/deps/aro/Builtins.zig @@ -1,18 +1,20 @@ const std = @import("std"); const Compilation = @import("Compilation.zig"); const Type = @import("Type.zig"); -const BuiltinFunction = @import("builtins/BuiltinFunction.zig"); -const TypeDescription = @import("builtins/TypeDescription.zig"); +const TypeDescription = @import("Builtins/TypeDescription.zig"); const target_util = @import("target.zig"); const StringId = @import("StringInterner.zig").StringId; const LangOpts = @import("LangOpts.zig"); const Parser = @import("Parser.zig"); +const Properties = @import("Builtins/Properties.zig"); +pub const Builtin = @import("Builtins/Builtin.def").with(Properties); + const Builtins = @This(); const Expanded = struct { ty: Type, - builtin: BuiltinFunction, + builtin: Builtin, }; const NameToTypeMap = std.StringHashMapUnmanaged(Type); @@ -243,8 +245,8 @@ fn createType(desc: TypeDescription, it: *TypeDescription.TypeIterator, comp: *c return builder.finish(undefined) catch unreachable; } -fn createBuiltin(comp: *const Compilation, builtin: BuiltinFunction, type_arena: std.mem.Allocator) !Type { - var it = TypeDescription.TypeIterator.init(builtin.param_str); +fn createBuiltin(comp: *const Compilation, builtin: Builtin, type_arena: std.mem.Allocator) !Type { + var it = TypeDescription.TypeIterator.init(builtin.properties.param_str); const ret_ty_desc = it.next().?; if (ret_ty_desc.spec == .@"!") { @@ -252,7 +254,7 @@ fn createBuiltin(comp: *const Compilation, builtin: BuiltinFunction, type_arena: } const ret_ty = try createType(ret_ty_desc, &it, comp, type_arena); var param_count: usize = 0; - var params: [BuiltinFunction.MaxParamCount]Type.Func.Param = undefined; + var params: [Builtin.max_param_count]Type.Func.Param = undefined; while (it.next()) |desc| : (param_count += 1) { params[param_count] = .{ .name_tok = 0, .ty = try createType(desc, &it, comp, type_arena), .name = .empty }; } @@ -265,14 +267,14 @@ fn createBuiltin(comp: *const Compilation, builtin: BuiltinFunction, type_arena: .params = duped_params, }; return .{ - .specifier = if (builtin.isVarArgs()) .var_args_func else .func, + .specifier = if (builtin.properties.isVarArgs()) .var_args_func else .func, .data = .{ .func = func }, }; } /// Asserts that the builtin has already been created pub fn lookup(b: *const Builtins, name: []const u8) Expanded { - const builtin = BuiltinFunction.fromName(name).?; + const builtin = Builtin.fromName(name).?; const ty = b._name_to_type_map.get(name).?; return .{ .builtin = builtin, @@ -282,7 +284,7 @@ pub fn lookup(b: *const Builtins, name: []const u8) Expanded { pub fn getOrCreate(b: *Builtins, comp: *Compilation, name: []const u8, type_arena: std.mem.Allocator) !?Expanded { const ty = b._name_to_type_map.get(name) orelse { - const builtin = BuiltinFunction.fromName(name) orelse return null; + const builtin = Builtin.fromName(name) orelse return null; if (!comp.hasBuiltinFunction(builtin)) return null; try b._name_to_type_map.ensureUnusedCapacity(comp.gpa, 1); @@ -294,13 +296,62 @@ pub fn getOrCreate(b: *Builtins, comp: *Compilation, name: []const u8, type_aren .ty = ty, }; }; - const builtin = BuiltinFunction.fromName(name).?; + const builtin = Builtin.fromName(name).?; return .{ .builtin = builtin, .ty = ty, }; } +pub const Iterator = struct { + index: u16 = 1, + name_buf: [Builtin.longest_name]u8 = undefined, + + pub const Entry = struct { + /// Memory of this slice is overwritten on every call to `next` + name: []const u8, + builtin: Builtin, + }; + + pub fn next(self: *Iterator) ?Entry { + if (self.index > Builtin.data.len) return null; + const index = self.index; + const data_index = index - 1; + self.index += 1; + return .{ + .name = Builtin.nameFromUniqueIndex(index, &self.name_buf), + .builtin = Builtin.data[data_index], + }; + } +}; + +test Iterator { + var it = Iterator{}; + + var seen = std.StringHashMap(Builtin).init(std.testing.allocator); + defer seen.deinit(); + + var arena_state = std.heap.ArenaAllocator.init(std.testing.allocator); + defer arena_state.deinit(); + const arena = arena_state.allocator(); + + while (it.next()) |entry| { + const index = Builtin.uniqueIndex(entry.name).?; + var buf: [Builtin.longest_name]u8 = undefined; + const name_from_index = Builtin.nameFromUniqueIndex(index, &buf); + try std.testing.expectEqualStrings(entry.name, name_from_index); + + if (seen.contains(entry.name)) { + std.debug.print("iterated over {s} twice\n", .{entry.name}); + std.debug.print("current data: {}\n", .{entry.builtin}); + std.debug.print("previous data: {}\n", .{seen.get(entry.name).?}); + return error.TestExpectedUniqueEntries; + } + try seen.put(try arena.dupe(u8, entry.name), entry.builtin); + } + try std.testing.expectEqual(@as(usize, Builtin.data.len), seen.count()); +} + test "All builtins" { var comp = Compilation.init(std.testing.allocator); defer comp.deinit(); @@ -310,7 +361,7 @@ test "All builtins" { const type_arena = arena.allocator(); - var builtin_it = BuiltinFunction.BuiltinsIterator{}; + var builtin_it = Iterator{}; while (builtin_it.next()) |entry| { const name = try type_arena.dupe(u8, entry.name); if (try comp.builtins.getOrCreate(&comp, name, type_arena)) |func_ty| { @@ -334,7 +385,7 @@ test "Allocation failures" { const type_arena = arena.allocator(); const num_builtins = 40; - var builtin_it = BuiltinFunction.BuiltinsIterator{}; + var builtin_it = Iterator{}; for (0..num_builtins) |_| { const entry = builtin_it.next().?; _ = try comp.builtins.getOrCreate(&comp, entry.name, type_arena); diff --git a/deps/aro/Builtins/Builtin.def b/deps/aro/Builtins/Builtin.def new file mode 100644 index 0000000000..a924102a4f --- /dev/null +++ b/deps/aro/Builtins/Builtin.def @@ -0,0 +1,17010 @@ +const TargetSet = Properties.TargetSet; + +# TODO this file is generated from LLVM sources and +# needs cleanup to be considered source. + +pub const max_param_count = 12; + +_Block_object_assign + .param_str = "vv*vC*iC" + .header = .blocks + .attributes = .{ .lib_function_without_prefix = true } + +_Block_object_dispose + .param_str = "vvC*iC" + .header = .blocks + .attributes = .{ .lib_function_without_prefix = true } + +_Exit + .param_str = "vi" + .header = .stdlib + .attributes = .{ .noreturn = true, .lib_function_without_prefix = true } + +_InterlockedAnd + .param_str = "NiNiD*Ni" + .language = .all_ms_languages + +_InterlockedAnd16 + .param_str = "ssD*s" + .language = .all_ms_languages + +_InterlockedAnd8 + .param_str = "ccD*c" + .language = .all_ms_languages + +_InterlockedCompareExchange + .param_str = "NiNiD*NiNi" + .language = .all_ms_languages + +_InterlockedCompareExchange16 + .param_str = "ssD*ss" + .language = .all_ms_languages + +_InterlockedCompareExchange64 + .param_str = "LLiLLiD*LLiLLi" + .language = .all_ms_languages + +_InterlockedCompareExchange8 + .param_str = "ccD*cc" + .language = .all_ms_languages + +_InterlockedCompareExchangePointer + .param_str = "v*v*D*v*v*" + .language = .all_ms_languages + +_InterlockedCompareExchangePointer_nf + .param_str = "v*v*D*v*v*" + .language = .all_ms_languages + +_InterlockedDecrement + .param_str = "NiNiD*" + .language = .all_ms_languages + +_InterlockedDecrement16 + .param_str = "ssD*" + .language = .all_ms_languages + +_InterlockedExchange + .param_str = "NiNiD*Ni" + .language = .all_ms_languages + +_InterlockedExchange16 + .param_str = "ssD*s" + .language = .all_ms_languages + +_InterlockedExchange8 + .param_str = "ccD*c" + .language = .all_ms_languages + +_InterlockedExchangeAdd + .param_str = "NiNiD*Ni" + .language = .all_ms_languages + +_InterlockedExchangeAdd16 + .param_str = "ssD*s" + .language = .all_ms_languages + +_InterlockedExchangeAdd8 + .param_str = "ccD*c" + .language = .all_ms_languages + +_InterlockedExchangePointer + .param_str = "v*v*D*v*" + .language = .all_ms_languages + +_InterlockedExchangeSub + .param_str = "NiNiD*Ni" + .language = .all_ms_languages + +_InterlockedExchangeSub16 + .param_str = "ssD*s" + .language = .all_ms_languages + +_InterlockedExchangeSub8 + .param_str = "ccD*c" + .language = .all_ms_languages + +_InterlockedIncrement + .param_str = "NiNiD*" + .language = .all_ms_languages + +_InterlockedIncrement16 + .param_str = "ssD*" + .language = .all_ms_languages + +_InterlockedOr + .param_str = "NiNiD*Ni" + .language = .all_ms_languages + +_InterlockedOr16 + .param_str = "ssD*s" + .language = .all_ms_languages + +_InterlockedOr8 + .param_str = "ccD*c" + .language = .all_ms_languages + +_InterlockedXor + .param_str = "NiNiD*Ni" + .language = .all_ms_languages + +_InterlockedXor16 + .param_str = "ssD*s" + .language = .all_ms_languages + +_InterlockedXor8 + .param_str = "ccD*c" + .language = .all_ms_languages + +_MoveFromCoprocessor + .param_str = "UiIUiIUiIUiIUiIUi" + .language = .all_ms_languages + .target_set = TargetSet.initOne(.arm) + +_MoveFromCoprocessor2 + .param_str = "UiIUiIUiIUiIUiIUi" + .language = .all_ms_languages + .target_set = TargetSet.initOne(.arm) + +_MoveToCoprocessor + .param_str = "vUiIUiIUiIUiIUiIUi" + .language = .all_ms_languages + .target_set = TargetSet.initOne(.arm) + +_MoveToCoprocessor2 + .param_str = "vUiIUiIUiIUiIUiIUi" + .language = .all_ms_languages + .target_set = TargetSet.initOne(.arm) + +_ReturnAddress + .param_str = "v*" + .language = .all_ms_languages + +__GetExceptionInfo + .param_str = "v*." + .language = .all_ms_languages + .attributes = .{ .custom_typecheck = true, .eval_args = false } + +__abnormal_termination + .param_str = "i" + .language = .all_ms_languages + +__annotation + .param_str = "wC*." + .language = .all_ms_languages + +__arithmetic_fence + .param_str = "v." + .attributes = .{ .custom_typecheck = true, .const_evaluable = true } + +__assume + .param_str = "vb" + .language = .all_ms_languages + .attributes = .{ .const_evaluable = true } + +__atomic_always_lock_free + .param_str = "bzvCD*" + .attributes = .{ .const_evaluable = true } + +__atomic_clear + .param_str = "vvD*i" + +__atomic_is_lock_free + .param_str = "bzvCD*" + .attributes = .{ .const_evaluable = true } + +__atomic_signal_fence + .param_str = "vi" + +__atomic_test_and_set + .param_str = "bvD*i" + +__atomic_thread_fence + .param_str = "vi" + +__builtin___CFStringMakeConstantString + .param_str = "FC*cC*" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin___NSStringMakeConstantString + .param_str = "FC*cC*" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin___clear_cache + .param_str = "vc*c*" + +__builtin___fprintf_chk + .param_str = "iP*RicC*R." + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .printf, .format_string_position = 2 } + +__builtin___get_unsafe_stack_bottom + .param_str = "v*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___get_unsafe_stack_ptr + .param_str = "v*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___get_unsafe_stack_start + .param_str = "v*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___get_unsafe_stack_top + .param_str = "v*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___memccpy_chk + .param_str = "v*v*vC*izz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___memcpy_chk + .param_str = "v*v*vC*zz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___memmove_chk + .param_str = "v*v*vC*zz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___mempcpy_chk + .param_str = "v*v*vC*zz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___memset_chk + .param_str = "v*v*izz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___printf_chk + .param_str = "iicC*R." + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .printf, .format_string_position = 1 } + +__builtin___snprintf_chk + .param_str = "ic*RzizcC*R." + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .printf, .format_string_position = 4 } + +__builtin___sprintf_chk + .param_str = "ic*RizcC*R." + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .printf, .format_string_position = 3 } + +__builtin___stpcpy_chk + .param_str = "c*c*cC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___stpncpy_chk + .param_str = "c*c*cC*zz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___strcat_chk + .param_str = "c*c*cC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___strcpy_chk + .param_str = "c*c*cC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___strlcat_chk + .param_str = "zc*cC*zz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___strlcpy_chk + .param_str = "zc*cC*zz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___strncat_chk + .param_str = "c*c*cC*zz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___strncpy_chk + .param_str = "c*c*cC*zz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin___vfprintf_chk + .param_str = "iP*RicC*Ra" + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .vprintf, .format_string_position = 2 } + +__builtin___vprintf_chk + .param_str = "iicC*Ra" + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .vprintf, .format_string_position = 1 } + +__builtin___vsnprintf_chk + .param_str = "ic*RzizcC*Ra" + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .vprintf, .format_string_position = 4 } + +__builtin___vsprintf_chk + .param_str = "ic*RizcC*Ra" + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .vprintf, .format_string_position = 3 } + +__builtin_abort + .param_str = "v" + .attributes = .{ .noreturn = true, .lib_function_with_builtin_prefix = true } + +__builtin_abs + .param_str = "ii" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_acos + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_acosf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_acosf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_acosh + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_acoshf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_acoshf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_acoshl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_acosl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_add_overflow + .param_str = "b." + .attributes = .{ .custom_typecheck = true, .const_evaluable = true } + +__builtin_addc + .param_str = "UiUiCUiCUiCUi*" + +__builtin_addcb + .param_str = "UcUcCUcCUcCUc*" + +__builtin_addcl + .param_str = "ULiULiCULiCULiCULi*" + +__builtin_addcll + .param_str = "ULLiULLiCULLiCULLiCULLi*" + +__builtin_addcs + .param_str = "UsUsCUsCUsCUs*" + +__builtin_align_down + .param_str = "v*vC*z" + .attributes = .{ .@"const" = true, .custom_typecheck = true, .const_evaluable = true } + +__builtin_align_up + .param_str = "v*vC*z" + .attributes = .{ .@"const" = true, .custom_typecheck = true, .const_evaluable = true } + +__builtin_alloca + .param_str = "v*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_alloca_uninitialized + .param_str = "v*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_alloca_with_align + .param_str = "v*zIz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_alloca_with_align_uninitialized + .param_str = "v*zIz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_amdgcn_alignbit + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_alignbyte + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_atomic_dec32 + .param_str = "UZiUZiD*UZiUicC*" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_atomic_dec64 + .param_str = "UWiUWiD*UWiUicC*" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_atomic_inc32 + .param_str = "UZiUZiD*UZiUicC*" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_atomic_inc64 + .param_str = "UWiUWiD*UWiUicC*" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_buffer_wbinvl1 + .param_str = "v" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_class + .param_str = "bdi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_classf + .param_str = "bfi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_cosf + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_cubeid + .param_str = "ffff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_cubema + .param_str = "ffff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_cubesc + .param_str = "ffff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_cubetc + .param_str = "ffff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_cvt_pk_i16 + .param_str = "E2sii" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_cvt_pk_u16 + .param_str = "E2UsUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_cvt_pk_u8_f32 + .param_str = "UifUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_cvt_pknorm_i16 + .param_str = "E2sff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_cvt_pknorm_u16 + .param_str = "E2Usff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_cvt_pkrtz + .param_str = "E2hff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_dispatch_ptr + .param_str = "v*4" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_div_fixup + .param_str = "dddd" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_div_fixupf + .param_str = "ffff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_div_fmas + .param_str = "ddddb" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_div_fmasf + .param_str = "ffffb" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_div_scale + .param_str = "dddbb*" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_div_scalef + .param_str = "fffbb*" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_ds_append + .param_str = "ii*3" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_ds_bpermute + .param_str = "iii" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_ds_consume + .param_str = "ii*3" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_ds_faddf + .param_str = "ff*3fIiIiIb" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_ds_fmaxf + .param_str = "ff*3fIiIiIb" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_ds_fminf + .param_str = "ff*3fIiIiIb" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_ds_permute + .param_str = "iii" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_ds_swizzle + .param_str = "iiIi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_endpgm + .param_str = "v" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .noreturn = true } + +__builtin_amdgcn_exp2f + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_fcmp + .param_str = "WUiddIi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_fcmpf + .param_str = "WUiffIi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_fence + .param_str = "vUicC*" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_fmed3f + .param_str = "ffff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_fract + .param_str = "dd" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_fractf + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_frexp_exp + .param_str = "id" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_frexp_expf + .param_str = "if" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_frexp_mant + .param_str = "dd" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_frexp_mantf + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_grid_size_x + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_grid_size_y + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_grid_size_z + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_groupstaticsize + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_iglp_opt + .param_str = "vIi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_implicitarg_ptr + .param_str = "v*4" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_interp_mov + .param_str = "fUiUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_interp_p1 + .param_str = "ffUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_interp_p1_f16 + .param_str = "ffUiUibUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_interp_p2 + .param_str = "fffUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_interp_p2_f16 + .param_str = "hffUiUibUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_is_private + .param_str = "bvC*0" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_is_shared + .param_str = "bvC*0" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_kernarg_segment_ptr + .param_str = "v*4" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_ldexp + .param_str = "ddi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_ldexpf + .param_str = "ffi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_lerp + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_log_clampf + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_logf + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_mbcnt_hi + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_mbcnt_lo + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_mqsad_pk_u16_u8 + .param_str = "WUiWUiUiWUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_mqsad_u32_u8 + .param_str = "V4UiWUiUiV4Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_msad_u8 + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_qsad_pk_u16_u8 + .param_str = "WUiWUiUiWUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_queue_ptr + .param_str = "v*4" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_rcp + .param_str = "dd" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_rcpf + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_read_exec + .param_str = "WUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_read_exec_hi + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_read_exec_lo + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_readfirstlane + .param_str = "ii" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_readlane + .param_str = "iii" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_rsq + .param_str = "dd" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_rsq_clamp + .param_str = "dd" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_rsq_clampf + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_rsqf + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_s_barrier + .param_str = "v" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_s_dcache_inv + .param_str = "v" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_s_decperflevel + .param_str = "vIi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_s_getpc + .param_str = "WUi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_s_getreg + .param_str = "UiIi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_s_incperflevel + .param_str = "vIi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_s_sendmsg + .param_str = "vIiUi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_s_sendmsghalt + .param_str = "vIiUi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_s_setprio + .param_str = "vIs" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_s_setreg + .param_str = "vIiUi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_s_sleep + .param_str = "vIi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_s_waitcnt + .param_str = "vIi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_sad_hi_u8 + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_sad_u16 + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_sad_u8 + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_sbfe + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_sched_barrier + .param_str = "vIi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_sched_group_barrier + .param_str = "vIiIiIi" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_sicmp + .param_str = "WUiiiIi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_sicmpl + .param_str = "WUiWiWiIi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_sinf + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_sqrt + .param_str = "dd" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_sqrtf + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_trig_preop + .param_str = "ddi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_trig_preopf + .param_str = "ffi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_ubfe + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_uicmp + .param_str = "WUiUiUiIi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_uicmpl + .param_str = "WUiWUiWUiIi" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_wave_barrier + .param_str = "v" + .target_set = TargetSet.initOne(.amdgpu) + +__builtin_amdgcn_workgroup_id_x + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_workgroup_id_y + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_workgroup_id_z + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_workgroup_size_x + .param_str = "Us" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_workgroup_size_y + .param_str = "Us" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_workgroup_size_z + .param_str = "Us" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_workitem_id_x + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_workitem_id_y + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_amdgcn_workitem_id_z + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_annotation + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__builtin_arm_cdp + .param_str = "vUIiUIiUIiUIiUIiUIi" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_cdp2 + .param_str = "vUIiUIiUIiUIiUIiUIi" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_clrex + .param_str = "v" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__builtin_arm_cls + .param_str = "UiZUi" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_cls64 + .param_str = "UiWUi" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_clz + .param_str = "UiZUi" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_clz64 + .param_str = "UiWUi" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_cmse_TT + .param_str = "Uiv*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_cmse_TTA + .param_str = "Uiv*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_cmse_TTAT + .param_str = "Uiv*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_cmse_TTT + .param_str = "Uiv*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_dbg + .param_str = "vUi" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_dmb + .param_str = "vUi" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_dsb + .param_str = "vUi" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_get_fpscr + .param_str = "Ui" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_isb + .param_str = "vUi" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_ldaex + .param_str = "v." + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .custom_typecheck = true } + +__builtin_arm_ldc + .param_str = "vUIiUIivC*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_ldc2 + .param_str = "vUIiUIivC*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_ldc2l + .param_str = "vUIiUIivC*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_ldcl + .param_str = "vUIiUIivC*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_ldrex + .param_str = "v." + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .custom_typecheck = true } + +__builtin_arm_ldrexd + .param_str = "LLUiv*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_mcr + .param_str = "vUIiUIiUiUIiUIiUIi" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_mcr2 + .param_str = "vUIiUIiUiUIiUIiUIi" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_mcrr + .param_str = "vUIiUIiLLUiUIi" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_mcrr2 + .param_str = "vUIiUIiLLUiUIi" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_mrc + .param_str = "UiUIiUIiUIiUIiUIi" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_mrc2 + .param_str = "UiUIiUIiUIiUIiUIi" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_mrrc + .param_str = "LLUiUIiUIiUIi" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_mrrc2 + .param_str = "LLUiUIiUIiUIi" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_nop + .param_str = "v" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__builtin_arm_prefetch + .param_str = "!" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_qadd + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_qadd16 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_qadd8 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_qasx + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_qdbl + .param_str = "ii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_qsax + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_qsub + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_qsub16 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_qsub8 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_rbit + .param_str = "UiUi" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_rbit64 + .param_str = "WUiWUi" + .target_set = TargetSet.initOne(.aarch64) + .attributes = .{ .@"const" = true } + +__builtin_arm_rsr + .param_str = "UicC*" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_rsr64 + .param_str = "!" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_rsrp + .param_str = "v*cC*" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_sadd16 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_sadd8 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_sasx + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_sel + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_set_fpscr + .param_str = "vUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_sev + .param_str = "v" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__builtin_arm_sevl + .param_str = "v" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__builtin_arm_shadd16 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_shadd8 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_shasx + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_shsax + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_shsub16 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_shsub8 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlabb + .param_str = "iiii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlabt + .param_str = "iiii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlad + .param_str = "iiii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smladx + .param_str = "iiii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlald + .param_str = "LLiiiLLi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlaldx + .param_str = "LLiiiLLi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlatb + .param_str = "iiii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlatt + .param_str = "iiii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlawb + .param_str = "iiii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlawt + .param_str = "iiii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlsd + .param_str = "iiii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlsdx + .param_str = "iiii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlsld + .param_str = "LLiiiLLi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smlsldx + .param_str = "LLiiiLLi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smuad + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smuadx + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smulbb + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smulbt + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smultb + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smultt + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smulwb + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smulwt + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smusd + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_smusdx + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_ssat + .param_str = "iiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_ssat16 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_ssax + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_ssub16 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_ssub8 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_stc + .param_str = "vUIiUIiv*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_stc2 + .param_str = "vUIiUIiv*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_stc2l + .param_str = "vUIiUIiv*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_stcl + .param_str = "vUIiUIiv*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_stlex + .param_str = "i." + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .custom_typecheck = true } + +__builtin_arm_strex + .param_str = "i." + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .custom_typecheck = true } + +__builtin_arm_strexd + .param_str = "iLLUiv*" + .target_set = TargetSet.initOne(.arm) + +__builtin_arm_sxtab16 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_sxtb16 + .param_str = "ii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_tcancel + .param_str = "vWUIi" + .target_set = TargetSet.initOne(.aarch64) + +__builtin_arm_tcommit + .param_str = "v" + .target_set = TargetSet.initOne(.aarch64) + +__builtin_arm_tstart + .param_str = "WUi" + .target_set = TargetSet.initOne(.aarch64) + .attributes = .{ .returns_twice = true } + +__builtin_arm_ttest + .param_str = "WUi" + .target_set = TargetSet.initOne(.aarch64) + .attributes = .{ .@"const" = true } + +__builtin_arm_uadd16 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uadd8 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uasx + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uhadd16 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uhadd8 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uhasx + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uhsax + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uhsub16 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uhsub8 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uqadd16 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uqadd8 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uqasx + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uqsax + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uqsub16 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uqsub8 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_usad8 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_usada8 + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_usat + .param_str = "UiiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_usat16 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_usax + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_usub16 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_usub8 + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uxtab16 + .param_str = "iii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_uxtb16 + .param_str = "ii" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_vcvtr_d + .param_str = "fdi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_vcvtr_f + .param_str = "ffi" + .target_set = TargetSet.initOne(.arm) + .attributes = .{ .@"const" = true } + +__builtin_arm_wfe + .param_str = "v" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__builtin_arm_wfi + .param_str = "v" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__builtin_arm_wsr + .param_str = "vcC*Ui" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_wsr64 + .param_str = "!" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_wsrp + .param_str = "vcC*vC*" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_arm_yield + .param_str = "v" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__builtin_asin + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_asinf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_asinf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_asinh + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_asinhf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_asinhf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_asinhl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_asinl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_assume + .param_str = "vb" + .attributes = .{ .const_evaluable = true } + +__builtin_assume_aligned + .param_str = "v*vC*z." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .const_evaluable = true } + +__builtin_assume_separate_storage + .param_str = "vvCD*vCD*" + .attributes = .{ .const_evaluable = true } + +__builtin_atan + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_atan2 + .param_str = "ddd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_atan2f + .param_str = "fff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_atan2f128 + .param_str = "LLdLLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_atan2l + .param_str = "LdLdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_atanf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_atanf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_atanh + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_atanhf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_atanhf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_atanhl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_atanl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_bcmp + .param_str = "ivC*vC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_bcopy + .param_str = "vvC*v*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_bitrev + .param_str = "UiUi" + .target_set = TargetSet.initOne(.xcore) + .attributes = .{ .@"const" = true } + +__builtin_bitreverse16 + .param_str = "UsUs" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_bitreverse32 + .param_str = "UZiUZi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_bitreverse64 + .param_str = "UWiUWi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_bitreverse8 + .param_str = "UcUc" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_bswap16 + .param_str = "UsUs" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_bswap32 + .param_str = "UZiUZi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_bswap64 + .param_str = "UWiUWi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_bzero + .param_str = "vv*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_cabs + .param_str = "dXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cabsf + .param_str = "fXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cabsl + .param_str = "LdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cacos + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cacosf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cacosh + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cacoshf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cacoshl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cacosl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_call_with_static_chain + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__builtin_calloc + .param_str = "v*zz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_canonicalize + .param_str = "dd" + .attributes = .{ .@"const" = true } + +__builtin_canonicalizef + .param_str = "ff" + .attributes = .{ .@"const" = true } + +__builtin_canonicalizef16 + .param_str = "hh" + .attributes = .{ .@"const" = true } + +__builtin_canonicalizel + .param_str = "LdLd" + .attributes = .{ .@"const" = true } + +__builtin_carg + .param_str = "dXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cargf + .param_str = "fXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cargl + .param_str = "LdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_casin + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_casinf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_casinh + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_casinhf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_casinhl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_casinl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_catan + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_catanf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_catanh + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_catanhf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_catanhl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_catanl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cbrt + .param_str = "dd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_cbrtf + .param_str = "ff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_cbrtf128 + .param_str = "LLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_cbrtl + .param_str = "LdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_ccos + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ccosf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ccosh + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ccoshf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ccoshl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ccosl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ceil + .param_str = "dd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_ceilf + .param_str = "ff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_ceilf128 + .param_str = "LLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_ceilf16 + .param_str = "hh" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_ceill + .param_str = "LdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_cexp + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cexpf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cexpl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_char_memchr + .param_str = "c*cC*iz" + .attributes = .{ .const_evaluable = true } + +__builtin_cimag + .param_str = "dXd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_cimagf + .param_str = "fXf" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_cimagl + .param_str = "LdXLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_classify_type + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .eval_args = false, .const_evaluable = true } + +__builtin_clog + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_clogf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_clogl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_clrsb + .param_str = "ii" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_clrsbl + .param_str = "iLi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_clrsbll + .param_str = "iLLi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_clz + .param_str = "iUi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_clzl + .param_str = "iULi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_clzll + .param_str = "iULLi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_clzs + .param_str = "iUs" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_complex + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .const_evaluable = true } + +__builtin_conj + .param_str = "XdXd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_conjf + .param_str = "XfXf" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_conjl + .param_str = "XLdXLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_constant_p + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .eval_args = false, .const_evaluable = true } + +__builtin_convertvector + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_copysign + .param_str = "ddd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_copysignf + .param_str = "fff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_copysignf128 + .param_str = "LLdLLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_copysignf16 + .param_str = "hhh" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_copysignl + .param_str = "LdLdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_cos + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cosf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cosf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cosf16 + .param_str = "hh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cosh + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_coshf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_coshf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_coshl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cosl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cpow + .param_str = "XdXdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cpowf + .param_str = "XfXfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cpowl + .param_str = "XLdXLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_cproj + .param_str = "XdXd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_cprojf + .param_str = "XfXf" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_cprojl + .param_str = "XLdXLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_cpu_init + .param_str = "v" + .target_set = TargetSet.initOne(.x86) + +__builtin_cpu_is + .param_str = "bcC*" + .target_set = TargetSet.initOne(.x86) + .attributes = .{ .@"const" = true } + +__builtin_cpu_supports + .param_str = "bcC*" + .target_set = TargetSet.initOne(.x86) + .attributes = .{ .@"const" = true } + +__builtin_creal + .param_str = "dXd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_crealf + .param_str = "fXf" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_creall + .param_str = "LdXLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_csin + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_csinf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_csinh + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_csinhf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_csinhl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_csinl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_csqrt + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_csqrtf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_csqrtl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ctan + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ctanf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ctanh + .param_str = "XdXd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ctanhf + .param_str = "XfXf" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ctanhl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ctanl + .param_str = "XLdXLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ctz + .param_str = "iUi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_ctzl + .param_str = "iULi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_ctzll + .param_str = "iULLi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_ctzs + .param_str = "iUs" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_dcbf + .param_str = "vvC*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_debugtrap + .param_str = "v" + +__builtin_dump_struct + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__builtin_dwarf_cfa + .param_str = "v*" + +__builtin_dwarf_sp_column + .param_str = "Ui" + +__builtin_dynamic_object_size + .param_str = "zvC*i" + .attributes = .{ .eval_args = false, .const_evaluable = true } + +__builtin_eh_return + .param_str = "vzv*" + .attributes = .{ .noreturn = true } + +__builtin_eh_return_data_regno + .param_str = "iIi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_elementwise_abs + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_add_sat + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_bitreverse + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_canonicalize + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_ceil + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_copysign + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_cos + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_exp + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_exp2 + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_floor + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_fma + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_log + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_log10 + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_log2 + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_max + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_min + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_nearbyint + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_pow + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_rint + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_round + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_roundeven + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_sin + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_sqrt + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_sub_sat + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_elementwise_trunc + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_erf + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_erfc + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_erfcf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_erfcf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_erfcl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_erff + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_erff128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_erfl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_exp + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_exp10 + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_exp10f + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_exp10f128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_exp10f16 + .param_str = "hh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_exp10l + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_exp2 + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_exp2f + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_exp2f128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_exp2f16 + .param_str = "hh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_exp2l + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_expect + .param_str = "LiLiLi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_expect_with_probability + .param_str = "LiLiLid" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_expf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_expf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_expf16 + .param_str = "hh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_expl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_expm1 + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_expm1f + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_expm1f128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_expm1l + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_extend_pointer + .param_str = "ULLiv*" + +__builtin_extract_return_addr + .param_str = "v*v*" + +__builtin_fabs + .param_str = "dd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fabsf + .param_str = "ff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fabsf128 + .param_str = "LLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fabsf16 + .param_str = "hh" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_fabsl + .param_str = "LdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fdim + .param_str = "ddd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fdimf + .param_str = "fff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fdimf128 + .param_str = "LLdLLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fdiml + .param_str = "LdLdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ffs + .param_str = "ii" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_ffsl + .param_str = "iLi" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_ffsll + .param_str = "iLLi" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_floor + .param_str = "dd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_floorf + .param_str = "ff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_floorf128 + .param_str = "LLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_floorf16 + .param_str = "hh" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_floorl + .param_str = "LdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_flt_rounds + .param_str = "i" + +__builtin_fma + .param_str = "dddd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fmaf + .param_str = "ffff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fmaf128 + .param_str = "LLdLLdLLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fmaf16 + .param_str = "hhhh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fmal + .param_str = "LdLdLdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fmax + .param_str = "ddd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fmaxf + .param_str = "fff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fmaxf128 + .param_str = "LLdLLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fmaxf16 + .param_str = "hhh" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fmaxl + .param_str = "LdLdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fmin + .param_str = "ddd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fminf + .param_str = "fff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fminf128 + .param_str = "LLdLLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fminf16 + .param_str = "hhh" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fminl + .param_str = "LdLdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fmod + .param_str = "ddd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fmodf + .param_str = "fff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fmodf128 + .param_str = "LLdLLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fmodf16 + .param_str = "hhh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fmodl + .param_str = "LdLdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_fpclassify + .param_str = "iiiiii." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_fprintf + .param_str = "iP*RcC*R." + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .printf, .format_string_position = 1 } + +__builtin_frame_address + .param_str = "v*IUi" + +__builtin_free + .param_str = "vv*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_frexp + .param_str = "ddi*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_frexpf + .param_str = "ffi*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_frexpf128 + .param_str = "LLdLLdi*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_frexpf16 + .param_str = "hhi*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_frexpl + .param_str = "LdLdi*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_frob_return_addr + .param_str = "v*v*" + +__builtin_fscanf + .param_str = "iP*RcC*R." + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .scanf, .format_string_position = 1 } + +__builtin_getid + .param_str = "Si" + .target_set = TargetSet.initOne(.xcore) + .attributes = .{ .@"const" = true } + +__builtin_getps + .param_str = "UiUi" + .target_set = TargetSet.initOne(.xcore) + +__builtin_huge_val + .param_str = "d" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_huge_valf + .param_str = "f" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_huge_valf128 + .param_str = "LLd" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_huge_valf16 + .param_str = "x" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_huge_vall + .param_str = "Ld" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_hypot + .param_str = "ddd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_hypotf + .param_str = "fff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_hypotf128 + .param_str = "LLdLLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_hypotl + .param_str = "LdLdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ia32_rdpmc + .param_str = "UOii" + .target_set = TargetSet.initOne(.x86) + +__builtin_ia32_rdtsc + .param_str = "UOi" + .target_set = TargetSet.initOne(.x86) + +__builtin_ia32_rdtscp + .param_str = "UOiUi*" + .target_set = TargetSet.initOne(.x86) + +__builtin_ilogb + .param_str = "id" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ilogbf + .param_str = "if" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ilogbf128 + .param_str = "iLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ilogbl + .param_str = "iLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_index + .param_str = "c*cC*i" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_inf + .param_str = "d" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_inff + .param_str = "f" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_inff128 + .param_str = "LLd" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_inff16 + .param_str = "x" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_infl + .param_str = "Ld" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_init_dwarf_reg_size_table + .param_str = "vv*" + +__builtin_is_aligned + .param_str = "bvC*z" + .attributes = .{ .@"const" = true, .custom_typecheck = true, .const_evaluable = true } + +__builtin_isfinite + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_isfpclass + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .const_evaluable = true } + +__builtin_isgreater + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true } + +__builtin_isgreaterequal + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true } + +__builtin_isinf + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_isinf_sign + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_isless + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true } + +__builtin_islessequal + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true } + +__builtin_islessgreater + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true } + +__builtin_isnan + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_isnormal + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_isunordered + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true } + +__builtin_labs + .param_str = "LiLi" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_launder + .param_str = "v*v*" + .attributes = .{ .custom_typecheck = true, .const_evaluable = true } + +__builtin_ldexp + .param_str = "ddi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ldexpf + .param_str = "ffi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ldexpf128 + .param_str = "LLdLLdi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ldexpf16 + .param_str = "hhi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ldexpl + .param_str = "LdLdi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_lgamma + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_lgammaf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_lgammaf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_lgammal + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_llabs + .param_str = "LLiLLi" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_llrint + .param_str = "LLid" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_llrintf + .param_str = "LLif" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_llrintf128 + .param_str = "LLiLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_llrintl + .param_str = "LLiLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_llround + .param_str = "LLid" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_llroundf + .param_str = "LLif" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_llroundf128 + .param_str = "LLiLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_llroundl + .param_str = "LLiLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log10 + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log10f + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log10f128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log10f16 + .param_str = "hh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log10l + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log1p + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log1pf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log1pf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log1pl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log2 + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log2f + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log2f128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log2f16 + .param_str = "hh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_log2l + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_logb + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_logbf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_logbf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_logbl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_logf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_logf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_logf16 + .param_str = "hh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_logl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_longjmp + .param_str = "vv**i" + .attributes = .{ .noreturn = true } + +__builtin_lrint + .param_str = "Lid" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_lrintf + .param_str = "Lif" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_lrintf128 + .param_str = "LiLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_lrintl + .param_str = "LiLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_lround + .param_str = "Lid" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_lroundf + .param_str = "Lif" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_lroundf128 + .param_str = "LiLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_lroundl + .param_str = "LiLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_malloc + .param_str = "v*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_matrix_column_major_load + .param_str = "v." + .attributes = .{ .custom_typecheck = true, .lib_function_with_builtin_prefix = true } + +__builtin_matrix_column_major_store + .param_str = "v." + .attributes = .{ .custom_typecheck = true, .lib_function_with_builtin_prefix = true } + +__builtin_matrix_transpose + .param_str = "v." + .attributes = .{ .custom_typecheck = true, .lib_function_with_builtin_prefix = true } + +__builtin_memchr + .param_str = "v*vC*iz" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_memcmp + .param_str = "ivC*vC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_memcpy + .param_str = "v*v*vC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_memcpy_inline + .param_str = "vv*vC*Iz" + +__builtin_memmove + .param_str = "v*v*vC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_mempcpy + .param_str = "v*v*vC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_memset + .param_str = "v*v*iz" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_memset_inline + .param_str = "vv*iIz" + +__builtin_mips_absq_s_ph + .param_str = "V2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_absq_s_qb + .param_str = "V4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_absq_s_w + .param_str = "ii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_addq_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_addq_s_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_addq_s_w + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_addqh_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_addqh_r_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_addqh_r_w + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_addqh_w + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_addsc + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_addu_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_addu_qb + .param_str = "V4ScV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_addu_s_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_addu_s_qb + .param_str = "V4ScV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_adduh_qb + .param_str = "V4ScV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_adduh_r_qb + .param_str = "V4ScV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_addwc + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_append + .param_str = "iiiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_balign + .param_str = "iiiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_bitrev + .param_str = "ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_bposge32 + .param_str = "i" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmp_eq_ph + .param_str = "vV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmp_le_ph + .param_str = "vV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmp_lt_ph + .param_str = "vV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmpgdu_eq_qb + .param_str = "iV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmpgdu_le_qb + .param_str = "iV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmpgdu_lt_qb + .param_str = "iV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmpgu_eq_qb + .param_str = "iV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmpgu_le_qb + .param_str = "iV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmpgu_lt_qb + .param_str = "iV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmpu_eq_qb + .param_str = "vV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmpu_le_qb + .param_str = "vV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_cmpu_lt_qb + .param_str = "vV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_dpa_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_dpaq_s_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_dpaq_sa_l_w + .param_str = "LLiLLiii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_dpaqx_s_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_dpaqx_sa_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_dpau_h_qbl + .param_str = "LLiLLiV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_dpau_h_qbr + .param_str = "LLiLLiV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_dpax_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_dps_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_dpsq_s_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_dpsq_sa_l_w + .param_str = "LLiLLiii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_dpsqx_s_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_dpsqx_sa_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_dpsu_h_qbl + .param_str = "LLiLLiV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_dpsu_h_qbr + .param_str = "LLiLLiV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_dpsx_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_extp + .param_str = "iLLii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_extpdp + .param_str = "iLLii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_extr_r_w + .param_str = "iLLii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_extr_rs_w + .param_str = "iLLii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_extr_s_h + .param_str = "iLLii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_extr_w + .param_str = "iLLii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_insv + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_lbux + .param_str = "iv*i" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_lhx + .param_str = "iv*i" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_lwx + .param_str = "iv*i" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_madd + .param_str = "LLiLLiii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_maddu + .param_str = "LLiLLiUiUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_maq_s_w_phl + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_maq_s_w_phr + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_maq_sa_w_phl + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_maq_sa_w_phr + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_modsub + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_msub + .param_str = "LLiLLiii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_msubu + .param_str = "LLiLLiUiUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_mthlip + .param_str = "LLiLLii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_mul_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_mul_s_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_muleq_s_w_phl + .param_str = "iV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_muleq_s_w_phr + .param_str = "iV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_muleu_s_ph_qbl + .param_str = "V2sV4ScV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_muleu_s_ph_qbr + .param_str = "V2sV4ScV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_mulq_rs_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_mulq_rs_w + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_mulq_s_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_mulq_s_w + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_mulsa_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_mulsaq_s_w_ph + .param_str = "LLiLLiV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_mult + .param_str = "LLiii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_multu + .param_str = "LLiUiUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_packrl_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_pick_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_pick_qb + .param_str = "V4ScV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_preceq_w_phl + .param_str = "iV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_preceq_w_phr + .param_str = "iV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_precequ_ph_qbl + .param_str = "V2sV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_precequ_ph_qbla + .param_str = "V2sV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_precequ_ph_qbr + .param_str = "V2sV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_precequ_ph_qbra + .param_str = "V2sV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_preceu_ph_qbl + .param_str = "V2sV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_preceu_ph_qbla + .param_str = "V2sV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_preceu_ph_qbr + .param_str = "V2sV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_preceu_ph_qbra + .param_str = "V2sV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_precr_qb_ph + .param_str = "V4ScV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_precr_sra_ph_w + .param_str = "V2siiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_precr_sra_r_ph_w + .param_str = "V2siiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_precrq_ph_w + .param_str = "V2sii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_precrq_qb_ph + .param_str = "V4ScV2sV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_precrq_rs_ph_w + .param_str = "V2sii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_precrqu_s_qb_ph + .param_str = "V4ScV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_prepend + .param_str = "iiiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_raddu_w_qb + .param_str = "iV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_rddsp + .param_str = "iIi" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_repl_ph + .param_str = "V2si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_repl_qb + .param_str = "V4Sci" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_shilo + .param_str = "LLiLLii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_shll_ph + .param_str = "V2sV2si" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_shll_qb + .param_str = "V4ScV4Sci" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_shll_s_ph + .param_str = "V2sV2si" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_shll_s_w + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_shra_ph + .param_str = "V2sV2si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_shra_qb + .param_str = "V4ScV4Sci" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_shra_r_ph + .param_str = "V2sV2si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_shra_r_qb + .param_str = "V4ScV4Sci" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_shra_r_w + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_shrl_ph + .param_str = "V2sV2si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_shrl_qb + .param_str = "V4ScV4Sci" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_subq_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_subq_s_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_subq_s_w + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_subqh_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_subqh_r_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_subqh_r_w + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_subqh_w + .param_str = "iii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_subu_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_subu_qb + .param_str = "V4ScV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_subu_s_ph + .param_str = "V2sV2sV2s" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_subu_s_qb + .param_str = "V4ScV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + +__builtin_mips_subuh_qb + .param_str = "V4ScV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_subuh_r_qb + .param_str = "V4ScV4ScV4Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mips_wrdsp + .param_str = "viIi" + .target_set = TargetSet.initOne(.mips) + +__builtin_modf + .param_str = "ddd*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_modff + .param_str = "fff*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_modff128 + .param_str = "LLdLLdLLd*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_modfl + .param_str = "LdLdLd*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_msa_add_a_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_add_a_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_add_a_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_add_a_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_a_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_a_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_a_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_a_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_s_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_s_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_s_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_s_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_u_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_u_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_u_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_adds_u_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_addv_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_addv_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_addv_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_addv_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_addvi_b + .param_str = "V16cV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_addvi_d + .param_str = "V2LLiV2LLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_addvi_h + .param_str = "V8sV8sIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_addvi_w + .param_str = "V4iV4iIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_and_v + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_andi_b + .param_str = "V16UcV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_asub_s_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_asub_s_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_asub_s_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_asub_s_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_asub_u_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_asub_u_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_asub_u_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_asub_u_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ave_s_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ave_s_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ave_s_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ave_s_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ave_u_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ave_u_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ave_u_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ave_u_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_aver_s_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_aver_s_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_aver_s_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_aver_s_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_aver_u_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_aver_u_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_aver_u_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_aver_u_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bclr_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bclr_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bclr_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bclr_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bclri_b + .param_str = "V16UcV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bclri_d + .param_str = "V2ULLiV2ULLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bclri_h + .param_str = "V8UsV8UsIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bclri_w + .param_str = "V4UiV4UiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsl_b + .param_str = "V16UcV16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsl_d + .param_str = "V2ULLiV2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsl_h + .param_str = "V8UsV8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsl_w + .param_str = "V4UiV4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsli_b + .param_str = "V16UcV16UcV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsli_d + .param_str = "V2ULLiV2ULLiV2ULLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsli_h + .param_str = "V8UsV8UsV8UsIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsli_w + .param_str = "V4UiV4UiV4UiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsr_b + .param_str = "V16UcV16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsr_d + .param_str = "V2ULLiV2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsr_h + .param_str = "V8UsV8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsr_w + .param_str = "V4UiV4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsri_b + .param_str = "V16UcV16UcV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsri_d + .param_str = "V2ULLiV2ULLiV2ULLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsri_h + .param_str = "V8UsV8UsV8UsIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_binsri_w + .param_str = "V4UiV4UiV4UiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bmnz_v + .param_str = "V16UcV16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bmnzi_b + .param_str = "V16UcV16UcV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bmz_v + .param_str = "V16UcV16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bmzi_b + .param_str = "V16UcV16UcV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bneg_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bneg_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bneg_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bneg_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bnegi_b + .param_str = "V16UcV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bnegi_d + .param_str = "V2ULLiV2ULLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bnegi_h + .param_str = "V8UsV8UsIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bnegi_w + .param_str = "V4UiV4UiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bnz_b + .param_str = "iV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bnz_d + .param_str = "iV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bnz_h + .param_str = "iV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bnz_v + .param_str = "iV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bnz_w + .param_str = "iV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bsel_v + .param_str = "V16UcV16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bseli_b + .param_str = "V16UcV16UcV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bset_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bset_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bset_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bset_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bseti_b + .param_str = "V16UcV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bseti_d + .param_str = "V2ULLiV2ULLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bseti_h + .param_str = "V8UsV8UsIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bseti_w + .param_str = "V4UiV4UiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bz_b + .param_str = "iV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bz_d + .param_str = "iV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bz_h + .param_str = "iV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bz_v + .param_str = "iV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_bz_w + .param_str = "iV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ceq_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ceq_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ceq_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ceq_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ceqi_b + .param_str = "V16ScV16ScISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ceqi_d + .param_str = "V2SLLiV2SLLiISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ceqi_h + .param_str = "V8SsV8SsISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ceqi_w + .param_str = "V4SiV4SiISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_cfcmsa + .param_str = "iIi" + .target_set = TargetSet.initOne(.mips) + +__builtin_msa_cle_s_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_cle_s_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_cle_s_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_cle_s_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_cle_u_b + .param_str = "V16ScV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_cle_u_d + .param_str = "V2SLLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_cle_u_h + .param_str = "V8SsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_cle_u_w + .param_str = "V4SiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clei_s_b + .param_str = "V16ScV16ScISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clei_s_d + .param_str = "V2SLLiV2SLLiISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clei_s_h + .param_str = "V8SsV8SsISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clei_s_w + .param_str = "V4SiV4SiISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clei_u_b + .param_str = "V16ScV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clei_u_d + .param_str = "V2SLLiV2ULLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clei_u_h + .param_str = "V8SsV8UsIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clei_u_w + .param_str = "V4SiV4UiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clt_s_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clt_s_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clt_s_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clt_s_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clt_u_b + .param_str = "V16ScV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clt_u_d + .param_str = "V2SLLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clt_u_h + .param_str = "V8SsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clt_u_w + .param_str = "V4SiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clti_s_b + .param_str = "V16ScV16ScISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clti_s_d + .param_str = "V2SLLiV2SLLiISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clti_s_h + .param_str = "V8SsV8SsISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clti_s_w + .param_str = "V4SiV4SiISi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clti_u_b + .param_str = "V16ScV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clti_u_d + .param_str = "V2SLLiV2ULLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clti_u_h + .param_str = "V8SsV8UsIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_clti_u_w + .param_str = "V4SiV4UiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_copy_s_b + .param_str = "iV16ScIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_copy_s_d + .param_str = "LLiV2SLLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_copy_s_h + .param_str = "iV8SsIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_copy_s_w + .param_str = "iV4SiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_copy_u_b + .param_str = "iV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_copy_u_d + .param_str = "LLiV2ULLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_copy_u_h + .param_str = "iV8UsIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_copy_u_w + .param_str = "iV4UiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ctcmsa + .param_str = "vIii" + .target_set = TargetSet.initOne(.mips) + +__builtin_msa_div_s_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_div_s_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_div_s_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_div_s_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_div_u_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_div_u_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_div_u_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_div_u_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dotp_s_d + .param_str = "V2SLLiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dotp_s_h + .param_str = "V8SsV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dotp_s_w + .param_str = "V4SiV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dotp_u_d + .param_str = "V2ULLiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dotp_u_h + .param_str = "V8UsV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dotp_u_w + .param_str = "V4UiV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpadd_s_d + .param_str = "V2SLLiV2SLLiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpadd_s_h + .param_str = "V8SsV8SsV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpadd_s_w + .param_str = "V4SiV4SiV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpadd_u_d + .param_str = "V2ULLiV2ULLiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpadd_u_h + .param_str = "V8UsV8UsV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpadd_u_w + .param_str = "V4UiV4UiV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpsub_s_d + .param_str = "V2SLLiV2SLLiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpsub_s_h + .param_str = "V8SsV8SsV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpsub_s_w + .param_str = "V4SiV4SiV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpsub_u_d + .param_str = "V2ULLiV2ULLiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpsub_u_h + .param_str = "V8UsV8UsV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_dpsub_u_w + .param_str = "V4UiV4UiV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fadd_d + .param_str = "V2dV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fadd_w + .param_str = "V4fV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcaf_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcaf_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fceq_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fceq_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fclass_d + .param_str = "V2LLiV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fclass_w + .param_str = "V4iV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcle_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcle_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fclt_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fclt_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcne_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcne_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcor_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcor_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcueq_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcueq_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcule_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcule_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcult_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcult_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcun_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcun_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcune_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fcune_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fdiv_d + .param_str = "V2dV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fdiv_w + .param_str = "V4fV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fexdo_h + .param_str = "V8hV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fexdo_w + .param_str = "V4fV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fexp2_d + .param_str = "V2dV2dV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fexp2_w + .param_str = "V4fV4fV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fexupl_d + .param_str = "V2dV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fexupl_w + .param_str = "V4fV8h" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fexupr_d + .param_str = "V2dV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fexupr_w + .param_str = "V4fV8h" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ffint_s_d + .param_str = "V2dV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ffint_s_w + .param_str = "V4fV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ffint_u_d + .param_str = "V2dV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ffint_u_w + .param_str = "V4fV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ffql_d + .param_str = "V2dV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ffql_w + .param_str = "V4fV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ffqr_d + .param_str = "V2dV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ffqr_w + .param_str = "V4fV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fill_b + .param_str = "V16Sci" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fill_d + .param_str = "V2SLLiLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fill_h + .param_str = "V8Ssi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fill_w + .param_str = "V4Sii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_flog2_d + .param_str = "V2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_flog2_w + .param_str = "V4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmadd_d + .param_str = "V2dV2dV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmadd_w + .param_str = "V4fV4fV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmax_a_d + .param_str = "V2dV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmax_a_w + .param_str = "V4fV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmax_d + .param_str = "V2dV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmax_w + .param_str = "V4fV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmin_a_d + .param_str = "V2dV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmin_a_w + .param_str = "V4fV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmin_d + .param_str = "V2dV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmin_w + .param_str = "V4fV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmsub_d + .param_str = "V2dV2dV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmsub_w + .param_str = "V4fV4fV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmul_d + .param_str = "V2dV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fmul_w + .param_str = "V4fV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_frcp_d + .param_str = "V2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_frcp_w + .param_str = "V4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_frint_d + .param_str = "V2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_frint_w + .param_str = "V4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_frsqrt_d + .param_str = "V2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_frsqrt_w + .param_str = "V4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsaf_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsaf_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fseq_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fseq_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsle_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsle_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fslt_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fslt_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsne_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsne_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsor_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsor_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsqrt_d + .param_str = "V2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsqrt_w + .param_str = "V4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsub_d + .param_str = "V2dV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsub_w + .param_str = "V4fV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsueq_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsueq_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsule_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsule_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsult_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsult_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsun_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsun_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsune_d + .param_str = "V2LLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_fsune_w + .param_str = "V4iV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ftint_s_d + .param_str = "V2SLLiV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ftint_s_w + .param_str = "V4SiV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ftint_u_d + .param_str = "V2ULLiV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ftint_u_w + .param_str = "V4UiV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ftq_h + .param_str = "V4UiV4fV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ftq_w + .param_str = "V2ULLiV2dV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ftrunc_s_d + .param_str = "V2SLLiV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ftrunc_s_w + .param_str = "V4SiV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ftrunc_u_d + .param_str = "V2ULLiV2d" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ftrunc_u_w + .param_str = "V4UiV4f" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hadd_s_d + .param_str = "V2SLLiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hadd_s_h + .param_str = "V8SsV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hadd_s_w + .param_str = "V4SiV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hadd_u_d + .param_str = "V2ULLiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hadd_u_h + .param_str = "V8UsV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hadd_u_w + .param_str = "V4UiV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hsub_s_d + .param_str = "V2SLLiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hsub_s_h + .param_str = "V8SsV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hsub_s_w + .param_str = "V4SiV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hsub_u_d + .param_str = "V2ULLiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hsub_u_h + .param_str = "V8UsV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_hsub_u_w + .param_str = "V4UiV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvev_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvev_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvev_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvev_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvl_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvl_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvl_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvl_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvod_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvod_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvod_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvod_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvr_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvr_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvr_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ilvr_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_insert_b + .param_str = "V16ScV16ScIUii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_insert_d + .param_str = "V2SLLiV2SLLiIUiLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_insert_h + .param_str = "V8SsV8SsIUii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_insert_w + .param_str = "V4SiV4SiIUii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_insve_b + .param_str = "V16ScV16ScIUiV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_insve_d + .param_str = "V2SLLiV2SLLiIUiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_insve_h + .param_str = "V8SsV8SsIUiV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_insve_w + .param_str = "V4SiV4SiIUiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ld_b + .param_str = "V16Scv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ld_d + .param_str = "V2SLLiv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ld_h + .param_str = "V8Ssv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ld_w + .param_str = "V4Siv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ldi_b + .param_str = "V16cIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ldi_d + .param_str = "V2LLiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ldi_h + .param_str = "V8sIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ldi_w + .param_str = "V4iIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ldr_d + .param_str = "V2SLLiv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ldr_w + .param_str = "V4Siv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_madd_q_h + .param_str = "V8SsV8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_madd_q_w + .param_str = "V4SiV4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maddr_q_h + .param_str = "V8SsV8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maddr_q_w + .param_str = "V4SiV4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maddv_b + .param_str = "V16ScV16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maddv_d + .param_str = "V2SLLiV2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maddv_h + .param_str = "V8SsV8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maddv_w + .param_str = "V4SiV4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_a_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_a_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_a_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_a_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_s_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_s_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_s_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_s_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_u_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_u_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_u_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_max_u_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maxi_s_b + .param_str = "V16ScV16ScIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maxi_s_d + .param_str = "V2SLLiV2SLLiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maxi_s_h + .param_str = "V8SsV8SsIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maxi_s_w + .param_str = "V4SiV4SiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maxi_u_b + .param_str = "V16UcV16UcIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maxi_u_d + .param_str = "V2ULLiV2ULLiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maxi_u_h + .param_str = "V8UsV8UsIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_maxi_u_w + .param_str = "V4UiV4UiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_a_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_a_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_a_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_a_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_s_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_s_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_s_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_s_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_u_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_u_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_u_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_min_u_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mini_s_b + .param_str = "V16ScV16ScIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mini_s_d + .param_str = "V2SLLiV2SLLiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mini_s_h + .param_str = "V8SsV8SsIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mini_s_w + .param_str = "V4SiV4SiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mini_u_b + .param_str = "V16UcV16UcIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mini_u_d + .param_str = "V2ULLiV2ULLiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mini_u_h + .param_str = "V8UsV8UsIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mini_u_w + .param_str = "V4UiV4UiIi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mod_s_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mod_s_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mod_s_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mod_s_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mod_u_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mod_u_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mod_u_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mod_u_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_move_v + .param_str = "V16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_msub_q_h + .param_str = "V8SsV8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_msub_q_w + .param_str = "V4SiV4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_msubr_q_h + .param_str = "V8SsV8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_msubr_q_w + .param_str = "V4SiV4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_msubv_b + .param_str = "V16ScV16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_msubv_d + .param_str = "V2SLLiV2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_msubv_h + .param_str = "V8SsV8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_msubv_w + .param_str = "V4SiV4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mul_q_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mul_q_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mulr_q_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mulr_q_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mulv_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mulv_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mulv_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_mulv_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_nloc_b + .param_str = "V16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_nloc_d + .param_str = "V2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_nloc_h + .param_str = "V8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_nloc_w + .param_str = "V4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_nlzc_b + .param_str = "V16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_nlzc_d + .param_str = "V2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_nlzc_h + .param_str = "V8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_nlzc_w + .param_str = "V4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_nor_v + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_nori_b + .param_str = "V16UcV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_or_v + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_ori_b + .param_str = "V16UcV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pckev_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pckev_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pckev_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pckev_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pckod_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pckod_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pckod_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pckod_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pcnt_b + .param_str = "V16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pcnt_d + .param_str = "V2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pcnt_h + .param_str = "V8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_pcnt_w + .param_str = "V4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sat_s_b + .param_str = "V16ScV16ScIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sat_s_d + .param_str = "V2SLLiV2SLLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sat_s_h + .param_str = "V8SsV8SsIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sat_s_w + .param_str = "V4SiV4SiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sat_u_b + .param_str = "V16UcV16UcIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sat_u_d + .param_str = "V2ULLiV2ULLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sat_u_h + .param_str = "V8UsV8UsIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sat_u_w + .param_str = "V4UiV4UiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_shf_b + .param_str = "V16cV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_shf_h + .param_str = "V8sV8sIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_shf_w + .param_str = "V4iV4iIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sld_b + .param_str = "V16cV16cV16cUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sld_d + .param_str = "V2LLiV2LLiV2LLiUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sld_h + .param_str = "V8sV8sV8sUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sld_w + .param_str = "V4iV4iV4iUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sldi_b + .param_str = "V16cV16cV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sldi_d + .param_str = "V2LLiV2LLiV2LLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sldi_h + .param_str = "V8sV8sV8sIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sldi_w + .param_str = "V4iV4iV4iIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sll_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sll_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sll_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sll_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_slli_b + .param_str = "V16cV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_slli_d + .param_str = "V2LLiV2LLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_slli_h + .param_str = "V8sV8sIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_slli_w + .param_str = "V4iV4iIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_splat_b + .param_str = "V16cV16cUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_splat_d + .param_str = "V2LLiV2LLiUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_splat_h + .param_str = "V8sV8sUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_splat_w + .param_str = "V4iV4iUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_splati_b + .param_str = "V16cV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_splati_d + .param_str = "V2LLiV2LLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_splati_h + .param_str = "V8sV8sIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_splati_w + .param_str = "V4iV4iIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sra_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sra_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sra_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_sra_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srai_b + .param_str = "V16cV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srai_d + .param_str = "V2LLiV2LLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srai_h + .param_str = "V8sV8sIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srai_w + .param_str = "V4iV4iIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srar_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srar_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srar_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srar_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srari_b + .param_str = "V16cV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srari_d + .param_str = "V2LLiV2LLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srari_h + .param_str = "V8sV8sIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srari_w + .param_str = "V4iV4iIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srl_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srl_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srl_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srl_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srli_b + .param_str = "V16cV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srli_d + .param_str = "V2LLiV2LLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srli_h + .param_str = "V8sV8sIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srli_w + .param_str = "V4iV4iIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srlr_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srlr_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srlr_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srlr_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srlri_b + .param_str = "V16cV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srlri_d + .param_str = "V2LLiV2LLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srlri_h + .param_str = "V8sV8sIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_srlri_w + .param_str = "V4iV4iIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_st_b + .param_str = "vV16Scv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_st_d + .param_str = "vV2SLLiv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_st_h + .param_str = "vV8Ssv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_st_w + .param_str = "vV4Siv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_str_d + .param_str = "vV2SLLiv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_str_w + .param_str = "vV4Siv*Ii" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subs_s_b + .param_str = "V16ScV16ScV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subs_s_d + .param_str = "V2SLLiV2SLLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subs_s_h + .param_str = "V8SsV8SsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subs_s_w + .param_str = "V4SiV4SiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subs_u_b + .param_str = "V16UcV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subs_u_d + .param_str = "V2ULLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subs_u_h + .param_str = "V8UsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subs_u_w + .param_str = "V4UiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subsus_u_b + .param_str = "V16UcV16UcV16Sc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subsus_u_d + .param_str = "V2ULLiV2ULLiV2SLLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subsus_u_h + .param_str = "V8UsV8UsV8Ss" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subsus_u_w + .param_str = "V4UiV4UiV4Si" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subsuu_s_b + .param_str = "V16ScV16UcV16Uc" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subsuu_s_d + .param_str = "V2SLLiV2ULLiV2ULLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subsuu_s_h + .param_str = "V8SsV8UsV8Us" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subsuu_s_w + .param_str = "V4SiV4UiV4Ui" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subv_b + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subv_d + .param_str = "V2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subv_h + .param_str = "V8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subv_w + .param_str = "V4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subvi_b + .param_str = "V16cV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subvi_d + .param_str = "V2LLiV2LLiIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subvi_h + .param_str = "V8sV8sIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_subvi_w + .param_str = "V4iV4iIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_vshf_b + .param_str = "V16cV16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_vshf_d + .param_str = "V2LLiV2LLiV2LLiV2LLi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_vshf_h + .param_str = "V8sV8sV8sV8s" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_vshf_w + .param_str = "V4iV4iV4iV4i" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_xor_v + .param_str = "V16cV16cV16c" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_msa_xori_b + .param_str = "V16cV16cIUi" + .target_set = TargetSet.initOne(.mips) + .attributes = .{ .@"const" = true } + +__builtin_mul_overflow + .param_str = "b." + .attributes = .{ .custom_typecheck = true, .const_evaluable = true } + +__builtin_nan + .param_str = "dcC*" + .attributes = .{ .pure = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_nanf + .param_str = "fcC*" + .attributes = .{ .pure = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_nanf128 + .param_str = "LLdcC*" + .attributes = .{ .pure = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_nanf16 + .param_str = "xcC*" + .attributes = .{ .pure = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_nanl + .param_str = "LdcC*" + .attributes = .{ .pure = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_nans + .param_str = "dcC*" + .attributes = .{ .pure = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_nansf + .param_str = "fcC*" + .attributes = .{ .pure = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_nansf128 + .param_str = "LLdcC*" + .attributes = .{ .pure = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_nansf16 + .param_str = "xcC*" + .attributes = .{ .pure = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_nansl + .param_str = "LdcC*" + .attributes = .{ .pure = true, .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_nearbyint + .param_str = "dd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_nearbyintf + .param_str = "ff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_nearbyintf128 + .param_str = "LLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_nearbyintl + .param_str = "LdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_nextafter + .param_str = "ddd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_nextafterf + .param_str = "fff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_nextafterf128 + .param_str = "LLdLLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_nextafterl + .param_str = "LdLdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_nexttoward + .param_str = "ddLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_nexttowardf + .param_str = "ffLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_nexttowardf128 + .param_str = "LLdLLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_nexttowardl + .param_str = "LdLdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_nondeterministic_value + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__builtin_nontemporal_load + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__builtin_nontemporal_store + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__builtin_objc_memmove_collectable + .param_str = "v*v*vC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_object_size + .param_str = "zvC*i" + .attributes = .{ .eval_args = false, .const_evaluable = true } + +__builtin_operator_delete + .param_str = "vv*" + .attributes = .{ .custom_typecheck = true, .const_evaluable = true } + +__builtin_operator_new + .param_str = "v*z" + .attributes = .{ .@"const" = true, .custom_typecheck = true, .const_evaluable = true } + +__builtin_os_log_format + .param_str = "v*v*cC*." + .attributes = .{ .custom_typecheck = true, .format_kind = .printf } + +__builtin_os_log_format_buffer_size + .param_str = "zcC*." + .attributes = .{ .custom_typecheck = true, .format_kind = .printf, .eval_args = false, .const_evaluable = true } + +__builtin_pack_longdouble + .param_str = "Lddd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_parity + .param_str = "iUi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_parityl + .param_str = "iULi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_parityll + .param_str = "iULLi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_popcount + .param_str = "iUi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_popcountl + .param_str = "iULi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_popcountll + .param_str = "iULLi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_pow + .param_str = "ddd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_powf + .param_str = "fff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_powf128 + .param_str = "LLdLLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_powf16 + .param_str = "hhh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_powi + .param_str = "ddi" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_powif + .param_str = "ffi" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_powil + .param_str = "LdLdi" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_powl + .param_str = "LdLdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_ppc_alignx + .param_str = "vIivC*" + .target_set = TargetSet.initOne(.ppc) + .attributes = .{ .@"const" = true } + +__builtin_ppc_cmpb + .param_str = "LLiLLiLLi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_compare_and_swap + .param_str = "iiD*i*i" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_compare_and_swaplp + .param_str = "iLiD*Li*Li" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_dcbfl + .param_str = "vvC*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_dcbflp + .param_str = "vvC*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_dcbst + .param_str = "vvC*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_dcbt + .param_str = "vv*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_dcbtst + .param_str = "vv*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_dcbtstt + .param_str = "vv*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_dcbtt + .param_str = "vv*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_dcbz + .param_str = "vv*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_eieio + .param_str = "v" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fcfid + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fcfud + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fctid + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fctidz + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fctiw + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fctiwz + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fctudz + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fctuwz + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fetch_and_add + .param_str = "iiD*i" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fetch_and_addlp + .param_str = "LiLiD*Li" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fetch_and_and + .param_str = "UiUiD*Ui" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fetch_and_andlp + .param_str = "ULiULiD*ULi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fetch_and_or + .param_str = "UiUiD*Ui" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fetch_and_orlp + .param_str = "ULiULiD*ULi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fetch_and_swap + .param_str = "UiUiD*Ui" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fetch_and_swaplp + .param_str = "ULiULiD*ULi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fmsub + .param_str = "dddd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fmsubs + .param_str = "ffff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fnabs + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fnabss + .param_str = "ff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fnmadd + .param_str = "dddd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fnmadds + .param_str = "ffff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fnmsub + .param_str = "dddd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fnmsubs + .param_str = "ffff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fre + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fres + .param_str = "ff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fric + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_frim + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_frims + .param_str = "ff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_frin + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_frins + .param_str = "ff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_frip + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_frips + .param_str = "ff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_friz + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_frizs + .param_str = "ff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_frsqrte + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_frsqrtes + .param_str = "ff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fsel + .param_str = "dddd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fsels + .param_str = "ffff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fsqrt + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_fsqrts + .param_str = "ff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_get_timebase + .param_str = "ULLi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_iospace_eieio + .param_str = "v" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_iospace_lwsync + .param_str = "v" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_iospace_sync + .param_str = "v" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_isync + .param_str = "v" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_ldarx + .param_str = "LiLiD*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_load2r + .param_str = "UsUs*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_load4r + .param_str = "UiUi*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_lwarx + .param_str = "iiD*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_lwsync + .param_str = "v" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_maxfe + .param_str = "LdLdLdLd." + .target_set = TargetSet.initOne(.ppc) + .attributes = .{ .custom_typecheck = true } + +__builtin_ppc_maxfl + .param_str = "dddd." + .target_set = TargetSet.initOne(.ppc) + .attributes = .{ .custom_typecheck = true } + +__builtin_ppc_maxfs + .param_str = "ffff." + .target_set = TargetSet.initOne(.ppc) + .attributes = .{ .custom_typecheck = true } + +__builtin_ppc_mfmsr + .param_str = "Ui" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_mfspr + .param_str = "ULiIi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_mftbu + .param_str = "Ui" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_minfe + .param_str = "LdLdLdLd." + .target_set = TargetSet.initOne(.ppc) + .attributes = .{ .custom_typecheck = true } + +__builtin_ppc_minfl + .param_str = "dddd." + .target_set = TargetSet.initOne(.ppc) + .attributes = .{ .custom_typecheck = true } + +__builtin_ppc_minfs + .param_str = "ffff." + .target_set = TargetSet.initOne(.ppc) + .attributes = .{ .custom_typecheck = true } + +__builtin_ppc_mtfsb0 + .param_str = "vUIi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_mtfsb1 + .param_str = "vUIi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_mtfsf + .param_str = "vUIiUi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_mtfsfi + .param_str = "vUIiUIi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_mtmsr + .param_str = "vUi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_mtspr + .param_str = "vIiULi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_mulhd + .param_str = "LLiLiLi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_mulhdu + .param_str = "ULLiULiULi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_mulhw + .param_str = "iii" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_mulhwu + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_popcntb + .param_str = "ULiULi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_poppar4 + .param_str = "iUi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_poppar8 + .param_str = "iULLi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_rdlam + .param_str = "UWiUWiUWiUWIi" + .target_set = TargetSet.initOne(.ppc) + .attributes = .{ .@"const" = true } + +__builtin_ppc_recipdivd + .param_str = "V2dV2dV2d" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_recipdivf + .param_str = "V4fV4fV4f" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_rldimi + .param_str = "ULLiULLiULLiIUiIULLi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_rlwimi + .param_str = "UiUiUiIUiIUi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_rlwnm + .param_str = "UiUiUiIUi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_rsqrtd + .param_str = "V2dV2d" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_rsqrtf + .param_str = "V4fV4f" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_stdcx + .param_str = "iLiD*Li" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_stfiw + .param_str = "viC*d" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_store2r + .param_str = "vUiUs*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_store4r + .param_str = "vUiUi*" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_stwcx + .param_str = "iiD*i" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_swdiv + .param_str = "ddd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_swdiv_nochk + .param_str = "ddd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_swdivs + .param_str = "fff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_swdivs_nochk + .param_str = "fff" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_sync + .param_str = "v" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_tdw + .param_str = "vLLiLLiIUi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_trap + .param_str = "vi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_trapd + .param_str = "vLi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_ppc_tw + .param_str = "viiIUi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_prefetch + .param_str = "vvC*." + .attributes = .{ .@"const" = true } + +__builtin_preserve_access_index + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__builtin_printf + .param_str = "icC*R." + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .printf } + +__builtin_ptx_get_image_channel_data_typei_ + .param_str = "ii" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_get_image_channel_orderi_ + .param_str = "ii" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_get_image_depthi_ + .param_str = "ii" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_get_image_heighti_ + .param_str = "ii" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_get_image_widthi_ + .param_str = "ii" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_read_image2Dff_ + .param_str = "V4fiiff" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_read_image2Dfi_ + .param_str = "V4fiiii" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_read_image2Dif_ + .param_str = "V4iiiff" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_read_image2Dii_ + .param_str = "V4iiiii" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_read_image3Dff_ + .param_str = "V4fiiffff" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_read_image3Dfi_ + .param_str = "V4fiiiiii" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_read_image3Dif_ + .param_str = "V4iiiffff" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_read_image3Dii_ + .param_str = "V4iiiiiii" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_write_image2Df_ + .param_str = "viiiffff" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_write_image2Di_ + .param_str = "viiiiiii" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_ptx_write_image2Dui_ + .param_str = "viiiUiUiUiUi" + .target_set = TargetSet.initOne(.nvptx) + +__builtin_r600_implicitarg_ptr + .param_str = "Uc*7" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_r600_read_tgid_x + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_r600_read_tgid_y + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_r600_read_tgid_z + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_r600_read_tidig_x + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_r600_read_tidig_y + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_r600_read_tidig_z + .param_str = "Ui" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_r600_recipsqrt_ieee + .param_str = "dd" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_r600_recipsqrt_ieeef + .param_str = "ff" + .target_set = TargetSet.initOne(.amdgpu) + .attributes = .{ .@"const" = true } + +__builtin_readcyclecounter + .param_str = "ULLi" + +__builtin_readflm + .param_str = "d" + .target_set = TargetSet.initOne(.ppc) + +__builtin_realloc + .param_str = "v*v*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_reduce_add + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_reduce_and + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_reduce_max + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_reduce_min + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_reduce_mul + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_reduce_or + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_reduce_xor + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_remainder + .param_str = "ddd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_remainderf + .param_str = "fff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_remainderf128 + .param_str = "LLdLLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_remainderl + .param_str = "LdLdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_remquo + .param_str = "dddi*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_remquof + .param_str = "fffi*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_remquof128 + .param_str = "LLdLLdLLdi*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_remquol + .param_str = "LdLdLdi*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_return_address + .param_str = "v*IUi" + +__builtin_rindex + .param_str = "c*cC*i" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_rint + .param_str = "dd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_rintf + .param_str = "ff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_rintf128 + .param_str = "LLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_rintf16 + .param_str = "hh" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_rintl + .param_str = "LdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_rotateleft16 + .param_str = "UsUsUs" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_rotateleft32 + .param_str = "UZiUZiUZi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_rotateleft64 + .param_str = "UWiUWiUWi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_rotateleft8 + .param_str = "UcUcUc" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_rotateright16 + .param_str = "UsUsUs" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_rotateright32 + .param_str = "UZiUZiUZi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_rotateright64 + .param_str = "UWiUWiUWi" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_rotateright8 + .param_str = "UcUcUc" + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__builtin_round + .param_str = "dd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_roundeven + .param_str = "dd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_roundevenf + .param_str = "ff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_roundevenf128 + .param_str = "LLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_roundevenf16 + .param_str = "hh" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_roundevenl + .param_str = "LdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_roundf + .param_str = "ff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_roundf128 + .param_str = "LLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_roundf16 + .param_str = "hh" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_roundl + .param_str = "LdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_sadd_overflow + .param_str = "bSiCSiCSi*" + .attributes = .{ .const_evaluable = true } + +__builtin_saddl_overflow + .param_str = "bSLiCSLiCSLi*" + .attributes = .{ .const_evaluable = true } + +__builtin_saddll_overflow + .param_str = "bSLLiCSLLiCSLLi*" + .attributes = .{ .const_evaluable = true } + +__builtin_scalbln + .param_str = "ddLi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_scalblnf + .param_str = "ffLi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_scalblnf128 + .param_str = "LLdLLdLi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_scalblnl + .param_str = "LdLdLi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_scalbn + .param_str = "ddi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_scalbnf + .param_str = "ffi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_scalbnf128 + .param_str = "LLdLLdi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_scalbnl + .param_str = "LdLdi" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_scanf + .param_str = "icC*R." + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .scanf } + +__builtin_set_flt_rounds + .param_str = "vi" + +__builtin_setflm + .param_str = "dd" + .target_set = TargetSet.initOne(.ppc) + +__builtin_setjmp + .param_str = "iv**" + .attributes = .{ .returns_twice = true } + +__builtin_setps + .param_str = "vUiUi" + .target_set = TargetSet.initOne(.xcore) + +__builtin_setrnd + .param_str = "di" + .target_set = TargetSet.initOne(.ppc) + +__builtin_shufflevector + .param_str = "v." + .attributes = .{ .@"const" = true, .custom_typecheck = true } + +__builtin_signbit + .param_str = "i." + .attributes = .{ .@"const" = true, .custom_typecheck = true, .lib_function_with_builtin_prefix = true } + +__builtin_signbitf + .param_str = "if" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_signbitl + .param_str = "iLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_sin + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sinf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sinf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sinf16 + .param_str = "hh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sinh + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sinhf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sinhf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sinhl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sinl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_smul_overflow + .param_str = "bSiCSiCSi*" + .attributes = .{ .const_evaluable = true } + +__builtin_smull_overflow + .param_str = "bSLiCSLiCSLi*" + .attributes = .{ .const_evaluable = true } + +__builtin_smulll_overflow + .param_str = "bSLLiCSLLiCSLLi*" + .attributes = .{ .const_evaluable = true } + +__builtin_snprintf + .param_str = "ic*RzcC*R." + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .printf, .format_string_position = 2 } + +__builtin_sponentry + .param_str = "v*" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__builtin_sprintf + .param_str = "ic*RcC*R." + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .printf, .format_string_position = 1 } + +__builtin_sqrt + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sqrtf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sqrtf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sqrtf16 + .param_str = "hh" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sqrtl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_sscanf + .param_str = "icC*RcC*R." + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .scanf, .format_string_position = 1 } + +__builtin_ssub_overflow + .param_str = "bSiCSiCSi*" + .attributes = .{ .const_evaluable = true } + +__builtin_ssubl_overflow + .param_str = "bSLiCSLiCSLi*" + .attributes = .{ .const_evaluable = true } + +__builtin_ssubll_overflow + .param_str = "bSLLiCSLLiCSLLi*" + .attributes = .{ .const_evaluable = true } + +__builtin_stdarg_start + .param_str = "vA." + .attributes = .{ .custom_typecheck = true } + +__builtin_stpcpy + .param_str = "c*c*cC*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_stpncpy + .param_str = "c*c*cC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strcasecmp + .param_str = "icC*cC*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strcat + .param_str = "c*c*cC*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strchr + .param_str = "c*cC*i" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_strcmp + .param_str = "icC*cC*" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_strcpy + .param_str = "c*c*cC*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strcspn + .param_str = "zcC*cC*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strdup + .param_str = "c*cC*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strlen + .param_str = "zcC*" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_strncasecmp + .param_str = "icC*cC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strncat + .param_str = "c*c*cC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strncmp + .param_str = "icC*cC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_strncpy + .param_str = "c*c*cC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strndup + .param_str = "c*cC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strpbrk + .param_str = "c*cC*cC*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strrchr + .param_str = "c*cC*i" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strspn + .param_str = "zcC*cC*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_strstr + .param_str = "c*cC*cC*" + .attributes = .{ .lib_function_with_builtin_prefix = true } + +__builtin_sub_overflow + .param_str = "b." + .attributes = .{ .custom_typecheck = true, .const_evaluable = true } + +__builtin_subc + .param_str = "UiUiCUiCUiCUi*" + +__builtin_subcb + .param_str = "UcUcCUcCUcCUc*" + +__builtin_subcl + .param_str = "ULiULiCULiCULiCULi*" + +__builtin_subcll + .param_str = "ULLiULLiCULLiCULLiCULLi*" + +__builtin_subcs + .param_str = "UsUsCUsCUsCUs*" + +__builtin_tan + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_tanf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_tanf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_tanh + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_tanhf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_tanhf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_tanhl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_tanl + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_tgamma + .param_str = "dd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_tgammaf + .param_str = "ff" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_tgammaf128 + .param_str = "LLdLLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_tgammal + .param_str = "LdLd" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__builtin_thread_pointer + .param_str = "v*" + .attributes = .{ .@"const" = true } + +__builtin_trap + .param_str = "v" + .attributes = .{ .noreturn = true } + +__builtin_trunc + .param_str = "dd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_truncf + .param_str = "ff" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_truncf128 + .param_str = "LLdLLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_truncf16 + .param_str = "hh" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_truncl + .param_str = "LdLd" + .attributes = .{ .@"const" = true, .lib_function_with_builtin_prefix = true } + +__builtin_uadd_overflow + .param_str = "bUiCUiCUi*" + .attributes = .{ .const_evaluable = true } + +__builtin_uaddl_overflow + .param_str = "bULiCULiCULi*" + .attributes = .{ .const_evaluable = true } + +__builtin_uaddll_overflow + .param_str = "bULLiCULLiCULLi*" + .attributes = .{ .const_evaluable = true } + +__builtin_umul_overflow + .param_str = "bUiCUiCUi*" + .attributes = .{ .const_evaluable = true } + +__builtin_umull_overflow + .param_str = "bULiCULiCULi*" + .attributes = .{ .const_evaluable = true } + +__builtin_umulll_overflow + .param_str = "bULLiCULLiCULLi*" + .attributes = .{ .const_evaluable = true } + +__builtin_unpack_longdouble + .param_str = "dLdIi" + .target_set = TargetSet.initOne(.ppc) + +__builtin_unpredictable + .param_str = "LiLi" + .attributes = .{ .@"const" = true } + +__builtin_unreachable + .param_str = "v" + .attributes = .{ .noreturn = true } + +__builtin_unwind_init + .param_str = "v" + +__builtin_usub_overflow + .param_str = "bUiCUiCUi*" + .attributes = .{ .const_evaluable = true } + +__builtin_usubl_overflow + .param_str = "bULiCULiCULi*" + .attributes = .{ .const_evaluable = true } + +__builtin_usubll_overflow + .param_str = "bULLiCULLiCULLi*" + .attributes = .{ .const_evaluable = true } + +__builtin_va_copy + .param_str = "vAA" + +__builtin_va_end + .param_str = "vA" + +__builtin_va_start + .param_str = "vA." + .attributes = .{ .custom_typecheck = true } + +__builtin_ve_vl_andm_MMM + .param_str = "V512bV512bV512b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_andm_mmm + .param_str = "V256bV256bV256b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_eqvm_MMM + .param_str = "V512bV512bV512b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_eqvm_mmm + .param_str = "V256bV256bV256b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_extract_vm512l + .param_str = "V256bV512b" + .target_set = TargetSet.initOne(.ve) + +__builtin_ve_vl_extract_vm512u + .param_str = "V256bV512b" + .target_set = TargetSet.initOne(.ve) + +__builtin_ve_vl_fencec_s + .param_str = "vUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_fencei + .param_str = "v" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_fencem_s + .param_str = "vUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_fidcr_sss + .param_str = "LUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_insert_vm512l + .param_str = "V512bV512bV256b" + .target_set = TargetSet.initOne(.ve) + +__builtin_ve_vl_insert_vm512u + .param_str = "V512bV512bV256b" + .target_set = TargetSet.initOne(.ve) + +__builtin_ve_vl_lcr_sss + .param_str = "LUiLUiLUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_lsv_vvss + .param_str = "V256dV256dUiLUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_lvm_MMss + .param_str = "V512bV512bLUiLUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_lvm_mmss + .param_str = "V256bV256bLUiLUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_lvsd_svs + .param_str = "dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_lvsl_svs + .param_str = "LUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_lvss_svs + .param_str = "fV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_lzvm_sml + .param_str = "LUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_negm_MM + .param_str = "V512bV512b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_negm_mm + .param_str = "V256bV256b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_nndm_MMM + .param_str = "V512bV512bV512b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_nndm_mmm + .param_str = "V256bV256bV256b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_orm_MMM + .param_str = "V512bV512bV512b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_orm_mmm + .param_str = "V256bV256bV256b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pack_f32a + .param_str = "ULifC*" + .target_set = TargetSet.initOne(.ve) + +__builtin_ve_vl_pack_f32p + .param_str = "ULifC*fC*" + .target_set = TargetSet.initOne(.ve) + +__builtin_ve_vl_pcvm_sml + .param_str = "LUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pfchv_ssl + .param_str = "vLivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pfchvnc_ssl + .param_str = "vLivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvadds_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvadds_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvadds_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvadds_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvadds_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvadds_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvaddu_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvaddu_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvaddu_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvaddu_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvaddu_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvaddu_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvand_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvand_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvand_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvand_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvand_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvand_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrd_vsMvl + .param_str = "V256dLUiV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrd_vsl + .param_str = "V256dLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrd_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrv_vvMvl + .param_str = "V256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrv_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrv_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrvlo_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrvlo_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrvlo_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrvup_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrvup_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvbrvup_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmps_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmps_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmps_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmps_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmps_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmps_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmpu_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmpu_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmpu_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmpu_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmpu_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcmpu_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcvtsw_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcvtsw_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcvtws_vvMvl + .param_str = "V256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcvtws_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcvtws_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcvtwsrz_vvMvl + .param_str = "V256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcvtwsrz_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvcvtwsrz_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pveqv_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pveqv_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pveqv_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pveqv_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pveqv_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pveqv_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfadd_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfadd_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfadd_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfadd_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfadd_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfadd_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfcmp_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfcmp_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfcmp_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfcmp_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfcmp_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfcmp_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmad_vsvvMvl + .param_str = "V256dLUiV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmad_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmad_vsvvvl + .param_str = "V256dLUiV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmad_vvsvMvl + .param_str = "V256dV256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmad_vvsvl + .param_str = "V256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmad_vvsvvl + .param_str = "V256dV256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmad_vvvvMvl + .param_str = "V256dV256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmad_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmad_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmax_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmax_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmax_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmax_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmax_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmax_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmin_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmin_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmin_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmin_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmin_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmin_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkaf_Ml + .param_str = "V512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkat_Ml + .param_str = "V512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkseq_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkseq_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkseqnan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkseqnan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksge_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksge_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksgenan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksgenan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksgt_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksgt_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksgtnan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksgtnan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksle_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksle_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslenan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslenan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksloeq_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksloeq_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksloeqnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksloeqnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksloge_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksloge_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslogenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslogenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslogt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslogt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslogtnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslogtnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslole_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslole_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslolenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslolenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslolt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslolt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksloltnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksloltnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslonan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslonan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslone_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslone_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslonenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslonenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslonum_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslonum_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslt_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkslt_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksltnan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksltnan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksnan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksnan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksne_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksne_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksnenan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksnenan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksnum_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksnum_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupeq_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupeq_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupeqnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupeqnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupge_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupge_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupgenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupgenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupgt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupgt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupgtnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupgtnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksuple_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksuple_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksuplenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksuplenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksuplt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksuplt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupltnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupltnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupne_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupne_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupnenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupnenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupnum_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmksupnum_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkweq_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkweq_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkweqnan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkweqnan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwge_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwge_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwgenan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwgenan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwgt_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwgt_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwgtnan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwgtnan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwle_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwle_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlenan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlenan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwloeq_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwloeq_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwloeqnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwloeqnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwloge_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwloge_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlogenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlogenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlogt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlogt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlogtnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlogtnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlole_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlole_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlolenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlolenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlolt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlolt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwloltnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwloltnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlonan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlonan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlone_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlone_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlonenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlonenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlonum_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlonum_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlt_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwlt_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwltnan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwltnan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwnan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwnan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwne_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwne_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwnenan_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwnenan_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwnum_MvMl + .param_str = "V512bV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwnum_Mvl + .param_str = "V512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupeq_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupeq_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupeqnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupeqnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupge_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupge_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupgenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupgenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupgt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupgt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupgtnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupgtnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwuple_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwuple_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwuplenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwuplenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwuplt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwuplt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupltnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupltnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupne_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupne_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupnenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupnenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupnum_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmkwupnum_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmsb_vsvvMvl + .param_str = "V256dLUiV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmsb_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmsb_vsvvvl + .param_str = "V256dLUiV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmsb_vvsvMvl + .param_str = "V256dV256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmsb_vvsvl + .param_str = "V256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmsb_vvsvvl + .param_str = "V256dV256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmsb_vvvvMvl + .param_str = "V256dV256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmsb_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmsb_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmul_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmul_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmul_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmul_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmul_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfmul_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmad_vsvvMvl + .param_str = "V256dLUiV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmad_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmad_vsvvvl + .param_str = "V256dLUiV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmad_vvsvMvl + .param_str = "V256dV256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmad_vvsvl + .param_str = "V256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmad_vvsvvl + .param_str = "V256dV256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmad_vvvvMvl + .param_str = "V256dV256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmad_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmad_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmsb_vsvvMvl + .param_str = "V256dLUiV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmsb_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmsb_vsvvvl + .param_str = "V256dLUiV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmsb_vvsvMvl + .param_str = "V256dV256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmsb_vvsvl + .param_str = "V256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmsb_vvsvvl + .param_str = "V256dV256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmsb_vvvvMvl + .param_str = "V256dV256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmsb_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfnmsb_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfsub_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfsub_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfsub_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfsub_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfsub_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvfsub_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvldz_vvMvl + .param_str = "V256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvldz_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvldz_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvldzlo_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvldzlo_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvldzlo_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvldzup_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvldzup_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvldzup_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmaxs_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmaxs_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmaxs_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmaxs_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmaxs_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmaxs_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmins_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmins_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmins_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmins_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmins_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvmins_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvor_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvor_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvor_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvor_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvor_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvor_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvpcnt_vvMvl + .param_str = "V256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvpcnt_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvpcnt_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvpcntlo_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvpcntlo_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvpcntlo_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvpcntup_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvpcntup_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvpcntup_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvrcp_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvrcp_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvrsqrt_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvrsqrt_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvrsqrtnex_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvrsqrtnex_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvseq_vl + .param_str = "V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvseq_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvseqlo_vl + .param_str = "V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvseqlo_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsequp_vl + .param_str = "V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsequp_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsla_vvsMvl + .param_str = "V256dV256dLUiV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsla_vvsl + .param_str = "V256dV256dLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsla_vvsvl + .param_str = "V256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsla_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsla_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsla_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsll_vvsMvl + .param_str = "V256dV256dLUiV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsll_vvsl + .param_str = "V256dV256dLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsll_vvsvl + .param_str = "V256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsll_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsll_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsll_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsra_vvsMvl + .param_str = "V256dV256dLUiV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsra_vvsl + .param_str = "V256dV256dLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsra_vvsvl + .param_str = "V256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsra_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsra_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsra_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsrl_vvsMvl + .param_str = "V256dV256dLUiV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsrl_vvsl + .param_str = "V256dV256dLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsrl_vvsvl + .param_str = "V256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsrl_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsrl_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsrl_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubs_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubs_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubs_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubs_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubs_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubs_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubu_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubu_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubu_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubu_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubu_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvsubu_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvxor_vsvMvl + .param_str = "V256dLUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvxor_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvxor_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvxor_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvxor_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_pvxor_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_scr_sss + .param_str = "vLUiLUiLUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_svm_sMs + .param_str = "LUiV512bLUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_svm_sms + .param_str = "LUiV256bLUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_svob + .param_str = "v" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_tovm_sml + .param_str = "LUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_tscr_ssss + .param_str = "LUiLUiLUiLUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddsl_vsvl + .param_str = "V256dLiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddsl_vsvmvl + .param_str = "V256dLiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddsl_vsvvl + .param_str = "V256dLiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddsl_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddsl_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddsl_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswsx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswsx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswsx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswsx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswsx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswzx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswzx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswzx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswzx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddswzx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddul_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddul_vsvmvl + .param_str = "V256dLUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddul_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddul_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddul_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vaddul_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vadduw_vsvl + .param_str = "V256dUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vadduw_vsvmvl + .param_str = "V256dUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vadduw_vsvvl + .param_str = "V256dUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vadduw_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vadduw_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vadduw_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vand_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vand_vsvmvl + .param_str = "V256dLUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vand_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vand_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vand_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vand_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrdd_vsl + .param_str = "V256ddUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrdd_vsmvl + .param_str = "V256ddV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrdd_vsvl + .param_str = "V256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrdl_vsl + .param_str = "V256dLiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrdl_vsmvl + .param_str = "V256dLiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrdl_vsvl + .param_str = "V256dLiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrds_vsl + .param_str = "V256dfUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrds_vsmvl + .param_str = "V256dfV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrds_vsvl + .param_str = "V256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrdw_vsl + .param_str = "V256diUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrdw_vsmvl + .param_str = "V256diV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrdw_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrv_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrv_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vbrv_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpsl_vsvl + .param_str = "V256dLiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpsl_vsvmvl + .param_str = "V256dLiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpsl_vsvvl + .param_str = "V256dLiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpsl_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpsl_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpsl_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswsx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswsx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswsx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswsx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswsx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswzx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswzx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswzx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswzx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpswzx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpul_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpul_vsvmvl + .param_str = "V256dLUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpul_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpul_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpul_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpul_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpuw_vsvl + .param_str = "V256dUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpuw_vsvmvl + .param_str = "V256dUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpuw_vsvvl + .param_str = "V256dUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpuw_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpuw_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcmpuw_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcp_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtdl_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtdl_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtds_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtds_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtdw_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtdw_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtld_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtld_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtld_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtldrz_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtldrz_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtldrz_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtsd_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtsd_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtsw_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtsw_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdsx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdsx_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdsxrz_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdsxrz_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdsxrz_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdzx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdzx_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdzxrz_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdzxrz_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwdzxrz_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwssx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwssx_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwssx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwssxrz_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwssxrz_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwssxrz_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwszx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwszx_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwszx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwszxrz_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwszxrz_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vcvtwszxrz_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivsl_vsvl + .param_str = "V256dLiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivsl_vsvmvl + .param_str = "V256dLiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivsl_vsvvl + .param_str = "V256dLiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivsl_vvsl + .param_str = "V256dV256dLiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivsl_vvsmvl + .param_str = "V256dV256dLiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivsl_vvsvl + .param_str = "V256dV256dLiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivsl_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivsl_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivsl_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswsx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswsx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswsx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswsx_vvsl + .param_str = "V256dV256diUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswsx_vvsmvl + .param_str = "V256dV256diV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswsx_vvsvl + .param_str = "V256dV256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswsx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswsx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswzx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswzx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswzx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswzx_vvsl + .param_str = "V256dV256diUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswzx_vvsmvl + .param_str = "V256dV256diV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswzx_vvsvl + .param_str = "V256dV256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswzx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivswzx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivul_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivul_vsvmvl + .param_str = "V256dLUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivul_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivul_vvsl + .param_str = "V256dV256dLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivul_vvsmvl + .param_str = "V256dV256dLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivul_vvsvl + .param_str = "V256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivul_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivul_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivul_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivuw_vsvl + .param_str = "V256dUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivuw_vsvmvl + .param_str = "V256dUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivuw_vsvvl + .param_str = "V256dUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivuw_vvsl + .param_str = "V256dV256dUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivuw_vvsmvl + .param_str = "V256dV256dUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivuw_vvsvl + .param_str = "V256dV256dUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivuw_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivuw_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vdivuw_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_veqv_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_veqv_vsvmvl + .param_str = "V256dLUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_veqv_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_veqv_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_veqv_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_veqv_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vex_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfaddd_vsvl + .param_str = "V256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfaddd_vsvmvl + .param_str = "V256ddV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfaddd_vsvvl + .param_str = "V256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfaddd_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfaddd_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfaddd_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfadds_vsvl + .param_str = "V256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfadds_vsvmvl + .param_str = "V256dfV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfadds_vsvvl + .param_str = "V256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfadds_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfadds_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfadds_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmpd_vsvl + .param_str = "V256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmpd_vsvmvl + .param_str = "V256ddV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmpd_vsvvl + .param_str = "V256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmpd_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmpd_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmpd_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmps_vsvl + .param_str = "V256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmps_vsvmvl + .param_str = "V256dfV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmps_vsvvl + .param_str = "V256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmps_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmps_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfcmps_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivd_vsvl + .param_str = "V256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivd_vsvmvl + .param_str = "V256ddV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivd_vsvvl + .param_str = "V256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivd_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivd_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivd_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivs_vsvl + .param_str = "V256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivs_vsvmvl + .param_str = "V256dfV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivs_vsvvl + .param_str = "V256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivs_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivs_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfdivs_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmadd_vsvvl + .param_str = "V256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmadd_vsvvmvl + .param_str = "V256ddV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmadd_vsvvvl + .param_str = "V256ddV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmadd_vvsvl + .param_str = "V256dV256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmadd_vvsvmvl + .param_str = "V256dV256ddV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmadd_vvsvvl + .param_str = "V256dV256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmadd_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmadd_vvvvmvl + .param_str = "V256dV256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmadd_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmads_vsvvl + .param_str = "V256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmads_vsvvmvl + .param_str = "V256dfV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmads_vsvvvl + .param_str = "V256dfV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmads_vvsvl + .param_str = "V256dV256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmads_vvsvmvl + .param_str = "V256dV256dfV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmads_vvsvvl + .param_str = "V256dV256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmads_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmads_vvvvmvl + .param_str = "V256dV256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmads_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxd_vsvl + .param_str = "V256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxd_vsvmvl + .param_str = "V256ddV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxd_vsvvl + .param_str = "V256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxd_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxd_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxd_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxs_vsvl + .param_str = "V256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxs_vsvmvl + .param_str = "V256dfV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxs_vsvvl + .param_str = "V256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxs_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxs_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmaxs_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmind_vsvl + .param_str = "V256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmind_vsvmvl + .param_str = "V256ddV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmind_vsvvl + .param_str = "V256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmind_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmind_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmind_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmins_vsvl + .param_str = "V256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmins_vsvmvl + .param_str = "V256dfV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmins_vsvvl + .param_str = "V256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmins_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmins_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmins_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdeq_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdeq_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdeqnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdeqnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdge_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdge_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdgenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdgenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdgt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdgt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdgtnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdgtnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdle_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdle_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdlenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdlenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdlt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdlt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdltnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdltnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdne_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdne_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdnenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdnenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdnum_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkdnum_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklaf_ml + .param_str = "V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklat_ml + .param_str = "V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkleq_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkleq_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkleqnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkleqnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklge_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklge_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklgenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklgenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklgt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklgt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklgtnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklgtnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklle_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklle_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkllenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkllenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkllt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkllt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklltnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklltnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklne_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklne_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklnenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklnenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklnum_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmklnum_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkseq_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkseq_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkseqnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkseqnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksge_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksge_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksgenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksgenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksgt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksgt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksgtnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksgtnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksle_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksle_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkslenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkslenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkslt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkslt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksltnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksltnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksne_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksne_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksnenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksnenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksnum_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmksnum_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkweq_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkweq_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkweqnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkweqnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwge_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwge_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwgenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwgenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwgt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwgt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwgtnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwgtnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwle_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwle_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwlenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwlenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwlt_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwlt_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwltnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwltnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwnan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwnan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwne_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwne_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwnenan_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwnenan_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwnum_mvl + .param_str = "V256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmkwnum_mvml + .param_str = "V256bV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbd_vsvvl + .param_str = "V256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbd_vsvvmvl + .param_str = "V256ddV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbd_vsvvvl + .param_str = "V256ddV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbd_vvsvl + .param_str = "V256dV256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbd_vvsvmvl + .param_str = "V256dV256ddV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbd_vvsvvl + .param_str = "V256dV256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbd_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbd_vvvvmvl + .param_str = "V256dV256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbd_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbs_vsvvl + .param_str = "V256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbs_vsvvmvl + .param_str = "V256dfV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbs_vsvvvl + .param_str = "V256dfV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbs_vvsvl + .param_str = "V256dV256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbs_vvsvmvl + .param_str = "V256dV256dfV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbs_vvsvvl + .param_str = "V256dV256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbs_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbs_vvvvmvl + .param_str = "V256dV256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmsbs_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuld_vsvl + .param_str = "V256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuld_vsvmvl + .param_str = "V256ddV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuld_vsvvl + .param_str = "V256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuld_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuld_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuld_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuls_vsvl + .param_str = "V256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuls_vsvmvl + .param_str = "V256dfV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuls_vsvvl + .param_str = "V256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuls_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuls_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfmuls_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmadd_vsvvl + .param_str = "V256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmadd_vsvvmvl + .param_str = "V256ddV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmadd_vsvvvl + .param_str = "V256ddV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmadd_vvsvl + .param_str = "V256dV256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmadd_vvsvmvl + .param_str = "V256dV256ddV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmadd_vvsvvl + .param_str = "V256dV256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmadd_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmadd_vvvvmvl + .param_str = "V256dV256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmadd_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmads_vsvvl + .param_str = "V256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmads_vsvvmvl + .param_str = "V256dfV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmads_vsvvvl + .param_str = "V256dfV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmads_vvsvl + .param_str = "V256dV256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmads_vvsvmvl + .param_str = "V256dV256dfV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmads_vvsvvl + .param_str = "V256dV256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmads_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmads_vvvvmvl + .param_str = "V256dV256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmads_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbd_vsvvl + .param_str = "V256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbd_vsvvmvl + .param_str = "V256ddV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbd_vsvvvl + .param_str = "V256ddV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbd_vvsvl + .param_str = "V256dV256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbd_vvsvmvl + .param_str = "V256dV256ddV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbd_vvsvvl + .param_str = "V256dV256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbd_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbd_vvvvmvl + .param_str = "V256dV256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbd_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbs_vsvvl + .param_str = "V256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbs_vsvvmvl + .param_str = "V256dfV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbs_vsvvvl + .param_str = "V256dfV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbs_vvsvl + .param_str = "V256dV256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbs_vvsvmvl + .param_str = "V256dV256dfV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbs_vvsvvl + .param_str = "V256dV256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbs_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbs_vvvvmvl + .param_str = "V256dV256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfnmsbs_vvvvvl + .param_str = "V256dV256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmaxdfst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmaxdfst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmaxdlst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmaxdlst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmaxsfst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmaxsfst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmaxslst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmaxslst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmindfst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmindfst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmindlst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrmindlst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrminsfst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrminsfst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrminslst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfrminslst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsqrtd_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsqrtd_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsqrts_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsqrts_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubd_vsvl + .param_str = "V256ddV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubd_vsvmvl + .param_str = "V256ddV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubd_vsvvl + .param_str = "V256ddV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubd_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubd_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubd_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubs_vsvl + .param_str = "V256dfV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubs_vsvmvl + .param_str = "V256dfV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubs_vsvvl + .param_str = "V256dfV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubs_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubs_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsubs_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsumd_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsumd_vvml + .param_str = "V256dV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsums_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vfsums_vvml + .param_str = "V256dV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgt_vvssl + .param_str = "V256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgt_vvssml + .param_str = "V256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgt_vvssmvl + .param_str = "V256dV256dLUiLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgt_vvssvl + .param_str = "V256dV256dLUiLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlsx_vvssl + .param_str = "V256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlsx_vvssml + .param_str = "V256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlsx_vvssmvl + .param_str = "V256dV256dLUiLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlsx_vvssvl + .param_str = "V256dV256dLUiLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlsxnc_vvssl + .param_str = "V256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlsxnc_vvssml + .param_str = "V256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlsxnc_vvssmvl + .param_str = "V256dV256dLUiLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlsxnc_vvssvl + .param_str = "V256dV256dLUiLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlzx_vvssl + .param_str = "V256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlzx_vvssml + .param_str = "V256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlzx_vvssmvl + .param_str = "V256dV256dLUiLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlzx_vvssvl + .param_str = "V256dV256dLUiLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlzxnc_vvssl + .param_str = "V256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlzxnc_vvssml + .param_str = "V256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlzxnc_vvssmvl + .param_str = "V256dV256dLUiLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtlzxnc_vvssvl + .param_str = "V256dV256dLUiLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtnc_vvssl + .param_str = "V256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtnc_vvssml + .param_str = "V256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtnc_vvssmvl + .param_str = "V256dV256dLUiLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtnc_vvssvl + .param_str = "V256dV256dLUiLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtu_vvssl + .param_str = "V256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtu_vvssml + .param_str = "V256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtu_vvssmvl + .param_str = "V256dV256dLUiLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtu_vvssvl + .param_str = "V256dV256dLUiLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtunc_vvssl + .param_str = "V256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtunc_vvssml + .param_str = "V256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtunc_vvssmvl + .param_str = "V256dV256dLUiLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vgtunc_vvssvl + .param_str = "V256dV256dLUiLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vld2d_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vld2d_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vld2dnc_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vld2dnc_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vld_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vld_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldl2dsx_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldl2dsx_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldl2dsxnc_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldl2dsxnc_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldl2dzx_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldl2dzx_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldl2dzxnc_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldl2dzxnc_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldlsx_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldlsx_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldlsxnc_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldlsxnc_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldlzx_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldlzx_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldlzxnc_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldlzxnc_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldnc_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldnc_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldu2d_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldu2d_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldu2dnc_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldu2dnc_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldu_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldu_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldunc_vssl + .param_str = "V256dLUivC*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldunc_vssvl + .param_str = "V256dLUivC*V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldz_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldz_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vldz_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxsl_vsvl + .param_str = "V256dLiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxsl_vsvmvl + .param_str = "V256dLiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxsl_vsvvl + .param_str = "V256dLiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxsl_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxsl_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxsl_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswsx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswsx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswsx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswsx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswsx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswzx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswzx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswzx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswzx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmaxswzx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminsl_vsvl + .param_str = "V256dLiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminsl_vsvmvl + .param_str = "V256dLiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminsl_vsvvl + .param_str = "V256dLiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminsl_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminsl_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminsl_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswsx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswsx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswsx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswsx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswsx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswzx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswzx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswzx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswzx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vminswzx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmrg_vsvml + .param_str = "V256dLUiV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmrg_vsvmvl + .param_str = "V256dLUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmrg_vvvml + .param_str = "V256dV256dV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmrg_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmrgw_vsvMl + .param_str = "V256dUiV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmrgw_vsvMvl + .param_str = "V256dUiV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmrgw_vvvMl + .param_str = "V256dV256dV256dV512bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmrgw_vvvMvl + .param_str = "V256dV256dV256dV512bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulsl_vsvl + .param_str = "V256dLiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulsl_vsvmvl + .param_str = "V256dLiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulsl_vsvvl + .param_str = "V256dLiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulsl_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulsl_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulsl_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulslw_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulslw_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulslw_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulslw_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswsx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswsx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswsx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswsx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswsx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswzx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswzx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswzx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswzx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulswzx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulul_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulul_vsvmvl + .param_str = "V256dLUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulul_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulul_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulul_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmulul_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmuluw_vsvl + .param_str = "V256dUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmuluw_vsvmvl + .param_str = "V256dUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmuluw_vsvvl + .param_str = "V256dUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmuluw_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmuluw_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmuluw_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmv_vsvl + .param_str = "V256dUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmv_vsvmvl + .param_str = "V256dUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vmv_vsvvl + .param_str = "V256dUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vor_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vor_vsvmvl + .param_str = "V256dLUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vor_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vor_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vor_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vor_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vpcnt_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vpcnt_vvmvl + .param_str = "V256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vpcnt_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrand_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrand_vvml + .param_str = "V256dV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrcpd_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrcpd_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrcps_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrcps_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxslfst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxslfst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxsllst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxsllst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxswfstsx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxswfstsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxswfstzx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxswfstzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxswlstsx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxswlstsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxswlstzx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrmaxswlstzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminslfst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminslfst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminsllst_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminsllst_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminswfstsx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminswfstsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminswfstzx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminswfstzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminswlstsx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminswlstsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminswlstzx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrminswlstzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vror_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vror_vvml + .param_str = "V256dV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrsqrtd_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrsqrtd_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrsqrtdnex_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrsqrtdnex_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrsqrts_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrsqrts_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrsqrtsnex_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrsqrtsnex_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrxor_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vrxor_vvml + .param_str = "V256dV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsc_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsc_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscl_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscl_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsclnc_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsclnc_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsclncot_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsclncot_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsclot_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsclot_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscnc_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscnc_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscncot_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscncot_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscot_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscot_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscu_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscu_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscunc_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscunc_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscuncot_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscuncot_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscuot_vvssl + .param_str = "vV256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vscuot_vvssml + .param_str = "vV256dV256dLUiLUiV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vseq_vl + .param_str = "V256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vseq_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsfa_vvssl + .param_str = "V256dV256dLUiLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsfa_vvssmvl + .param_str = "V256dV256dLUiLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsfa_vvssvl + .param_str = "V256dV256dLUiLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vshf_vvvsl + .param_str = "V256dV256dV256dLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vshf_vvvsvl + .param_str = "V256dV256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslal_vvsl + .param_str = "V256dV256dLiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslal_vvsmvl + .param_str = "V256dV256dLiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslal_vvsvl + .param_str = "V256dV256dLiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslal_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslal_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslal_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawsx_vvsl + .param_str = "V256dV256diUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawsx_vvsmvl + .param_str = "V256dV256diV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawsx_vvsvl + .param_str = "V256dV256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawsx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawsx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawzx_vvsl + .param_str = "V256dV256diUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawzx_vvsmvl + .param_str = "V256dV256diV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawzx_vvsvl + .param_str = "V256dV256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawzx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vslawzx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsll_vvsl + .param_str = "V256dV256dLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsll_vvsmvl + .param_str = "V256dV256dLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsll_vvsvl + .param_str = "V256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsll_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsll_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsll_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsral_vvsl + .param_str = "V256dV256dLiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsral_vvsmvl + .param_str = "V256dV256dLiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsral_vvsvl + .param_str = "V256dV256dLiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsral_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsral_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsral_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawsx_vvsl + .param_str = "V256dV256diUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawsx_vvsmvl + .param_str = "V256dV256diV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawsx_vvsvl + .param_str = "V256dV256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawsx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawsx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawzx_vvsl + .param_str = "V256dV256diUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawzx_vvsmvl + .param_str = "V256dV256diV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawzx_vvsvl + .param_str = "V256dV256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawzx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrawzx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrl_vvsl + .param_str = "V256dV256dLUiUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrl_vvsmvl + .param_str = "V256dV256dLUiV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrl_vvsvl + .param_str = "V256dV256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrl_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrl_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsrl_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vst2d_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vst2d_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vst2dnc_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vst2dnc_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vst2dncot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vst2dncot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vst2dot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vst2dot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vst_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vst_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstl2d_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstl2d_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstl2dnc_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstl2dnc_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstl2dncot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstl2dncot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstl2dot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstl2dot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstl_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstl_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstlnc_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstlnc_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstlncot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstlncot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstlot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstlot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstnc_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstnc_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstncot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstncot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstu2d_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstu2d_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstu2dnc_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstu2dnc_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstu2dncot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstu2dncot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstu2dot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstu2dot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstu_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstu_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstunc_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstunc_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstuncot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstuncot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstuot_vssl + .param_str = "vV256dLUiv*Ui" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vstuot_vssml + .param_str = "vV256dLUiv*V256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubsl_vsvl + .param_str = "V256dLiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubsl_vsvmvl + .param_str = "V256dLiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubsl_vsvvl + .param_str = "V256dLiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubsl_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubsl_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubsl_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswsx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswsx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswsx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswsx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswsx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswsx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswzx_vsvl + .param_str = "V256diV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswzx_vsvmvl + .param_str = "V256diV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswzx_vsvvl + .param_str = "V256diV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswzx_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswzx_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubswzx_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubul_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubul_vsvmvl + .param_str = "V256dLUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubul_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubul_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubul_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubul_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubuw_vsvl + .param_str = "V256dUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubuw_vsvmvl + .param_str = "V256dUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubuw_vsvvl + .param_str = "V256dUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubuw_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubuw_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsubuw_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsuml_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsuml_vvml + .param_str = "V256dV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsumwsx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsumwsx_vvml + .param_str = "V256dV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsumwzx_vvl + .param_str = "V256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vsumwzx_vvml + .param_str = "V256dV256dV256bUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vxor_vsvl + .param_str = "V256dLUiV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vxor_vsvmvl + .param_str = "V256dLUiV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vxor_vsvvl + .param_str = "V256dLUiV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vxor_vvvl + .param_str = "V256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vxor_vvvmvl + .param_str = "V256dV256dV256dV256bV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_vxor_vvvvl + .param_str = "V256dV256dV256dV256dUi" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_xorm_MMM + .param_str = "V512bV512bV512b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_ve_vl_xorm_mmm + .param_str = "V256bV256bV256b" + .target_set = TargetSet.initOne(.vevl_gen) + +__builtin_vfprintf + .param_str = "iP*RcC*Ra" + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .vprintf, .format_string_position = 1 } + +__builtin_vfscanf + .param_str = "iP*RcC*Ra" + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .vscanf, .format_string_position = 1 } + +__builtin_vprintf + .param_str = "icC*Ra" + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .vprintf } + +__builtin_vscanf + .param_str = "icC*Ra" + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .vscanf } + +__builtin_vsnprintf + .param_str = "ic*RzcC*Ra" + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .vprintf, .format_string_position = 2 } + +__builtin_vsprintf + .param_str = "ic*RcC*Ra" + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .vprintf, .format_string_position = 1 } + +__builtin_vsscanf + .param_str = "icC*RcC*Ra" + .attributes = .{ .lib_function_with_builtin_prefix = true, .format_kind = .vscanf, .format_string_position = 1 } + +__builtin_wasm_max_f32 + .param_str = "fff" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wasm_max_f64 + .param_str = "ddd" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wasm_memory_grow + .param_str = "zIiz" + .target_set = TargetSet.initOne(.webassembly) + +__builtin_wasm_memory_size + .param_str = "zIi" + .target_set = TargetSet.initOne(.webassembly) + +__builtin_wasm_min_f32 + .param_str = "fff" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wasm_min_f64 + .param_str = "ddd" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wasm_trunc_s_i32_f32 + .param_str = "if" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wasm_trunc_s_i32_f64 + .param_str = "id" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wasm_trunc_s_i64_f32 + .param_str = "LLif" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wasm_trunc_s_i64_f64 + .param_str = "LLid" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wasm_trunc_u_i32_f32 + .param_str = "if" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wasm_trunc_u_i32_f64 + .param_str = "id" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wasm_trunc_u_i64_f32 + .param_str = "LLif" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wasm_trunc_u_i64_f64 + .param_str = "LLid" + .target_set = TargetSet.initOne(.webassembly) + .attributes = .{ .@"const" = true } + +__builtin_wcschr + .param_str = "w*wC*w" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_wcscmp + .param_str = "iwC*wC*" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_wcslen + .param_str = "zwC*" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_wcsncmp + .param_str = "iwC*wC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_wmemchr + .param_str = "w*wC*wz" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_wmemcmp + .param_str = "iwC*wC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_wmemcpy + .param_str = "w*w*wC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__builtin_wmemmove + .param_str = "w*w*wC*z" + .attributes = .{ .lib_function_with_builtin_prefix = true, .const_evaluable = true } + +__c11_atomic_is_lock_free + .param_str = "bz" + .attributes = .{ .const_evaluable = true } + +__c11_atomic_signal_fence + .param_str = "vi" + +__c11_atomic_thread_fence + .param_str = "vi" + +__clear_cache + .param_str = "vv*v*" + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__cospi + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__cospif + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__debugbreak + .param_str = "v" + .language = .all_ms_languages + +__dmb + .param_str = "vUi" + .language = .all_ms_languages + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__dsb + .param_str = "vUi" + .language = .all_ms_languages + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__emit + .param_str = "vIUiC" + .language = .all_ms_languages + .target_set = TargetSet.initOne(.arm) + +__exception_code + .param_str = "UNi" + .language = .all_ms_languages + +__exception_info + .param_str = "v*" + .language = .all_ms_languages + +__exp10 + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__exp10f + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__fastfail + .param_str = "vUi" + .language = .all_ms_languages + .attributes = .{ .noreturn = true } + +__finite + .param_str = "id" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +__finitef + .param_str = "if" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +__finitel + .param_str = "iLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +__isb + .param_str = "vUi" + .language = .all_ms_languages + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + .attributes = .{ .@"const" = true } + +__iso_volatile_load16 + .param_str = "ssCD*" + .language = .all_ms_languages + +__iso_volatile_load32 + .param_str = "iiCD*" + .language = .all_ms_languages + +__iso_volatile_load64 + .param_str = "LLiLLiCD*" + .language = .all_ms_languages + +__iso_volatile_load8 + .param_str = "ccCD*" + .language = .all_ms_languages + +__iso_volatile_store16 + .param_str = "vsD*s" + .language = .all_ms_languages + +__iso_volatile_store32 + .param_str = "viD*i" + .language = .all_ms_languages + +__iso_volatile_store64 + .param_str = "vLLiD*LLi" + .language = .all_ms_languages + +__iso_volatile_store8 + .param_str = "vcD*c" + .language = .all_ms_languages + +__ldrexd + .param_str = "WiWiCD*" + .language = .all_ms_languages + .target_set = TargetSet.initOne(.arm) + +__lzcnt + .param_str = "UiUi" + .language = .all_ms_languages + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__lzcnt16 + .param_str = "UsUs" + .language = .all_ms_languages + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__lzcnt64 + .param_str = "UWiUWi" + .language = .all_ms_languages + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__noop + .param_str = "i." + .language = .all_ms_languages + +__nvvm_add_rm_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_add_rm_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_add_rm_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_add_rn_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_add_rn_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_add_rn_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_add_rp_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_add_rp_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_add_rp_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_add_rz_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_add_rz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_add_rz_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_add_gen_f + .param_str = "ffD*f" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_add_gen_i + .param_str = "iiD*i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_add_gen_l + .param_str = "LiLiD*Li" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_add_gen_ll + .param_str = "LLiLLiD*LLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_and_gen_i + .param_str = "iiD*i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_and_gen_l + .param_str = "LiLiD*Li" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_and_gen_ll + .param_str = "LLiLLiD*LLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_cas_gen_i + .param_str = "iiD*ii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_cas_gen_l + .param_str = "LiLiD*LiLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_cas_gen_ll + .param_str = "LLiLLiD*LLiLLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_dec_gen_ui + .param_str = "UiUiD*Ui" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_inc_gen_ui + .param_str = "UiUiD*Ui" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_max_gen_i + .param_str = "iiD*i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_max_gen_l + .param_str = "LiLiD*Li" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_max_gen_ll + .param_str = "LLiLLiD*LLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_max_gen_ui + .param_str = "UiUiD*Ui" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_max_gen_ul + .param_str = "ULiULiD*ULi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_max_gen_ull + .param_str = "ULLiULLiD*ULLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_min_gen_i + .param_str = "iiD*i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_min_gen_l + .param_str = "LiLiD*Li" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_min_gen_ll + .param_str = "LLiLLiD*LLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_min_gen_ui + .param_str = "UiUiD*Ui" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_min_gen_ul + .param_str = "ULiULiD*ULi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_min_gen_ull + .param_str = "ULLiULLiD*ULLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_or_gen_i + .param_str = "iiD*i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_or_gen_l + .param_str = "LiLiD*Li" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_or_gen_ll + .param_str = "LLiLLiD*LLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_sub_gen_i + .param_str = "iiD*i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_sub_gen_l + .param_str = "LiLiD*Li" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_sub_gen_ll + .param_str = "LLiLLiD*LLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_xchg_gen_i + .param_str = "iiD*i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_xchg_gen_l + .param_str = "LiLiD*Li" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_xchg_gen_ll + .param_str = "LLiLLiD*LLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_xor_gen_i + .param_str = "iiD*i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_xor_gen_l + .param_str = "LiLiD*Li" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_atom_xor_gen_ll + .param_str = "LLiLLiD*LLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_bar0_and + .param_str = "ii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_bar0_or + .param_str = "ii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_bar0_popc + .param_str = "ii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_bar_sync + .param_str = "vi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_bitcast_d2ll + .param_str = "LLid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_bitcast_f2i + .param_str = "if" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_bitcast_i2f + .param_str = "fi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_bitcast_ll2d + .param_str = "dLLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ceil_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ceil_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ceil_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_compiler_error + .param_str = "vcC*4" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_compiler_warn + .param_str = "vcC*4" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_cos_approx_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_cos_approx_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2f_rm + .param_str = "fd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2f_rm_ftz + .param_str = "fd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2f_rn + .param_str = "fd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2f_rn_ftz + .param_str = "fd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2f_rp + .param_str = "fd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2f_rp_ftz + .param_str = "fd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2f_rz + .param_str = "fd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2f_rz_ftz + .param_str = "fd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2i_hi + .param_str = "id" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2i_lo + .param_str = "id" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2i_rm + .param_str = "id" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2i_rn + .param_str = "id" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2i_rp + .param_str = "id" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2i_rz + .param_str = "id" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ll_rm + .param_str = "LLid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ll_rn + .param_str = "LLid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ll_rp + .param_str = "LLid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ll_rz + .param_str = "LLid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ui_rm + .param_str = "Uid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ui_rn + .param_str = "Uid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ui_rp + .param_str = "Uid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ui_rz + .param_str = "Uid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ull_rm + .param_str = "ULLid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ull_rn + .param_str = "ULLid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ull_rp + .param_str = "ULLid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_d2ull_rz + .param_str = "ULLid" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_approx_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_approx_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rm_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rm_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rm_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rn_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rn_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rn_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rp_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rp_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rp_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rz_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_div_rz_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ex2_approx_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ex2_approx_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ex2_approx_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2h_rn + .param_str = "Usf" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2h_rn_ftz + .param_str = "Usf" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2i_rm + .param_str = "if" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2i_rm_ftz + .param_str = "if" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2i_rn + .param_str = "if" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2i_rn_ftz + .param_str = "if" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2i_rp + .param_str = "if" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2i_rp_ftz + .param_str = "if" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2i_rz + .param_str = "if" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2i_rz_ftz + .param_str = "if" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ll_rm + .param_str = "LLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ll_rm_ftz + .param_str = "LLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ll_rn + .param_str = "LLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ll_rn_ftz + .param_str = "LLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ll_rp + .param_str = "LLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ll_rp_ftz + .param_str = "LLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ll_rz + .param_str = "LLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ll_rz_ftz + .param_str = "LLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ui_rm + .param_str = "Uif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ui_rm_ftz + .param_str = "Uif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ui_rn + .param_str = "Uif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ui_rn_ftz + .param_str = "Uif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ui_rp + .param_str = "Uif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ui_rp_ftz + .param_str = "Uif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ui_rz + .param_str = "Uif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ui_rz_ftz + .param_str = "Uif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ull_rm + .param_str = "ULLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ull_rm_ftz + .param_str = "ULLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ull_rn + .param_str = "ULLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ull_rn_ftz + .param_str = "ULLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ull_rp + .param_str = "ULLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ull_rp_ftz + .param_str = "ULLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ull_rz + .param_str = "ULLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_f2ull_rz_ftz + .param_str = "ULLif" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fabs_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fabs_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fabs_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_floor_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_floor_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_floor_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rm_d + .param_str = "dddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rm_f + .param_str = "ffff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rm_ftz_f + .param_str = "ffff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rn_d + .param_str = "dddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rn_f + .param_str = "ffff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rn_ftz_f + .param_str = "ffff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rp_d + .param_str = "dddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rp_f + .param_str = "ffff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rp_ftz_f + .param_str = "ffff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rz_d + .param_str = "dddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rz_f + .param_str = "ffff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fma_rz_ftz_f + .param_str = "ffff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fmax_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fmax_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fmax_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fmin_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fmin_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_fmin_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_i2d_rm + .param_str = "di" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_i2d_rn + .param_str = "di" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_i2d_rp + .param_str = "di" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_i2d_rz + .param_str = "di" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_i2f_rm + .param_str = "fi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_i2f_rn + .param_str = "fi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_i2f_rp + .param_str = "fi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_i2f_rz + .param_str = "fi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_isspacep_const + .param_str = "bvC*" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_isspacep_global + .param_str = "bvC*" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_isspacep_local + .param_str = "bvC*" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_isspacep_shared + .param_str = "bvC*" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_ldg_c + .param_str = "ccC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_c2 + .param_str = "E2cE2cC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_c4 + .param_str = "E4cE4cC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_d + .param_str = "ddC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_d2 + .param_str = "E2dE2dC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_f + .param_str = "ffC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_f2 + .param_str = "E2fE2fC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_f4 + .param_str = "E4fE4fC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_h + .param_str = "hhC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_h2 + .param_str = "E2hE2hC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_i + .param_str = "iiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_i2 + .param_str = "E2iE2iC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_i4 + .param_str = "E4iE4iC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_l + .param_str = "LiLiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_l2 + .param_str = "E2LiE2LiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_ll + .param_str = "LLiLLiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_ll2 + .param_str = "E2LLiE2LLiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_s + .param_str = "ssC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_s2 + .param_str = "E2sE2sC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_s4 + .param_str = "E4sE4sC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_sc + .param_str = "ScScC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_sc2 + .param_str = "E2ScE2ScC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_sc4 + .param_str = "E4ScE4ScC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_uc + .param_str = "UcUcC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_uc2 + .param_str = "E2UcE2UcC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_uc4 + .param_str = "E4UcE4UcC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_ui + .param_str = "UiUiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_ui2 + .param_str = "E2UiE2UiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_ui4 + .param_str = "E4UiE4UiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_ul + .param_str = "ULiULiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_ul2 + .param_str = "E2ULiE2ULiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_ull + .param_str = "ULLiULLiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_ull2 + .param_str = "E2ULLiE2ULLiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_us + .param_str = "UsUsC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_us2 + .param_str = "E2UsE2UsC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldg_us4 + .param_str = "E4UsE4UsC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_c + .param_str = "ccC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_c2 + .param_str = "E2cE2cC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_c4 + .param_str = "E4cE4cC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_d + .param_str = "ddC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_d2 + .param_str = "E2dE2dC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_f + .param_str = "ffC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_f2 + .param_str = "E2fE2fC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_f4 + .param_str = "E4fE4fC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_h + .param_str = "hhC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_h2 + .param_str = "E2hE2hC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_i + .param_str = "iiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_i2 + .param_str = "E2iE2iC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_i4 + .param_str = "E4iE4iC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_l + .param_str = "LiLiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_l2 + .param_str = "E2LiE2LiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_ll + .param_str = "LLiLLiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_ll2 + .param_str = "E2LLiE2LLiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_s + .param_str = "ssC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_s2 + .param_str = "E2sE2sC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_s4 + .param_str = "E4sE4sC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_sc + .param_str = "ScScC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_sc2 + .param_str = "E2ScE2ScC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_sc4 + .param_str = "E4ScE4ScC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_uc + .param_str = "UcUcC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_uc2 + .param_str = "E2UcE2UcC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_uc4 + .param_str = "E4UcE4UcC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_ui + .param_str = "UiUiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_ui2 + .param_str = "E2UiE2UiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_ui4 + .param_str = "E4UiE4UiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_ul + .param_str = "ULiULiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_ul2 + .param_str = "E2ULiE2ULiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_ull + .param_str = "ULLiULLiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_ull2 + .param_str = "E2ULLiE2ULLiC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_us + .param_str = "UsUsC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_us2 + .param_str = "E2UsE2UsC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ldu_us4 + .param_str = "E4UsE4UsC*" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_lg2_approx_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_lg2_approx_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_lg2_approx_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ll2d_rm + .param_str = "dLLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ll2d_rn + .param_str = "dLLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ll2d_rp + .param_str = "dLLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ll2d_rz + .param_str = "dLLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ll2f_rm + .param_str = "fLLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ll2f_rn + .param_str = "fLLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ll2f_rp + .param_str = "fLLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ll2f_rz + .param_str = "fLLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_lohi_i2d + .param_str = "dii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_membar_cta + .param_str = "v" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_membar_gl + .param_str = "v" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_membar_sys + .param_str = "v" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_memcpy + .param_str = "vUc*Uc*zi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_memset + .param_str = "vUc*Uczi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul24_i + .param_str = "iii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul24_ui + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rm_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rm_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rm_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rn_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rn_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rn_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rp_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rp_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rp_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rz_d + .param_str = "ddd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mul_rz_ftz_f + .param_str = "fff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mulhi_i + .param_str = "iii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mulhi_ll + .param_str = "LLiLLiLLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mulhi_ui + .param_str = "UiUiUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_mulhi_ull + .param_str = "ULLiULLiULLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_prmt + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_approx_ftz_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_approx_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rm_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rm_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rm_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rn_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rn_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rn_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rp_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rp_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rp_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rz_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rcp_rz_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_read_ptx_sreg_clock + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_read_ptx_sreg_clock64 + .param_str = "LLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_read_ptx_sreg_ctaid_w + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_ctaid_x + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_ctaid_y + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_ctaid_z + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_gridid + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_laneid + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_lanemask_eq + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_lanemask_ge + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_lanemask_gt + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_lanemask_le + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_lanemask_lt + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_nctaid_w + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_nctaid_x + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_nctaid_y + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_nctaid_z + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_nsmid + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_ntid_w + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_ntid_x + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_ntid_y + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_ntid_z + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_nwarpid + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_pm0 + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_read_ptx_sreg_pm1 + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_read_ptx_sreg_pm2 + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_read_ptx_sreg_pm3 + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_read_ptx_sreg_smid + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_tid_w + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_tid_x + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_tid_y + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_tid_z + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_read_ptx_sreg_warpid + .param_str = "i" + .target_set = TargetSet.initOne(.nvptx) + .attributes = .{ .@"const" = true } + +__nvvm_round_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_round_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_round_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rsqrt_approx_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rsqrt_approx_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_rsqrt_approx_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sad_i + .param_str = "iiii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sad_ui + .param_str = "UiUiUiUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_saturate_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_saturate_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_saturate_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_shfl_bfly_f32 + .param_str = "ffii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_shfl_bfly_i32 + .param_str = "iiii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_shfl_down_f32 + .param_str = "ffii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_shfl_down_i32 + .param_str = "iiii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_shfl_idx_f32 + .param_str = "ffii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_shfl_idx_i32 + .param_str = "iiii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_shfl_up_f32 + .param_str = "ffii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_shfl_up_i32 + .param_str = "iiii" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sin_approx_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sin_approx_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_approx_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_approx_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rm_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rm_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rm_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rn_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rn_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rn_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rp_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rp_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rp_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rz_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_sqrt_rz_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_trunc_d + .param_str = "dd" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_trunc_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_trunc_ftz_f + .param_str = "ff" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ui2d_rm + .param_str = "dUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ui2d_rn + .param_str = "dUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ui2d_rp + .param_str = "dUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ui2d_rz + .param_str = "dUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ui2f_rm + .param_str = "fUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ui2f_rn + .param_str = "fUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ui2f_rp + .param_str = "fUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ui2f_rz + .param_str = "fUi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ull2d_rm + .param_str = "dULLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ull2d_rn + .param_str = "dULLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ull2d_rp + .param_str = "dULLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ull2d_rz + .param_str = "dULLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ull2f_rm + .param_str = "fULLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ull2f_rn + .param_str = "fULLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ull2f_rp + .param_str = "fULLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_ull2f_rz + .param_str = "fULLi" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_vote_all + .param_str = "bb" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_vote_any + .param_str = "bb" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_vote_ballot + .param_str = "Uib" + .target_set = TargetSet.initOne(.nvptx) + +__nvvm_vote_uni + .param_str = "bb" + .target_set = TargetSet.initOne(.nvptx) + +__popcnt + .param_str = "UiUi" + .language = .all_ms_languages + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__popcnt16 + .param_str = "UsUs" + .language = .all_ms_languages + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__popcnt64 + .param_str = "UWiUWi" + .language = .all_ms_languages + .attributes = .{ .@"const" = true, .const_evaluable = true } + +__rdtsc + .param_str = "UOi" + .target_set = TargetSet.initOne(.x86) + +__sev + .param_str = "v" + .language = .all_ms_languages + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__sevl + .param_str = "v" + .language = .all_ms_languages + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__sigsetjmp + .param_str = "iSJi" + .header = .setjmp + .attributes = .{ .allow_type_mismatch = true, .lib_function_without_prefix = true, .returns_twice = true } + +__sinpi + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__sinpif + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__sync_add_and_fetch + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_add_and_fetch_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_add_and_fetch_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_add_and_fetch_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_add_and_fetch_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_add_and_fetch_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_and_and_fetch + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_and_and_fetch_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_and_and_fetch_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_and_and_fetch_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_and_and_fetch_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_and_and_fetch_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_bool_compare_and_swap + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_bool_compare_and_swap_1 + .param_str = "bcD*cc." + .attributes = .{ .custom_typecheck = true } + +__sync_bool_compare_and_swap_16 + .param_str = "bLLLiD*LLLiLLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_bool_compare_and_swap_2 + .param_str = "bsD*ss." + .attributes = .{ .custom_typecheck = true } + +__sync_bool_compare_and_swap_4 + .param_str = "biD*ii." + .attributes = .{ .custom_typecheck = true } + +__sync_bool_compare_and_swap_8 + .param_str = "bLLiD*LLiLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_add + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_add_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_add_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_add_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_add_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_add_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_and + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_and_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_and_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_and_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_and_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_and_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_max + .param_str = "iiD*i" + +__sync_fetch_and_min + .param_str = "iiD*i" + +__sync_fetch_and_nand + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_nand_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_nand_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_nand_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_nand_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_nand_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_or + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_or_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_or_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_or_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_or_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_or_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_sub + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_sub_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_sub_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_sub_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_sub_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_sub_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_umax + .param_str = "UiUiD*Ui" + +__sync_fetch_and_umin + .param_str = "UiUiD*Ui" + +__sync_fetch_and_xor + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_xor_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_xor_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_xor_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_xor_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_fetch_and_xor_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_release + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_release_1 + .param_str = "vcD*." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_release_16 + .param_str = "vLLLiD*." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_release_2 + .param_str = "vsD*." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_release_4 + .param_str = "viD*." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_release_8 + .param_str = "vLLiD*." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_test_and_set + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_test_and_set_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_test_and_set_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_test_and_set_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_test_and_set_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_lock_test_and_set_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_nand_and_fetch + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_nand_and_fetch_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_nand_and_fetch_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_nand_and_fetch_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_nand_and_fetch_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_nand_and_fetch_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_or_and_fetch + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_or_and_fetch_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_or_and_fetch_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_or_and_fetch_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_or_and_fetch_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_or_and_fetch_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_sub_and_fetch + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_sub_and_fetch_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_sub_and_fetch_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_sub_and_fetch_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_sub_and_fetch_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_sub_and_fetch_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_swap + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_swap_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_swap_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_swap_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_swap_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_swap_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__sync_synchronize + .param_str = "v" + +__sync_val_compare_and_swap + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_val_compare_and_swap_1 + .param_str = "ccD*cc." + .attributes = .{ .custom_typecheck = true } + +__sync_val_compare_and_swap_16 + .param_str = "LLLiLLLiD*LLLiLLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_val_compare_and_swap_2 + .param_str = "ssD*ss." + .attributes = .{ .custom_typecheck = true } + +__sync_val_compare_and_swap_4 + .param_str = "iiD*ii." + .attributes = .{ .custom_typecheck = true } + +__sync_val_compare_and_swap_8 + .param_str = "LLiLLiD*LLiLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_xor_and_fetch + .param_str = "v." + .attributes = .{ .custom_typecheck = true } + +__sync_xor_and_fetch_1 + .param_str = "ccD*c." + .attributes = .{ .custom_typecheck = true } + +__sync_xor_and_fetch_16 + .param_str = "LLLiLLLiD*LLLi." + .attributes = .{ .custom_typecheck = true } + +__sync_xor_and_fetch_2 + .param_str = "ssD*s." + .attributes = .{ .custom_typecheck = true } + +__sync_xor_and_fetch_4 + .param_str = "iiD*i." + .attributes = .{ .custom_typecheck = true } + +__sync_xor_and_fetch_8 + .param_str = "LLiLLiD*LLi." + .attributes = .{ .custom_typecheck = true } + +__syncthreads + .param_str = "v" + .target_set = TargetSet.initOne(.nvptx) + +__tanpi + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__tanpif + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +__va_start + .param_str = "vc**." + .language = .all_ms_languages + .attributes = .{ .custom_typecheck = true } + +__warn_memset_zero_len + .param_str = "v" + .attributes = .{ .pure = true } + +__wfe + .param_str = "v" + .language = .all_ms_languages + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__wfi + .param_str = "v" + .language = .all_ms_languages + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +__xray_customevent + .param_str = "vcC*z" + +__xray_typedevent + .param_str = "vzcC*z" + +__yield + .param_str = "v" + .language = .all_ms_languages + .target_set = TargetSet.initMany(&.{ .aarch64, .arm }) + +_abnormal_termination + .param_str = "i" + .language = .all_ms_languages + +_alloca + .param_str = "v*z" + .language = .all_ms_languages + +_bittest + .param_str = "UcNiC*Ni" + .language = .all_ms_languages + +_bittest64 + .param_str = "UcWiC*Wi" + .language = .all_ms_languages + +_bittestandcomplement + .param_str = "UcNi*Ni" + .language = .all_ms_languages + +_bittestandcomplement64 + .param_str = "UcWi*Wi" + .language = .all_ms_languages + +_bittestandreset + .param_str = "UcNi*Ni" + .language = .all_ms_languages + +_bittestandreset64 + .param_str = "UcWi*Wi" + .language = .all_ms_languages + +_bittestandset + .param_str = "UcNi*Ni" + .language = .all_ms_languages + +_bittestandset64 + .param_str = "UcWi*Wi" + .language = .all_ms_languages + +_byteswap_uint64 + .param_str = "ULLiULLi" + .header = .stdlib, .language = .all_ms_languages + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +_byteswap_ulong + .param_str = "UNiUNi" + .header = .stdlib, .language = .all_ms_languages + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +_byteswap_ushort + .param_str = "UsUs" + .header = .stdlib, .language = .all_ms_languages + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +_exception_code + .param_str = "UNi" + .language = .all_ms_languages + +_exception_info + .param_str = "v*" + .language = .all_ms_languages + +_exit + .param_str = "vi" + .header = .unistd, .language = .all_gnu_languages + .attributes = .{ .noreturn = true, .lib_function_without_prefix = true } + +_interlockedbittestandreset + .param_str = "UcNiD*Ni" + .language = .all_ms_languages + +_interlockedbittestandreset64 + .param_str = "UcWiD*Wi" + .language = .all_ms_languages + +_interlockedbittestandreset_acq + .param_str = "UcNiD*Ni" + .language = .all_ms_languages + +_interlockedbittestandreset_nf + .param_str = "UcNiD*Ni" + .language = .all_ms_languages + +_interlockedbittestandreset_rel + .param_str = "UcNiD*Ni" + .language = .all_ms_languages + +_interlockedbittestandset + .param_str = "UcNiD*Ni" + .language = .all_ms_languages + +_interlockedbittestandset64 + .param_str = "UcWiD*Wi" + .language = .all_ms_languages + +_interlockedbittestandset_acq + .param_str = "UcNiD*Ni" + .language = .all_ms_languages + +_interlockedbittestandset_nf + .param_str = "UcNiD*Ni" + .language = .all_ms_languages + +_interlockedbittestandset_rel + .param_str = "UcNiD*Ni" + .language = .all_ms_languages + +_longjmp + .param_str = "vJi" + .header = .setjmp, .language = .all_gnu_languages + .attributes = .{ .noreturn = true, .allow_type_mismatch = true, .lib_function_without_prefix = true } + +_lrotl + .param_str = "ULiULii" + .language = .all_ms_languages + .attributes = .{ .const_evaluable = true } + +_lrotr + .param_str = "ULiULii" + .language = .all_ms_languages + .attributes = .{ .const_evaluable = true } + +_rotl + .param_str = "UiUii" + .language = .all_ms_languages + .attributes = .{ .const_evaluable = true } + +_rotl16 + .param_str = "UsUsUc" + .language = .all_ms_languages + .attributes = .{ .const_evaluable = true } + +_rotl64 + .param_str = "UWiUWii" + .language = .all_ms_languages + .attributes = .{ .const_evaluable = true } + +_rotl8 + .param_str = "UcUcUc" + .language = .all_ms_languages + .attributes = .{ .const_evaluable = true } + +_rotr + .param_str = "UiUii" + .language = .all_ms_languages + .attributes = .{ .const_evaluable = true } + +_rotr16 + .param_str = "UsUsUc" + .language = .all_ms_languages + .attributes = .{ .const_evaluable = true } + +_rotr64 + .param_str = "UWiUWii" + .language = .all_ms_languages + .attributes = .{ .const_evaluable = true } + +_rotr8 + .param_str = "UcUcUc" + .language = .all_ms_languages + .attributes = .{ .const_evaluable = true } + +_setjmp + .param_str = "iJ" + .header = .setjmp + .attributes = .{ .allow_type_mismatch = true, .lib_function_without_prefix = true, .returns_twice = true } + +_setjmpex + .param_str = "iJ" + .header = .setjmpex, .language = .all_ms_languages + .attributes = .{ .allow_type_mismatch = true, .lib_function_without_prefix = true, .returns_twice = true } + +abort + .param_str = "v" + .header = .stdlib + .attributes = .{ .noreturn = true, .lib_function_without_prefix = true } + +abs + .param_str = "ii" + .header = .stdlib + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +acos + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +acosf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +acosh + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +acoshf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +acoshl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +acosl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +aligned_alloc + .param_str = "v*zz" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +alloca + .param_str = "v*z" + .header = .stdlib, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +asin + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +asinf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +asinh + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +asinhf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +asinhl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +asinl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +atan + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +atan2 + .param_str = "ddd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +atan2f + .param_str = "fff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +atan2l + .param_str = "LdLdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +atanf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +atanh + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +atanhf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +atanhl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +atanl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +bcmp + .param_str = "ivC*vC*z" + .header = .strings, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +bcopy + .param_str = "vvC*v*z" + .header = .strings, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +bzero + .param_str = "vv*z" + .header = .strings, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +cabs + .param_str = "dXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cabsf + .param_str = "fXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cabsl + .param_str = "LdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cacos + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cacosf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cacosh + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cacoshf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cacoshl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cacosl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +calloc + .param_str = "v*zz" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +carg + .param_str = "dXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cargf + .param_str = "fXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cargl + .param_str = "LdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +casin + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +casinf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +casinh + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +casinhf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +casinhl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +casinl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +catan + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +catanf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +catanh + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +catanhf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +catanhl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +catanl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cbrt + .param_str = "dd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +cbrtf + .param_str = "ff" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +cbrtl + .param_str = "LdLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +ccos + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ccosf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ccosh + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ccoshf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ccoshl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ccosl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ceil + .param_str = "dd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +ceilf + .param_str = "ff" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +ceill + .param_str = "LdLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +cexp + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cexpf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cexpl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cimag + .param_str = "dXd" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +cimagf + .param_str = "fXf" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +cimagl + .param_str = "LdXLd" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +clog + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +clogf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +clogl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +conj + .param_str = "XdXd" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +conjf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +conjl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +copysign + .param_str = "ddd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +copysignf + .param_str = "fff" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +copysignl + .param_str = "LdLdLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +cos + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cosf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cosh + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +coshf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +coshl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cosl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cpow + .param_str = "XdXdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cpowf + .param_str = "XfXfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cpowl + .param_str = "XLdXLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +cproj + .param_str = "XdXd" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +cprojf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +cprojl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +creal + .param_str = "dXd" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +crealf + .param_str = "fXf" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +creall + .param_str = "LdXLd" + .header = .complex + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +csin + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +csinf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +csinh + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +csinhf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +csinhl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +csinl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +csqrt + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +csqrtf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +csqrtl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ctan + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ctanf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ctanh + .param_str = "XdXd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ctanhf + .param_str = "XfXf" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ctanhl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ctanl + .param_str = "XLdXLd" + .header = .complex + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +erf + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +erfc + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +erfcf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +erfcl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +erff + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +erfl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +exit + .param_str = "vi" + .header = .stdlib + .attributes = .{ .noreturn = true, .lib_function_without_prefix = true } + +exp + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +exp2 + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +exp2f + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +exp2l + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +expf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +expl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +expm1 + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +expm1f + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +expm1l + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +fabs + .param_str = "dd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +fabsf + .param_str = "ff" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +fabsl + .param_str = "LdLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +fdim + .param_str = "ddd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +fdimf + .param_str = "fff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +fdiml + .param_str = "LdLdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +finite + .param_str = "id" + .header = .math, .language = .gnu_lang + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +finitef + .param_str = "if" + .header = .math, .language = .gnu_lang + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +finitel + .param_str = "iLd" + .header = .math, .language = .gnu_lang + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +floor + .param_str = "dd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +floorf + .param_str = "ff" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +floorl + .param_str = "LdLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +fma + .param_str = "dddd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +fmaf + .param_str = "ffff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +fmal + .param_str = "LdLdLdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +fmax + .param_str = "ddd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +fmaxf + .param_str = "fff" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +fmaxl + .param_str = "LdLdLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +fmin + .param_str = "ddd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +fminf + .param_str = "fff" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +fminl + .param_str = "LdLdLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +fmod + .param_str = "ddd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +fmodf + .param_str = "fff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +fmodl + .param_str = "LdLdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +fopen + .param_str = "P*cC*cC*" + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true } + +fprintf + .param_str = "iP*cC*." + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .printf, .format_string_position = 1 } + +fread + .param_str = "zv*zzP*" + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true } + +free + .param_str = "vv*" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +frexp + .param_str = "ddi*" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +frexpf + .param_str = "ffi*" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +frexpl + .param_str = "LdLdi*" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +fscanf + .param_str = "iP*RcC*R." + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .scanf, .format_string_position = 1 } + +fwrite + .param_str = "zvC*zzP*" + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true } + +getcontext + .param_str = "iK*" + .header = .setjmp + .attributes = .{ .allow_type_mismatch = true, .lib_function_without_prefix = true, .returns_twice = true } + +hypot + .param_str = "ddd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +hypotf + .param_str = "fff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +hypotl + .param_str = "LdLdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ilogb + .param_str = "id" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ilogbf + .param_str = "if" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ilogbl + .param_str = "iLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +index + .param_str = "c*cC*i" + .header = .strings, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +isalnum + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +isalpha + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +isblank + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +iscntrl + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +isdigit + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +isgraph + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +islower + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +isprint + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +ispunct + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +isspace + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +isupper + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +isxdigit + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +labs + .param_str = "LiLi" + .header = .stdlib + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +ldexp + .param_str = "ddi" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ldexpf + .param_str = "ffi" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +ldexpl + .param_str = "LdLdi" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +lgamma + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +lgammaf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +lgammal + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +llabs + .param_str = "LLiLLi" + .header = .stdlib + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +llrint + .param_str = "LLid" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +llrintf + .param_str = "LLif" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +llrintl + .param_str = "LLiLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +llround + .param_str = "LLid" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +llroundf + .param_str = "LLif" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +llroundl + .param_str = "LLiLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +log + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +log10 + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +log10f + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +log10l + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +log1p + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +log1pf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +log1pl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +log2 + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +log2f + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +log2l + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +logb + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +logbf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +logbl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +logf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +logl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +longjmp + .param_str = "vJi" + .header = .setjmp + .attributes = .{ .noreturn = true, .allow_type_mismatch = true, .lib_function_without_prefix = true } + +lrint + .param_str = "Lid" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +lrintf + .param_str = "Lif" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +lrintl + .param_str = "LiLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +lround + .param_str = "Lid" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +lroundf + .param_str = "Lif" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +lroundl + .param_str = "LiLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +malloc + .param_str = "v*z" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +memalign + .param_str = "v*zz" + .header = .malloc, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +memccpy + .param_str = "v*v*vC*iz" + .header = .string, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +memchr + .param_str = "v*vC*iz" + .header = .string + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +memcmp + .param_str = "ivC*vC*z" + .header = .string + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +memcpy + .param_str = "v*v*vC*z" + .header = .string + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +memmove + .param_str = "v*v*vC*z" + .header = .string + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +mempcpy + .param_str = "v*v*vC*z" + .header = .string, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +memset + .param_str = "v*v*iz" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +modf + .param_str = "ddd*" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +modff + .param_str = "fff*" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +modfl + .param_str = "LdLdLd*" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +nan + .param_str = "dcC*" + .header = .math + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +nanf + .param_str = "fcC*" + .header = .math + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +nanl + .param_str = "LdcC*" + .header = .math + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +nearbyint + .param_str = "dd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +nearbyintf + .param_str = "ff" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +nearbyintl + .param_str = "LdLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +nextafter + .param_str = "ddd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +nextafterf + .param_str = "fff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +nextafterl + .param_str = "LdLdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +nexttoward + .param_str = "ddLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +nexttowardf + .param_str = "ffLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +nexttowardl + .param_str = "LdLdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +pow + .param_str = "ddd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +powf + .param_str = "fff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +powl + .param_str = "LdLdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +printf + .param_str = "icC*." + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .printf } + +realloc + .param_str = "v*v*z" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +remainder + .param_str = "ddd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +remainderf + .param_str = "fff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +remainderl + .param_str = "LdLdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +remquo + .param_str = "dddi*" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +remquof + .param_str = "fffi*" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +remquol + .param_str = "LdLdLdi*" + .header = .math + .attributes = .{ .lib_function_without_prefix = true } + +rindex + .param_str = "c*cC*i" + .header = .strings, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +rint + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_fp_exceptions = true } + +rintf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_fp_exceptions = true } + +rintl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_fp_exceptions = true } + +round + .param_str = "dd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +roundeven + .param_str = "dd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +roundevenf + .param_str = "ff" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +roundevenl + .param_str = "LdLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +roundf + .param_str = "ff" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +roundl + .param_str = "LdLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +savectx + .param_str = "iJ" + .header = .setjmp + .attributes = .{ .allow_type_mismatch = true, .lib_function_without_prefix = true, .returns_twice = true } + +scalbln + .param_str = "ddLi" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +scalblnf + .param_str = "ffLi" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +scalblnl + .param_str = "LdLdLi" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +scalbn + .param_str = "ddi" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +scalbnf + .param_str = "ffi" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +scalbnl + .param_str = "LdLdi" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +scanf + .param_str = "icC*R." + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .scanf } + +setjmp + .param_str = "iJ" + .header = .setjmp + .attributes = .{ .allow_type_mismatch = true, .lib_function_without_prefix = true, .returns_twice = true } + +siglongjmp + .param_str = "vSJi" + .header = .setjmp, .language = .all_gnu_languages + .attributes = .{ .noreturn = true, .allow_type_mismatch = true, .lib_function_without_prefix = true } + +sigsetjmp + .param_str = "iSJi" + .header = .setjmp + .attributes = .{ .allow_type_mismatch = true, .lib_function_without_prefix = true, .returns_twice = true } + +sin + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +sinf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +sinh + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +sinhf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +sinhl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +sinl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +snprintf + .param_str = "ic*zcC*." + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .printf, .format_string_position = 2 } + +sprintf + .param_str = "ic*cC*." + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .printf, .format_string_position = 1 } + +sqrt + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +sqrtf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +sqrtl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +sscanf + .param_str = "icC*RcC*R." + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .scanf, .format_string_position = 1 } + +stpcpy + .param_str = "c*c*cC*" + .header = .string, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +stpncpy + .param_str = "c*c*cC*z" + .header = .string, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +strcasecmp + .param_str = "icC*cC*" + .header = .strings, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +strcat + .param_str = "c*c*cC*" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +strchr + .param_str = "c*cC*i" + .header = .string + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +strcmp + .param_str = "icC*cC*" + .header = .string + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +strcpy + .param_str = "c*c*cC*" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +strcspn + .param_str = "zcC*cC*" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +strdup + .param_str = "c*cC*" + .header = .string, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +strerror + .param_str = "c*i" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +strlcat + .param_str = "zc*cC*z" + .header = .string, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +strlcpy + .param_str = "zc*cC*z" + .header = .string, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +strlen + .param_str = "zcC*" + .header = .string + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +strncasecmp + .param_str = "icC*cC*z" + .header = .strings, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +strncat + .param_str = "c*c*cC*z" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +strncmp + .param_str = "icC*cC*z" + .header = .string + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +strncpy + .param_str = "c*c*cC*z" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +strndup + .param_str = "c*cC*z" + .header = .string, .language = .all_gnu_languages + .attributes = .{ .lib_function_without_prefix = true } + +strpbrk + .param_str = "c*cC*cC*" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +strrchr + .param_str = "c*cC*i" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +strspn + .param_str = "zcC*cC*" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +strstr + .param_str = "c*cC*cC*" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +strtod + .param_str = "dcC*c**" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +strtof + .param_str = "fcC*c**" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +strtok + .param_str = "c*c*cC*" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +strtol + .param_str = "LicC*c**i" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +strtold + .param_str = "LdcC*c**" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +strtoll + .param_str = "LLicC*c**i" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +strtoul + .param_str = "ULicC*c**i" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +strtoull + .param_str = "ULLicC*c**i" + .header = .stdlib + .attributes = .{ .lib_function_without_prefix = true } + +strxfrm + .param_str = "zc*cC*z" + .header = .string + .attributes = .{ .lib_function_without_prefix = true } + +tan + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +tanf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +tanh + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +tanhf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +tanhl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +tanl + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +tgamma + .param_str = "dd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +tgammaf + .param_str = "ff" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +tgammal + .param_str = "LdLd" + .header = .math + .attributes = .{ .lib_function_without_prefix = true, .const_without_errno_and_fp_exceptions = true } + +tolower + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +toupper + .param_str = "ii" + .header = .ctype + .attributes = .{ .pure = true, .lib_function_without_prefix = true } + +trunc + .param_str = "dd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +truncf + .param_str = "ff" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +truncl + .param_str = "LdLd" + .header = .math + .attributes = .{ .@"const" = true, .lib_function_without_prefix = true } + +va_copy + .param_str = "vAA" + .header = .stdarg + .attributes = .{ .lib_function_without_prefix = true } + +va_end + .param_str = "vA" + .header = .stdarg + .attributes = .{ .lib_function_without_prefix = true } + +va_start + .param_str = "vA." + .header = .stdarg + .attributes = .{ .lib_function_without_prefix = true } + +vfork + .param_str = "p" + .header = .unistd + .attributes = .{ .allow_type_mismatch = true, .lib_function_without_prefix = true, .returns_twice = true } + +vfprintf + .param_str = "iP*cC*a" + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .vprintf, .format_string_position = 1 } + +vfscanf + .param_str = "iP*RcC*Ra" + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .vscanf, .format_string_position = 1 } + +vprintf + .param_str = "icC*a" + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .vprintf } + +vscanf + .param_str = "icC*Ra" + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .vscanf } + +vsnprintf + .param_str = "ic*zcC*a" + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .vprintf, .format_string_position = 2 } + +vsprintf + .param_str = "ic*cC*a" + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .vprintf, .format_string_position = 1 } + +vsscanf + .param_str = "icC*RcC*Ra" + .header = .stdio + .attributes = .{ .lib_function_without_prefix = true, .format_kind = .vscanf, .format_string_position = 1 } + +wcschr + .param_str = "w*wC*w" + .header = .wchar + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +wcscmp + .param_str = "iwC*wC*" + .header = .wchar + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +wcslen + .param_str = "zwC*" + .header = .wchar + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +wcsncmp + .param_str = "iwC*wC*z" + .header = .wchar + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +wmemchr + .param_str = "w*wC*wz" + .header = .wchar + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +wmemcmp + .param_str = "iwC*wC*z" + .header = .wchar + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +wmemcpy + .param_str = "w*w*wC*z" + .header = .wchar + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } + +wmemmove + .param_str = "w*w*wC*z" + .header = .wchar + .attributes = .{ .lib_function_without_prefix = true, .const_evaluable = true } diff --git a/deps/aro/builtins/BuiltinFunction.zig b/deps/aro/Builtins/BuiltinFunction.zig similarity index 100% rename from deps/aro/builtins/BuiltinFunction.zig rename to deps/aro/Builtins/BuiltinFunction.zig diff --git a/deps/aro/builtins/Properties.zig b/deps/aro/Builtins/Properties.zig similarity index 96% rename from deps/aro/builtins/Properties.zig rename to deps/aro/Builtins/Properties.zig index 1b795f5c24..72e74759f3 100644 --- a/deps/aro/builtins/Properties.zig +++ b/deps/aro/Builtins/Properties.zig @@ -2,6 +2,7 @@ const std = @import("std"); const Properties = @This(); +param_str: []const u8, language: Language = .all_languages, attributes: Attributes = Attributes{}, header: Header = .none, @@ -136,3 +137,7 @@ pub const Target = enum { /// Targets for which a builtin is enabled pub const TargetSet = std.enums.EnumSet(Target); + +pub fn isVarArgs(properties: Properties) bool { + return properties.param_str[properties.param_str.len - 1] == '.'; +} diff --git a/deps/aro/builtins/TypeDescription.zig b/deps/aro/Builtins/TypeDescription.zig similarity index 100% rename from deps/aro/builtins/TypeDescription.zig rename to deps/aro/Builtins/TypeDescription.zig diff --git a/deps/aro/CodeGen.zig b/deps/aro/CodeGen.zig index 12ac697d6e..4e6f61f403 100644 --- a/deps/aro/CodeGen.zig +++ b/deps/aro/CodeGen.zig @@ -1,7 +1,8 @@ const std = @import("std"); const Allocator = std.mem.Allocator; const assert = std.debug.assert; -const BuiltinFunction = @import("builtins/BuiltinFunction.zig"); +const Builtins = @import("Builtins.zig"); +const Builtin = Builtins.Builtin; const Compilation = @import("Compilation.zig"); const Interner = @import("Interner.zig"); const Ir = @import("Ir.zig"); @@ -1159,10 +1160,10 @@ fn genBoolExpr(c: *CodeGen, base: NodeIndex, true_label: Ir.Ref, false_label: Ir try c.addBranch(cmp, true_label, false_label); } -fn genBuiltinCall(c: *CodeGen, builtin: BuiltinFunction, arg_nodes: []const NodeIndex, ty: Type) Error!Ir.Ref { +fn genBuiltinCall(c: *CodeGen, builtin: Builtin, arg_nodes: []const NodeIndex, ty: Type) Error!Ir.Ref { _ = arg_nodes; _ = ty; - return c.comp.diag.fatalNoSrc("TODO CodeGen.genBuiltinCall {s}\n", .{BuiltinFunction.nameFromTag(builtin.tag).span()}); + return c.comp.diag.fatalNoSrc("TODO CodeGen.genBuiltinCall {s}\n", .{Builtin.nameFromTag(builtin.tag).span()}); } fn genCall(c: *CodeGen, fn_node: NodeIndex, arg_nodes: []const NodeIndex, ty: Type) Error!Ir.Ref { diff --git a/deps/aro/Compilation.zig b/deps/aro/Compilation.zig index 6f4b668407..f026cbc2ea 100644 --- a/deps/aro/Compilation.zig +++ b/deps/aro/Compilation.zig @@ -4,6 +4,7 @@ const mem = std.mem; const Allocator = mem.Allocator; const EpochSeconds = std.time.epoch.EpochSeconds; const Builtins = @import("Builtins.zig"); +const Builtin = Builtins.Builtin; const Diagnostics = @import("Diagnostics.zig"); const LangOpts = @import("LangOpts.zig"); const Source = @import("Source.zig"); @@ -14,7 +15,6 @@ const Pragma = @import("Pragma.zig"); const StringInterner = @import("StringInterner.zig"); const record_layout = @import("record_layout.zig"); const target_util = @import("target.zig"); -const BuiltinFunction = @import("builtins/BuiltinFunction.zig"); const Compilation = @This(); @@ -238,6 +238,8 @@ pub fn generateBuiltinMacros(comp: *Compilation) !Source { \\#define __STDC_NO_COMPLEX__ 1 \\#define __STDC_NO_THREADS__ 1 \\#define __STDC_NO_VLA__ 1 + \\#define __STDC_UTF_16__ 1 + \\#define __STDC_UTF_32__ 1 \\ ); if (comp.langopts.standard.StdCVersionMacro()) |stdc_version| { @@ -1193,9 +1195,7 @@ pub const IncludeDirIterator = struct { while (self.next()) |found| { const path = try std.fs.path.join(allocator, &.{ found.path, filename }); if (self.comp.langopts.ms_extensions) { - for (path) |*c| { - if (c.* == '\\') c.* = '/'; - } + std.mem.replaceScalar(u8, path, '\\', '/'); } return .{ .path = path, .kind = found.kind }; } @@ -1416,11 +1416,11 @@ pub fn hasBuiltin(comp: *const Compilation, name: []const u8) bool { std.mem.eql(u8, name, "__builtin_offsetof") or std.mem.eql(u8, name, "__builtin_types_compatible_p")) return true; - const builtin = BuiltinFunction.fromName(name) orelse return false; + const builtin = Builtin.fromName(name) orelse return false; return comp.hasBuiltinFunction(builtin); } -pub fn hasBuiltinFunction(comp: *const Compilation, builtin: BuiltinFunction) bool { +pub fn hasBuiltinFunction(comp: *const Compilation, builtin: Builtin) bool { if (!target_util.builtinEnabled(comp.target, builtin.properties.target_set)) return false; switch (builtin.properties.language) { @@ -1430,6 +1430,20 @@ pub fn hasBuiltinFunction(comp: *const Compilation, builtin: BuiltinFunction) bo } } +pub const CharUnitSize = enum(u32) { + @"1" = 1, + @"2" = 2, + @"4" = 4, + + pub fn Type(comptime self: CharUnitSize) type { + return switch (self) { + .@"1" => u8, + .@"2" => u16, + .@"4" => u32, + }; + } +}; + pub const renderErrors = Diagnostics.render; test "addSourceFromReader" { diff --git a/deps/aro/Diagnostics.zig b/deps/aro/Diagnostics.zig index 9189cb4d0d..9229d01e7f 100644 --- a/deps/aro/Diagnostics.zig +++ b/deps/aro/Diagnostics.zig @@ -4,8 +4,9 @@ const Allocator = mem.Allocator; const Source = @import("Source.zig"); const Compilation = @import("Compilation.zig"); const Attribute = @import("Attribute.zig"); -const BuiltinFunction = @import("builtins/BuiltinFunction.zig"); -const Header = @import("builtins/Properties.zig").Header; +const Builtins = @import("Builtins.zig"); +const Builtin = Builtins.Builtin; +const Header = @import("Builtins/Properties.zig").Header; const Tree = @import("Tree.zig"); const util = @import("util.zig"); const is_windows = @import("builtin").os.tag == .windows; @@ -51,7 +52,7 @@ pub const Message = struct { specifier: enum { @"struct", @"union", @"enum" }, }, builtin_with_header: struct { - builtin: BuiltinFunction.Tag, + builtin: Builtin.Tag, header: Header, }, invalid_escape: struct { @@ -69,10 +70,9 @@ pub const Message = struct { pub const Tag = std.meta.DeclEnum(messages); -// u4 to avoid any possible packed struct issues -pub const Kind = enum(u4) { @"fatal error", @"error", note, warning, off, default }; +pub const Kind = enum { @"fatal error", @"error", note, warning, off, default }; -pub const Options = packed struct { +pub const Options = struct { // do not directly use these, instead add `const NAME = true;` all: Kind = .default, extra: Kind = .default, @@ -178,6 +178,7 @@ pub const Options = packed struct { @"invalid-source-encoding": Kind = .default, @"four-char-constants": Kind = .default, @"unknown-escape-sequence": Kind = .default, + @"invalid-pp-token": Kind = .default, }; const messages = struct { @@ -2509,6 +2510,42 @@ const messages = struct { const opt = "unknown-escape-sequence"; const extra = .invalid_escape; }; + pub const attribute_requires_string = struct { + const msg = "attribute '{s}' requires an ordinary string"; + const kind = .@"error"; + const extra = .str; + }; + pub const unterminated_string_literal_warning = struct { + const msg = "missing terminating '\"' character"; + const kind = .warning; + const opt = "invalid-pp-token"; + }; + pub const unterminated_string_literal_error = struct { + const msg = "missing terminating '\"' character"; + const kind = .@"error"; + }; + pub const empty_char_literal_warning = struct { + const msg = "empty character constant"; + const kind = .warning; + const opt = "invalid-pp-token"; + }; + pub const empty_char_literal_error = struct { + const msg = "empty character constant"; + const kind = .@"error"; + }; + pub const unterminated_char_literal_warning = struct { + const msg = "missing terminating ' character"; + const kind = .warning; + const opt = "invalid-pp-token"; + }; + pub const unterminated_char_literal_error = struct { + const msg = "missing terminating ' character"; + const kind = .@"error"; + }; + pub const unterminated_comment = struct { + const msg = "unterminated comment"; + const kind = .@"error"; + }; }; list: std.ArrayListUnmanaged(Message) = .{}, @@ -2750,7 +2787,7 @@ pub fn renderMessage(comp: *Compilation, m: anytype, msg: Message) void { }), .builtin_with_header => m.print(info.msg, .{ @tagName(msg.extra.builtin_with_header.header), - BuiltinFunction.nameFromTag(msg.extra.builtin_with_header.builtin).span(), + Builtin.nameFromTag(msg.extra.builtin_with_header.builtin).span(), }), .invalid_escape => { if (std.ascii.isPrint(msg.extra.invalid_escape.char)) { diff --git a/deps/aro/Ir.zig b/deps/aro/Ir.zig index 4373925295..4c45f78bb3 100644 --- a/deps/aro/Ir.zig +++ b/deps/aro/Ir.zig @@ -552,7 +552,7 @@ fn writeValue(ir: Ir, val_ref: Interner.Ref, color: bool, w: anytype) !void { switch (v.tag) { .unavailable => try w.writeAll(" unavailable"), .int => try w.print("{d}", .{v.data.int}), - .bytes => try w.print("\"{s}\"", .{v.data.bytes.slice(ir.strings)}), + .bytes => try w.print("\"{s}\"", .{v.data.bytes.slice(ir.strings, .@"1")}), // std.fmt does @as instead of @floatCast .float => try w.print("{d}", .{@as(f64, @floatCast(v.data.float))}), else => try w.print("({s})", .{@tagName(v.tag)}), diff --git a/deps/aro/Parser.zig b/deps/aro/Parser.zig index dfe4bb9bc1..cc8ca82068 100644 --- a/deps/aro/Parser.zig +++ b/deps/aro/Parser.zig @@ -17,7 +17,7 @@ const NodeList = std.ArrayList(NodeIndex); const InitList = @import("InitList.zig"); const Attribute = @import("Attribute.zig"); const CharInfo = @import("CharInfo.zig"); -const CharLiteral = @import("CharLiteral.zig"); +const TextLiteral = @import("TextLiteral.zig"); const Value = @import("Value.zig"); const SymbolStack = @import("SymbolStack.zig"); const Symbol = SymbolStack.Symbol; @@ -26,7 +26,8 @@ const StringId = @import("StringInterner.zig").StringId; const number_affixes = @import("number_affixes.zig"); const NumberPrefix = number_affixes.Prefix; const NumberSuffix = number_affixes.Suffix; -const BuiltinFunction = @import("builtins/BuiltinFunction.zig"); +const Builtins = @import("Builtins.zig"); +const Builtin = Builtins.Builtin; const target_util = @import("target.zig"); const Parser = @This(); @@ -467,7 +468,7 @@ fn checkDeprecatedUnavailable(p: *Parser, ty: Type, usage_tok: TokenIndex, decl_ defer p.strings.items.len = strings_top; const w = p.strings.writer(); - const msg_str = p.retainedString(@"error".msg); + const msg_str = p.attributeMessageString(@"error".msg); try w.print("call to '{s}' declared with attribute error: {s}", .{ p.tokSlice(@"error".__name_tok), msg_str }); const str = try p.comp.diag.arena.allocator().dupe(u8, p.strings.items[strings_top..]); try p.errStr(.error_attribute, usage_tok, str); @@ -477,7 +478,7 @@ fn checkDeprecatedUnavailable(p: *Parser, ty: Type, usage_tok: TokenIndex, decl_ defer p.strings.items.len = strings_top; const w = p.strings.writer(); - const msg_str = p.retainedString(warning.msg); + const msg_str = p.attributeMessageString(warning.msg); try w.print("call to '{s}' declared with attribute warning: {s}", .{ p.tokSlice(warning.__name_tok), msg_str }); const str = try p.comp.diag.arena.allocator().dupe(u8, p.strings.items[strings_top..]); try p.errStr(.warning_attribute, usage_tok, str); @@ -492,9 +493,10 @@ fn checkDeprecatedUnavailable(p: *Parser, ty: Type, usage_tok: TokenIndex, decl_ } } +/// Assumes that the specified range was created by an ordinary or `u8` string literal /// Returned slice is invalidated if additional strings are added to p.retained_strings -fn retainedString(p: *Parser, range: Value.ByteRange) []const u8 { - return range.slice(p.retained_strings.items); +fn attributeMessageString(p: *Parser, range: Value.ByteRange) []const u8 { + return range.slice(p.retained_strings.items, .@"1"); } fn errDeprecated(p: *Parser, tag: Diagnostics.Tag, tok_i: TokenIndex, msg: ?Value.ByteRange) Compilation.Error!void { @@ -510,7 +512,7 @@ fn errDeprecated(p: *Parser, tag: Diagnostics.Tag, tok_i: TokenIndex, msg: ?Valu }; try w.writeAll(reason); if (msg) |m| { - const str = p.retainedString(m); + const str = p.attributeMessageString(m); try w.print(": {s}", .{str}); } const str = try p.comp.diag.arena.allocator().dupe(u8, p.strings.items[strings_top..]); @@ -901,7 +903,7 @@ fn decl(p: *Parser) Error!bool { break :blk DeclSpec{ .ty = try spec.finish(p) }; }; if (decl_spec.noreturn) |tok| { - const attr = Attribute{ .tag = .noreturn, .args = .{ .noreturn = {} }, .syntax = .keyword }; + const attr = Attribute{ .tag = .noreturn, .args = .{ .noreturn = .{} }, .syntax = .keyword }; try p.attr_buf.append(p.gpa, .{ .attr = attr, .tok = tok }); } var init_d = (try p.initDeclarator(&decl_spec, attr_buf_top)) orelse { @@ -985,7 +987,7 @@ fn decl(p: *Parser) Error!bool { const attr_buf_top_declarator = p.attr_buf.len; defer p.attr_buf.len = attr_buf_top_declarator; - var d = (try p.declarator(param_decl_spec.ty, .normal)) orelse { + var d = (try p.declarator(param_decl_spec.ty, .param)) orelse { try p.errTok(.missing_declaration, first_tok); _ = try p.expectToken(.semicolon); continue :param_loop; @@ -1152,17 +1154,13 @@ fn staticAssertMessage(p: *Parser, cond_node: NodeIndex, message: Result) !?[]co try buf.appendSlice(")'"); } if (message.node != .none) { + assert(p.nodes.items(.tag)[@intFromEnum(message.node)] == .string_literal_expr); if (buf.items.len > 0) { try buf.append(' '); } - const data = message.val.data.bytes; - try buf.ensureUnusedCapacity(data.len()); - try Tree.dumpStr( - p.retained_strings.items, - data, - p.nodes.items(.tag)[@intFromEnum(message.node)], - buf.writer(), - ); + const byte_range = message.val.data.bytes; + try buf.ensureUnusedCapacity(byte_range.len()); + try byte_range.dumpString(message.ty, p.comp, p.retained_strings.items, buf.writer()); } return try p.comp.diag.arena.allocator().dupe(u8, buf.items); } @@ -1183,6 +1181,7 @@ fn staticAssert(p: *Parser) Error!bool { .string_literal_utf_8, .string_literal_utf_32, .string_literal_wide, + .unterminated_string_literal, => try p.stringLiteral(), else => { try p.err(.expected_str_literal); @@ -2366,7 +2365,9 @@ fn enumSpec(p: *Parser) Error!Type { // check if this is a reference to a previous type const interned_name = try p.comp.intern(p.tokSlice(ident)); if (try p.syms.findTag(p, interned_name, .keyword_enum, ident, p.tok_ids[p.tok_i])) |prev| { - try p.checkEnumFixedTy(fixed_ty, ident, prev); + // only check fixed underlying type in forward declarations and not in references. + if (p.tok_ids[p.tok_i] == .semicolon) + try p.checkEnumFixedTy(fixed_ty, ident, prev); return prev.ty; } else { // this is a forward declaration, create a new enum Type. @@ -3952,7 +3953,7 @@ fn assembly(p: *Parser, kind: enum { global, decl_label, stmt }) Error!?NodeInde fn asmStr(p: *Parser) Error!Result { var i = p.tok_i; while (true) : (i += 1) switch (p.tok_ids[i]) { - .string_literal => {}, + .string_literal, .unterminated_string_literal => {}, .string_literal_utf_16, .string_literal_utf_8, .string_literal_utf_32 => { try p.errStr(.invalid_asm_str, p.tok_i, "unicode"); return error.ParsingFailed; @@ -4607,7 +4608,7 @@ const CallExpr = union(enum) { standard: NodeIndex, builtin: struct { node: NodeIndex, - tag: BuiltinFunction.Tag, + tag: Builtin.Tag, }, fn init(p: *Parser, call_node: NodeIndex, func_node: NodeIndex) CallExpr { @@ -4624,9 +4625,9 @@ const CallExpr = union(enum) { return switch (self) { .standard => true, .builtin => |builtin| switch (builtin.tag) { - BuiltinFunction.tagFromName("__builtin_va_start").?, - BuiltinFunction.tagFromName("__va_start").?, - BuiltinFunction.tagFromName("va_start").?, + Builtin.tagFromName("__builtin_va_start").?, + Builtin.tagFromName("__va_start").?, + Builtin.tagFromName("va_start").?, => arg_idx != 1, else => true, }, @@ -4637,11 +4638,11 @@ const CallExpr = union(enum) { return switch (self) { .standard => true, .builtin => |builtin| switch (builtin.tag) { - BuiltinFunction.tagFromName("__builtin_va_start").?, - BuiltinFunction.tagFromName("__va_start").?, - BuiltinFunction.tagFromName("va_start").?, + Builtin.tagFromName("__builtin_va_start").?, + Builtin.tagFromName("__va_start").?, + Builtin.tagFromName("va_start").?, => arg_idx != 1, - BuiltinFunction.tagFromName("__builtin_complex").? => false, + Builtin.tagFromName("__builtin_complex").? => false, else => true, }, }; @@ -4658,11 +4659,11 @@ const CallExpr = union(enum) { const builtin_tok = p.nodes.items(.data)[@intFromEnum(self.builtin.node)].decl.name; switch (self.builtin.tag) { - BuiltinFunction.tagFromName("__builtin_va_start").?, - BuiltinFunction.tagFromName("__va_start").?, - BuiltinFunction.tagFromName("va_start").?, + Builtin.tagFromName("__builtin_va_start").?, + Builtin.tagFromName("__va_start").?, + Builtin.tagFromName("va_start").?, => return p.checkVaStartArg(builtin_tok, first_after, param_tok, arg, arg_idx), - BuiltinFunction.tagFromName("__builtin_complex").? => return p.checkComplexArg(builtin_tok, first_after, param_tok, arg, arg_idx), + Builtin.tagFromName("__builtin_complex").? => return p.checkComplexArg(builtin_tok, first_after, param_tok, arg, arg_idx), else => {}, } } @@ -4676,7 +4677,7 @@ const CallExpr = union(enum) { return switch (self) { .standard => null, .builtin => |builtin| switch (builtin.tag) { - BuiltinFunction.tagFromName("__builtin_complex").? => 2, + Builtin.tagFromName("__builtin_complex").? => 2, else => null, }, }; @@ -4686,7 +4687,7 @@ const CallExpr = union(enum) { return switch (self) { .standard => callable_ty.returnType(), .builtin => |builtin| switch (builtin.tag) { - BuiltinFunction.tagFromName("__builtin_complex").? => { + Builtin.tagFromName("__builtin_complex").? => { const last_param = p.list_buf.items[p.list_buf.items.len - 1]; return p.nodes.items(.ty)[@intFromEnum(last_param)].makeComplex(); }, @@ -6343,7 +6344,14 @@ fn typesCompatible(p: *Parser) Error!Result { try p.expectClosing(l_paren, .r_paren); - const compatible = first.compatible(second, p.comp); + var first_unqual = first.canonicalize(.standard); + first_unqual.qual.@"const" = false; + first_unqual.qual.@"volatile" = false; + var second_unqual = second.canonicalize(.standard); + second_unqual.qual.@"const" = false; + second_unqual.qual.@"volatile" = false; + + const compatible = first_unqual.eql(second_unqual, p.comp, true); var res = Result{ .val = Value.int(@intFromBool(compatible)), @@ -7122,7 +7130,7 @@ fn checkComplexArg(p: *Parser, builtin_tok: TokenIndex, first_after: TokenIndex, } } -fn checkVariableBuiltinArgument(p: *Parser, builtin_tok: TokenIndex, first_after: TokenIndex, param_tok: TokenIndex, arg: *Result, arg_idx: u32, tag: BuiltinFunction.Tag) !void { +fn checkVariableBuiltinArgument(p: *Parser, builtin_tok: TokenIndex, first_after: TokenIndex, param_tok: TokenIndex, arg: *Result, arg_idx: u32, tag: Builtin.Tag) !void { switch (tag) { .__builtin_va_start, .__va_start, .va_start => return p.checkVaStartArg(builtin_tok, first_after, param_tok, arg, arg_idx), else => {}, @@ -7460,12 +7468,15 @@ fn primaryExpr(p: *Parser) Error!Result { .string_literal_utf_8, .string_literal_utf_32, .string_literal_wide, + .unterminated_string_literal, => return p.stringLiteral(), .char_literal, .char_literal_utf_8, .char_literal_utf_16, .char_literal_utf_32, .char_literal_wide, + .empty_char_literal, + .unterminated_char_literal, => return p.charLiteral(), .zero => { p.tok_i += 1; @@ -7522,131 +7533,123 @@ fn makePredefinedIdentifier(p: *Parser, start: u32) !Result { } fn stringLiteral(p: *Parser) Error!Result { - var start = p.tok_i; - // use 1 for wchar_t - var width: ?u8 = null; - var is_u8_literal = false; - while (true) { - switch (p.tok_ids[p.tok_i]) { - .string_literal => {}, - .string_literal_utf_16 => if (width) |some| { - if (some != 16) try p.err(.unsupported_str_cat); - } else { - width = 16; - }, - .string_literal_utf_8 => { - is_u8_literal = true; - if (width) |some| { - if (some != 8) try p.err(.unsupported_str_cat); - } else { - width = 8; + var string_end = p.tok_i; + var string_kind: TextLiteral.Kind = .char; + while (TextLiteral.Kind.classify(p.tok_ids[string_end], .string_literal)) |next| : (string_end += 1) { + string_kind = string_kind.concat(next) catch { + try p.errTok(.unsupported_str_cat, string_end); + while (p.tok_ids[p.tok_i].isStringLiteral()) : (p.tok_i += 1) {} + return error.ParsingFailed; + }; + if (string_kind == .unterminated) { + try p.errTok(.unterminated_string_literal_error, string_end); + p.tok_i = string_end + 1; + return error.ParsingFailed; + } + } + assert(string_end > p.tok_i); + + const char_width = string_kind.charUnitSize(p.comp); + + const retain_start = mem.alignForward(usize, p.retained_strings.items.len, string_kind.internalStorageAlignment(p.comp)); + try p.retained_strings.resize(retain_start); + + while (p.tok_i < string_end) : (p.tok_i += 1) { + const this_kind = TextLiteral.Kind.classify(p.tok_ids[p.tok_i], .string_literal).?; + const slice = this_kind.contentSlice(p.tokSlice(p.tok_i)); + var char_literal_parser = TextLiteral.Parser.init(slice, this_kind, 0x10ffff, p.comp); + + try p.retained_strings.ensureUnusedCapacity((slice.len + 1) * @intFromEnum(char_width)); // +1 for null terminator + while (char_literal_parser.next()) |item| switch (item) { + .value => |v| { + switch (char_width) { + .@"1" => p.retained_strings.appendAssumeCapacity(@intCast(v)), + .@"2" => { + const word: u16 = @intCast(v); + p.retained_strings.appendSliceAssumeCapacity(mem.asBytes(&word)); + }, + .@"4" => p.retained_strings.appendSliceAssumeCapacity(mem.asBytes(&v)), } }, - .string_literal_utf_32 => if (width) |some| { - if (some != 32) try p.err(.unsupported_str_cat); - } else { - width = 32; + .codepoint => |c| { + switch (char_width) { + .@"1" => { + var buf: [4]u8 = undefined; + const written = std.unicode.utf8Encode(c, &buf) catch unreachable; + const encoded = buf[0..written]; + p.retained_strings.appendSliceAssumeCapacity(encoded); + }, + .@"2" => { + var utf16_buf: [2]u16 = undefined; + var utf8_buf: [4]u8 = undefined; + const utf8_written = std.unicode.utf8Encode(c, &utf8_buf) catch unreachable; + const utf16_written = std.unicode.utf8ToUtf16Le(&utf16_buf, utf8_buf[0..utf8_written]) catch unreachable; + const bytes = std.mem.sliceAsBytes(utf16_buf[0..utf16_written]); + p.retained_strings.appendSliceAssumeCapacity(bytes); + }, + .@"4" => { + const val: u32 = c; + p.retained_strings.appendSliceAssumeCapacity(mem.asBytes(&val)); + }, + } }, - .string_literal_wide => if (width) |some| { - if (some != 1) try p.err(.unsupported_str_cat); - } else { - width = 1; + .improperly_encoded => |bytes| p.retained_strings.appendSliceAssumeCapacity(bytes), + .utf8_text => |view| { + switch (char_width) { + .@"1" => p.retained_strings.appendSliceAssumeCapacity(view.bytes), + .@"2" => { + var capacity_slice: []align(@alignOf(u16)) u8 = @alignCast(p.retained_strings.unusedCapacitySlice()); + const dest_len = std.mem.alignBackward(usize, capacity_slice.len, 2); + var dest = std.mem.bytesAsSlice(u16, capacity_slice[0..dest_len]); + const words_written = std.unicode.utf8ToUtf16Le(dest, view.bytes) catch unreachable; + p.retained_strings.resize(p.retained_strings.items.len + words_written * 2) catch unreachable; + }, + .@"4" => { + var it = view.iterator(); + while (it.nextCodepoint()) |codepoint| { + const val: u32 = codepoint; + p.retained_strings.appendSliceAssumeCapacity(mem.asBytes(&val)); + } + }, + } }, - else => break, - } - p.tok_i += 1; - } - if (width == null) width = 8; - if (width.? != 8) return p.todo("unicode string literals"); - - const string_start = p.retained_strings.items.len; - while (start < p.tok_i) : (start += 1) { - var slice = p.tokSlice(start); - slice = slice[0 .. slice.len - 1]; - var i = mem.indexOf(u8, slice, "\"").? + 1; - try p.retained_strings.ensureUnusedCapacity(slice.len); - while (i < slice.len) : (i += 1) { - switch (slice[i]) { - '\\' => { - i += 1; - switch (slice[i]) { - '\n' => i += 1, - '\r' => i += 2, - '\'', '\"', '\\', '?' => |c| p.retained_strings.appendAssumeCapacity(c), - 'n' => p.retained_strings.appendAssumeCapacity('\n'), - 'r' => p.retained_strings.appendAssumeCapacity('\r'), - 't' => p.retained_strings.appendAssumeCapacity('\t'), - 'a' => p.retained_strings.appendAssumeCapacity(0x07), - 'b' => p.retained_strings.appendAssumeCapacity(0x08), - 'e' => { - try p.errExtra(.non_standard_escape_char, start, .{ .invalid_escape = .{ .char = 'e', .offset = @intCast(i) } }); - p.retained_strings.appendAssumeCapacity(0x1B); - }, - 'f' => p.retained_strings.appendAssumeCapacity(0x0C), - 'v' => p.retained_strings.appendAssumeCapacity(0x0B), - 'x' => p.retained_strings.appendAssumeCapacity(try p.parseNumberEscape(start, 16, slice, &i)), - '0'...'7' => p.retained_strings.appendAssumeCapacity(try p.parseNumberEscape(start, 8, slice, &i)), - 'u' => try p.parseUnicodeEscape(start, 4, slice, &i), - 'U' => try p.parseUnicodeEscape(start, 8, slice, &i), - else => unreachable, - } - }, - else => |c| p.retained_strings.appendAssumeCapacity(c), - } + }; + for (char_literal_parser.errors.constSlice()) |item| { + try p.errExtra(item.tag, p.tok_i, item.extra); } } - try p.retained_strings.append(0); - const slice = p.retained_strings.items[string_start..]; + p.retained_strings.appendNTimesAssumeCapacity(0, @intFromEnum(char_width)); + const slice = p.retained_strings.items[retain_start..]; const arr_ty = try p.arena.create(Type.Array); - const specifier: Type.Specifier = if (is_u8_literal and p.comp.langopts.hasChar8_T()) .uchar else .char; - - arr_ty.* = .{ .elem = .{ .specifier = specifier }, .len = slice.len }; + arr_ty.* = .{ .elem = string_kind.elementType(p.comp), .len = @divExact(slice.len, @intFromEnum(char_width)) }; var res: Result = .{ .ty = .{ .specifier = .array, .data = .{ .array = arr_ty }, }, - .val = Value.bytes(@intCast(string_start), @intCast(p.retained_strings.items.len)), + .val = Value.bytes(@intCast(retain_start), @intCast(p.retained_strings.items.len)), }; res.node = try p.addNode(.{ .tag = .string_literal_expr, .ty = res.ty, .data = undefined }); if (!p.in_macro) try p.value_map.put(res.node, res.val); return res; } -fn parseNumberEscape(p: *Parser, tok: TokenIndex, base: u8, slice: []const u8, i: *usize) !u8 { - if (base == 16) i.* += 1; // skip x - var char: u8 = 0; - var reported = false; - while (i.* < slice.len) : (i.* += 1) { - const val = std.fmt.charToDigit(slice[i.*], base) catch break; // validated by Tokenizer - const product, const overflowed = @mulWithOverflow(char, base); - if (overflowed != 0 and !reported) { - try p.errExtra(.escape_sequence_overflow, tok, .{ .unsigned = i.* }); - reported = true; - } - char = product + val; - } - i.* -= 1; - return char; -} - -fn parseUnicodeEscape(p: *Parser, tok: TokenIndex, count: u8, slice: []const u8, i: *usize) !void { - const c = std.fmt.parseInt(u21, slice[i.* + 1 ..][0..count], 16) catch 0x110000; // count validated by tokenizer - i.* += count + 1; - if (!std.unicode.utf8ValidCodepoint(c) or (c < 0xa0 and c != '$' and c != '@' and c != '`')) { - try p.errExtra(.invalid_universal_character, tok, .{ .unsigned = i.* - count - 2 }); - return; - } - var buf: [4]u8 = undefined; - const to_write = std.unicode.utf8Encode(c, &buf) catch unreachable; // validated above - p.retained_strings.appendSliceAssumeCapacity(buf[0..to_write]); -} - fn charLiteral(p: *Parser) Error!Result { defer p.tok_i += 1; const tok_id = p.tok_ids[p.tok_i]; - const char_kind = CharLiteral.Kind.classify(tok_id); + const char_kind = TextLiteral.Kind.classify(tok_id, .char_literal) orelse { + if (tok_id == .empty_char_literal) { + try p.err(.empty_char_literal_error); + } else if (tok_id == .unterminated_char_literal) { + try p.err(.unterminated_char_literal_error); + } else unreachable; + return .{ + .ty = Type.int, + .val = Value.int(0), + .node = try p.addNode(.{ .tag = .char_literal, .ty = Type.int, .data = undefined }), + }; + }; var val: u32 = 0; const slice = char_kind.contentSlice(p.tokSlice(p.tok_i)); @@ -7655,7 +7658,8 @@ fn charLiteral(p: *Parser) Error!Result { // fast path: single unescaped ASCII char val = slice[0]; } else { - var char_literal_parser = CharLiteral.Parser.init(slice, char_kind, p.comp); + const max_codepoint = char_kind.maxCodepoint(p.comp); + var char_literal_parser = TextLiteral.Parser.init(slice, char_kind, max_codepoint, p.comp); const max_chars_expected = 4; var stack_fallback = std.heap.stackFallback(max_chars_expected * @sizeOf(u32), p.comp.gpa); @@ -7663,20 +7667,21 @@ fn charLiteral(p: *Parser) Error!Result { defer chars.deinit(); while (char_literal_parser.next()) |item| switch (item) { - .value => |c| try chars.append(c), + .value => |v| try chars.append(v), + .codepoint => |c| try chars.append(c), .improperly_encoded => |s| { try chars.ensureUnusedCapacity(s.len); for (s) |c| chars.appendAssumeCapacity(c); }, .utf8_text => |view| { var it = view.iterator(); - var max_codepoint: u21 = 0; + var max_codepoint_seen: u21 = 0; try chars.ensureUnusedCapacity(view.bytes.len); while (it.nextCodepoint()) |c| { - max_codepoint = @max(max_codepoint, c); + max_codepoint_seen = @max(max_codepoint_seen, c); chars.appendAssumeCapacity(c); } - if (max_codepoint > char_kind.maxCodepoint(p.comp)) { + if (max_codepoint_seen > max_codepoint) { char_literal_parser.err(.char_too_large, .{ .none = {} }); } }, diff --git a/deps/aro/Preprocessor.zig b/deps/aro/Preprocessor.zig index ca1b41cee4..b0e28f9e8c 100644 --- a/deps/aro/Preprocessor.zig +++ b/deps/aro/Preprocessor.zig @@ -266,6 +266,15 @@ pub fn addIncludeResume(pp: *Preprocessor, source: Source.Id, offset: u32, line: } }); } +fn invalidTokenDiagnostic(tok_id: Token.Id) Diagnostics.Tag { + return switch (tok_id) { + .unterminated_string_literal => .unterminated_string_literal_warning, + .empty_char_literal => .empty_char_literal_warning, + .unterminated_char_literal => .unterminated_char_literal_warning, + else => unreachable, + }; +} + /// Return the name of the #ifndef guard macro that starts a source, if any. fn findIncludeGuard(pp: *Preprocessor, source: Source) ?[]const u8 { var tokenizer = Tokenizer{ @@ -631,6 +640,12 @@ fn preprocessExtra(pp: *Preprocessor, source: Source) MacroError!Token { } return tokFromRaw(tok); }, + .unterminated_string_literal, .unterminated_char_literal, .empty_char_literal => |tag| { + start_of_line = false; + try pp.err(tok, invalidTokenDiagnostic(tag)); + try pp.expandMacro(&tokenizer, tok); + }, + .unterminated_comment => try pp.err(tok, .unterminated_comment), else => { if (tok.id.isMacroIdentifier() and pp.poisoned_identifiers.get(pp.tokSlice(tok)) != null) { try pp.err(tok, .poisoned_identifier); @@ -1239,7 +1254,7 @@ fn reconstructIncludeString(pp: *Preprocessor, param_toks: []const Token) !?[]co } for (params) |tok| { - const str = pp.expandedSliceExtra(tok, .preserve_macro_ws, false); + const str = pp.expandedSliceExtra(tok, .preserve_macro_ws); try pp.char_buf.appendSlice(str); } @@ -1985,12 +2000,7 @@ fn expandMacro(pp: *Preprocessor, tokenizer: *Tokenizer, raw: RawToken) MacroErr } } -fn expandedSliceExtra( - pp: *const Preprocessor, - tok: Token, - macro_ws_handling: enum { single_macro_ws, preserve_macro_ws }, - path_escapes: bool, -) []const u8 { +fn expandedSliceExtra(pp: *const Preprocessor, tok: Token, macro_ws_handling: enum { single_macro_ws, preserve_macro_ws }) []const u8 { if (tok.id.lexeme()) |some| { if (!tok.id.allowsDigraphs(pp.comp) and !(tok.id == .macro_ws and macro_ws_handling == .preserve_macro_ws)) return some; } @@ -1999,7 +2009,6 @@ fn expandedSliceExtra( .comp = pp.comp, .index = tok.loc.byte_offset, .source = .generated, - .path_escapes = path_escapes, }; if (tok.id == .macro_string) { while (true) : (tmp_tokenizer.index += 1) { @@ -2013,7 +2022,7 @@ fn expandedSliceExtra( /// Get expanded token source string. pub fn expandedSlice(pp: *Preprocessor, tok: Token) []const u8 { - return pp.expandedSliceExtra(tok, .single_macro_ws, false); + return pp.expandedSliceExtra(tok, .single_macro_ws); } /// Concat two tokens and add the result to pp.generated @@ -2182,6 +2191,11 @@ fn define(pp: *Preprocessor, tokenizer: *Tokenizer) Error!void { try pp.token_buf.append(tok); }, .whitespace => need_ws = true, + .unterminated_string_literal, .unterminated_char_literal, .empty_char_literal => |tag| { + try pp.err(tok, invalidTokenDiagnostic(tag)); + try pp.token_buf.append(tok); + }, + .unterminated_comment => try pp.err(tok, .unterminated_comment), else => { if (tok.id != .whitespace and need_ws) { need_ws = false; @@ -2323,6 +2337,11 @@ fn defineFn(pp: *Preprocessor, tokenizer: *Tokenizer, macro_name: RawToken, l_pa } try pp.token_buf.append(tok); }, + .unterminated_string_literal, .unterminated_char_literal, .empty_char_literal => |tag| { + try pp.err(tok, invalidTokenDiagnostic(tag)); + try pp.token_buf.append(tok); + }, + .unterminated_comment => try pp.err(tok, .unterminated_comment), else => { if (tok.id != .whitespace and need_ws) { need_ws = false; @@ -2368,8 +2387,6 @@ fn defineFn(pp: *Preprocessor, tokenizer: *Tokenizer, macro_name: RawToken, l_pa /// Handle an #embed directive fn embed(pp: *Preprocessor, tokenizer: *Tokenizer) MacroError!void { - tokenizer.path_escapes = true; - defer tokenizer.path_escapes = false; const first = tokenizer.nextNoWS(); const filename_tok = pp.findIncludeFilenameToken(first, tokenizer, .expect_nl_eof) catch |er| switch (er) { error.InvalidInclude => return, @@ -2377,7 +2394,7 @@ fn embed(pp: *Preprocessor, tokenizer: *Tokenizer) MacroError!void { }; // Check for empty filename. - const tok_slice = pp.expandedSliceExtra(filename_tok, .single_macro_ws, true); + const tok_slice = pp.expandedSliceExtra(filename_tok, .single_macro_ws); if (tok_slice.len < 3) { try pp.err(first, .empty_filename); return; @@ -2419,8 +2436,6 @@ fn embed(pp: *Preprocessor, tokenizer: *Tokenizer) MacroError!void { // Handle a #include directive. fn include(pp: *Preprocessor, tokenizer: *Tokenizer, which: Compilation.WhichInclude) MacroError!void { - tokenizer.path_escapes = true; - defer tokenizer.path_escapes = false; const first = tokenizer.nextNoWS(); const new_source = findIncludeSource(pp, tokenizer, first, which) catch |er| switch (er) { error.InvalidInclude => return, @@ -2586,7 +2601,7 @@ fn findIncludeSource(pp: *Preprocessor, tokenizer: *Tokenizer, first: RawToken, const filename_tok = try pp.findIncludeFilenameToken(first, tokenizer, .expect_nl_eof); // Check for empty filename. - const tok_slice = pp.expandedSliceExtra(filename_tok, .single_macro_ws, true); + const tok_slice = pp.expandedSliceExtra(filename_tok, .single_macro_ws); if (tok_slice.len < 3) { try pp.err(first, .empty_filename); return error.InvalidInclude; diff --git a/deps/aro/Source.zig b/deps/aro/Source.zig index c7f401cf83..6986f88b23 100644 --- a/deps/aro/Source.zig +++ b/deps/aro/Source.zig @@ -74,7 +74,10 @@ pub fn lineCol(source: Source, loc: Location) LineCol { i += 1; continue; }; - const cp = std.unicode.utf8Decode(source.buf[i..][0..len]) catch unreachable; + const cp = std.unicode.utf8Decode(source.buf[i..][0..len]) catch { + i += 1; + continue; + }; width += codepointWidth(cp); i += len; } diff --git a/deps/aro/SymbolStack.zig b/deps/aro/SymbolStack.zig index eaa5e70330..f45317744a 100644 --- a/deps/aro/SymbolStack.zig +++ b/deps/aro/SymbolStack.zig @@ -197,7 +197,7 @@ pub fn defineSymbol( }, .decl => if (names[i] == name) { const prev_ty = s.syms.items(.ty)[i]; - if (!ty.eql(prev_ty, p.comp, true)) { // TODO adjusted equality check + if (!ty.eql(prev_ty, p.comp, true)) { try p.errStr(.redefinition_incompatible, tok, p.tokSlice(tok)); try p.errTok(.previous_definition, s.syms.items(.tok)[i]); } @@ -243,7 +243,7 @@ pub fn declareSymbol( }, .decl => if (names[i] == name) { const prev_ty = s.syms.items(.ty)[i]; - if (!ty.eql(prev_ty, p.comp, true)) { // TODO adjusted equality check + if (!ty.eql(prev_ty, p.comp, true)) { try p.errStr(.redefinition_incompatible, tok, p.tokSlice(tok)); try p.errTok(.previous_definition, s.syms.items(.tok)[i]); } @@ -251,7 +251,7 @@ pub fn declareSymbol( }, .def, .constexpr => if (names[i] == name) { const prev_ty = s.syms.items(.ty)[i]; - if (!ty.eql(prev_ty, p.comp, true)) { // TODO adjusted equality check + if (!ty.eql(prev_ty, p.comp, true)) { try p.errStr(.redefinition_incompatible, tok, p.tokSlice(tok)); try p.errTok(.previous_definition, s.syms.items(.tok)[i]); break; diff --git a/deps/aro/TextLiteral.zig b/deps/aro/TextLiteral.zig new file mode 100644 index 0000000000..4364a1d815 --- /dev/null +++ b/deps/aro/TextLiteral.zig @@ -0,0 +1,371 @@ +//! Parsing and classification of string and character literals + +const std = @import("std"); +const Compilation = @import("Compilation.zig"); +const Type = @import("Type.zig"); +const Diagnostics = @import("Diagnostics.zig"); +const Tokenizer = @import("Tokenizer.zig"); +const mem = std.mem; + +pub const Item = union(enum) { + /// decoded hex or character escape + value: u32, + /// validated unicode codepoint + codepoint: u21, + /// Char literal in the source text is not utf8 encoded + improperly_encoded: []const u8, + /// 1 or more unescaped bytes + utf8_text: std.unicode.Utf8View, +}; + +const CharDiagnostic = struct { + tag: Diagnostics.Tag, + extra: Diagnostics.Message.Extra, +}; + +pub const Kind = enum { + char, + wide, + utf_8, + utf_16, + utf_32, + /// Error kind that halts parsing + unterminated, + + pub fn classify(id: Tokenizer.Token.Id, context: enum { string_literal, char_literal }) ?Kind { + return switch (context) { + .string_literal => switch (id) { + .string_literal => .char, + .string_literal_utf_8 => .utf_8, + .string_literal_wide => .wide, + .string_literal_utf_16 => .utf_16, + .string_literal_utf_32 => .utf_32, + .unterminated_string_literal => .unterminated, + else => null, + }, + .char_literal => switch (id) { + .char_literal => .char, + .char_literal_utf_8 => .utf_8, + .char_literal_wide => .wide, + .char_literal_utf_16 => .utf_16, + .char_literal_utf_32 => .utf_32, + else => null, + }, + }; + } + + /// Should only be called for string literals. Determines the result kind of two adjacent string + /// literals + pub fn concat(self: Kind, other: Kind) !Kind { + if (self == .unterminated or other == .unterminated) return .unterminated; + if (self == other) return self; // can always concat with own kind + if (self == .char) return other; // char + X -> X + if (other == .char) return self; // X + char -> X + return error.CannotConcat; + } + + /// Largest unicode codepoint that can be represented by this character kind + /// May be smaller than the largest value that can be represented. + /// For example u8 char literals may only specify 0-127 via literals or + /// character escapes, but may specify up to \xFF via hex escapes. + pub fn maxCodepoint(kind: Kind, comp: *const Compilation) u21 { + return @intCast(switch (kind) { + .char => std.math.maxInt(u7), + .wide => @min(0x10FFFF, comp.types.wchar.maxInt(comp)), + .utf_8 => std.math.maxInt(u7), + .utf_16 => std.math.maxInt(u16), + .utf_32 => 0x10FFFF, + .unterminated => unreachable, + }); + } + + /// Largest integer that can be represented by this character kind + pub fn maxInt(kind: Kind, comp: *const Compilation) u32 { + return @intCast(switch (kind) { + .char, .utf_8 => std.math.maxInt(u8), + .wide => comp.types.wchar.maxInt(comp), + .utf_16 => std.math.maxInt(u16), + .utf_32 => std.math.maxInt(u32), + .unterminated => unreachable, + }); + } + + /// The C type of a character literal of this kind + pub fn charLiteralType(kind: Kind, comp: *const Compilation) Type { + return switch (kind) { + .char => Type.int, + .wide => comp.types.wchar, + .utf_8 => .{ .specifier = .uchar }, + .utf_16 => comp.types.uint_least16_t, + .utf_32 => comp.types.uint_least32_t, + .unterminated => unreachable, + }; + } + + /// Return the actual contents of the literal with leading / trailing quotes and + /// specifiers removed + pub fn contentSlice(kind: Kind, delimited: []const u8) []const u8 { + const end = delimited.len - 1; // remove trailing quote + return switch (kind) { + .char => delimited[1..end], + .wide => delimited[2..end], + .utf_8 => delimited[3..end], + .utf_16 => delimited[2..end], + .utf_32 => delimited[2..end], + .unterminated => unreachable, + }; + } + + /// The size of a character unit for a string literal of this kind + pub fn charUnitSize(kind: Kind, comp: *const Compilation) Compilation.CharUnitSize { + return switch (kind) { + .char => .@"1", + .wide => switch (comp.types.wchar.sizeof(comp).?) { + 2 => .@"2", + 4 => .@"4", + else => unreachable, + }, + .utf_8 => .@"1", + .utf_16 => .@"2", + .utf_32 => .@"4", + .unterminated => unreachable, + }; + } + + /// Required alignment within aro (on compiler host) for writing to retained_strings + pub fn internalStorageAlignment(kind: Kind, comp: *const Compilation) usize { + return switch (kind.charUnitSize(comp)) { + inline else => |size| @alignOf(size.Type()), + }; + } + + /// The C type of an element of a string literal of this kind + pub fn elementType(kind: Kind, comp: *const Compilation) Type { + return switch (kind) { + .unterminated => unreachable, + .char => .{ .specifier = .char }, + .utf_8 => if (comp.langopts.hasChar8_T()) .{ .specifier = .uchar } else .{ .specifier = .char }, + else => kind.charLiteralType(comp), + }; + } +}; + +pub const Parser = struct { + literal: []const u8, + i: usize = 0, + kind: Kind, + max_codepoint: u21, + /// We only want to issue a max of 1 error per char literal + errored: bool = false, + errors: std.BoundedArray(CharDiagnostic, 4) = .{}, + comp: *const Compilation, + + pub fn init(literal: []const u8, kind: Kind, max_codepoint: u21, comp: *const Compilation) Parser { + return .{ + .literal = literal, + .comp = comp, + .kind = kind, + .max_codepoint = max_codepoint, + }; + } + + fn prefixLen(self: *const Parser) usize { + return switch (self.kind) { + .unterminated => unreachable, + .char => 0, + .utf_8 => 2, + .wide, .utf_16, .utf_32 => 1, + }; + } + + pub fn err(self: *Parser, tag: Diagnostics.Tag, extra: Diagnostics.Message.Extra) void { + if (self.errored) return; + self.errored = true; + const diagnostic = .{ .tag = tag, .extra = extra }; + self.errors.append(diagnostic) catch { + _ = self.errors.pop(); + self.errors.append(diagnostic) catch unreachable; + }; + } + + pub fn warn(self: *Parser, tag: Diagnostics.Tag, extra: Diagnostics.Message.Extra) void { + if (self.errored) return; + self.errors.append(.{ .tag = tag, .extra = extra }) catch {}; + } + + pub fn next(self: *Parser) ?Item { + if (self.i >= self.literal.len) return null; + + const start = self.i; + if (self.literal[start] != '\\') { + self.i = mem.indexOfScalarPos(u8, self.literal, start + 1, '\\') orelse self.literal.len; + const unescaped_slice = self.literal[start..self.i]; + + const view = std.unicode.Utf8View.init(unescaped_slice) catch { + if (self.kind != .char) { + self.err(.illegal_char_encoding_error, .{ .none = {} }); + return null; + } + self.warn(.illegal_char_encoding_warning, .{ .none = {} }); + return .{ .improperly_encoded = self.literal[start..self.i] }; + }; + return .{ .utf8_text = view }; + } + switch (self.literal[start + 1]) { + 'u', 'U' => return self.parseUnicodeEscape(), + else => return self.parseEscapedChar(), + } + } + + fn parseUnicodeEscape(self: *Parser) ?Item { + const start = self.i; + + std.debug.assert(self.literal[self.i] == '\\'); + + const kind = self.literal[self.i + 1]; + std.debug.assert(kind == 'u' or kind == 'U'); + + self.i += 2; + if (self.i >= self.literal.len or !std.ascii.isHex(self.literal[self.i])) { + self.err(.missing_hex_escape, .{ .ascii = @intCast(kind) }); + return null; + } + const expected_len: usize = if (kind == 'u') 4 else 8; + var overflowed = false; + var count: usize = 0; + var val: u32 = 0; + + for (self.literal[self.i..], 0..) |c, i| { + if (i == expected_len) break; + + const char = std.fmt.charToDigit(c, 16) catch { + break; + }; + + val, const overflow = @shlWithOverflow(val, 4); + overflowed = overflowed or overflow != 0; + val |= char; + count += 1; + } + self.i += expected_len; + + if (overflowed) { + self.err(.escape_sequence_overflow, .{ .unsigned = start + self.prefixLen() }); + return null; + } + + if (count != expected_len) { + self.err(.incomplete_universal_character, .{ .none = {} }); + return null; + } + + if (val > std.math.maxInt(u21) or !std.unicode.utf8ValidCodepoint(@intCast(val))) { + self.err(.invalid_universal_character, .{ .unsigned = start + self.prefixLen() }); + return null; + } + + if (val > self.max_codepoint) { + self.err(.char_too_large, .{ .none = {} }); + return null; + } + + if (val < 0xA0 and (val != '$' and val != '@' and val != '`')) { + const is_error = !self.comp.langopts.standard.atLeast(.c2x); + if (val >= 0x20 and val <= 0x7F) { + if (is_error) { + self.err(.ucn_basic_char_error, .{ .ascii = @intCast(val) }); + } else { + self.warn(.ucn_basic_char_warning, .{ .ascii = @intCast(val) }); + } + } else { + if (is_error) { + self.err(.ucn_control_char_error, .{ .none = {} }); + } else { + self.warn(.ucn_control_char_warning, .{ .none = {} }); + } + } + } + + self.warn(.c89_ucn_in_literal, .{ .none = {} }); + return .{ .codepoint = @intCast(val) }; + } + + fn parseEscapedChar(self: *Parser) Item { + self.i += 1; + const c = self.literal[self.i]; + defer if (c != 'x' and (c < '0' or c > '7')) { + self.i += 1; + }; + + switch (c) { + '\n' => unreachable, // removed by line splicing + '\r' => unreachable, // removed by line splicing + '\'', '\"', '\\', '?' => return .{ .value = c }, + 'n' => return .{ .value = '\n' }, + 'r' => return .{ .value = '\r' }, + 't' => return .{ .value = '\t' }, + 'a' => return .{ .value = 0x07 }, + 'b' => return .{ .value = 0x08 }, + 'e', 'E' => { + self.warn(.non_standard_escape_char, .{ .invalid_escape = .{ .char = c, .offset = @intCast(self.i) } }); + return .{ .value = 0x1B }; + }, + '(', '{', '[', '%' => { + self.warn(.non_standard_escape_char, .{ .invalid_escape = .{ .char = c, .offset = @intCast(self.i) } }); + return .{ .value = c }; + }, + 'f' => return .{ .value = 0x0C }, + 'v' => return .{ .value = 0x0B }, + 'x' => return .{ .value = self.parseNumberEscape(.hex) }, + '0'...'7' => return .{ .value = self.parseNumberEscape(.octal) }, + 'u', 'U' => unreachable, // handled by parseUnicodeEscape + else => { + self.warn(.unknown_escape_sequence, .{ .invalid_escape = .{ .char = c, .offset = @intCast(self.i) } }); + return .{ .value = c }; + }, + } + } + + fn parseNumberEscape(self: *Parser, base: EscapeBase) u32 { + var val: u32 = 0; + var count: usize = 0; + var overflowed = false; + const start = self.i; + defer self.i += count; + const slice = switch (base) { + .octal => self.literal[self.i..@min(self.literal.len, self.i + 3)], // max 3 chars + .hex => blk: { + self.i += 1; + break :blk self.literal[self.i..]; // skip over 'x'; could have an arbitrary number of chars + }, + }; + for (slice) |c| { + const char = std.fmt.charToDigit(c, @intFromEnum(base)) catch break; + val, const overflow = @shlWithOverflow(val, base.log2()); + if (overflow != 0) overflowed = true; + val += char; + count += 1; + } + if (overflowed or val > self.kind.maxInt(self.comp)) { + self.err(.escape_sequence_overflow, .{ .unsigned = start + self.prefixLen() }); + return 0; + } + if (count == 0) { + std.debug.assert(base == .hex); + self.err(.missing_hex_escape, .{ .ascii = 'x' }); + } + return val; + } +}; + +const EscapeBase = enum(u8) { + octal = 8, + hex = 16, + + fn log2(base: EscapeBase) u4 { + return switch (base) { + .octal => 3, + .hex => 4, + }; + } +}; diff --git a/deps/aro/Tokenizer.zig b/deps/aro/Tokenizer.zig index 4e37d76470..3c9a85a0ce 100644 --- a/deps/aro/Tokenizer.zig +++ b/deps/aro/Tokenizer.zig @@ -30,6 +30,10 @@ pub const Token = struct { string_literal_utf_32, string_literal_wide, + /// Any string literal with an embedded newline or EOF + /// Always a parser error; by default just a warning from preprocessor + unterminated_string_literal, + // only generated by preprocessor macro_string, @@ -40,6 +44,17 @@ pub const Token = struct { char_literal_utf_32, char_literal_wide, + /// Any character literal with nothing inside the quotes + /// Always a parser error; by default just a warning from preprocessor + empty_char_literal, + + /// Any character literal with an embedded newline or EOF + /// Always a parser error; by default just a warning from preprocessor + unterminated_char_literal, + + /// `/* */` style comment without a closing `*/` before EOF + unterminated_comment, + /// Integer literal tokens generated by preprocessor. one, zero, @@ -470,6 +485,7 @@ pub const Token = struct { return switch (id) { .include_start, .include_resume, + .unterminated_comment, // Fatal error; parsing should not be attempted => unreachable, .invalid, @@ -480,6 +496,9 @@ pub const Token = struct { .string_literal_utf_8, .string_literal_utf_32, .string_literal_wide, + .unterminated_string_literal, + .unterminated_char_literal, + .empty_char_literal, .char_literal, .char_literal_utf_8, .char_literal_utf_16, @@ -984,8 +1003,6 @@ index: u32 = 0, source: Source.Id, comp: *const Compilation, line: u32 = 1, -/// Used to parse include strings with Windows style paths. -path_escapes: bool = false, pub fn next(self: *Tokenizer) Token { var state: enum { @@ -996,14 +1013,10 @@ pub fn next(self: *Tokenizer) Token { U, L, string_literal, - path_escape, char_literal_start, char_literal, char_escape_sequence, - escape_sequence, - octal_escape, - hex_escape, - unicode_escape, + string_escape_sequence, identifier, extended_identifier, equal, @@ -1038,8 +1051,6 @@ pub fn next(self: *Tokenizer) Token { var start = self.index; var id: Token.Id = .eof; - var return_state = state; - var counter: u32 = 0; while (self.index < self.buf.len) : (self.index += 1) { const c = self.buf[self.index]; switch (state) { @@ -1219,29 +1230,30 @@ pub fn next(self: *Tokenizer) Token { }, .string_literal => switch (c) { '\\' => { - return_state = .string_literal; - state = if (self.path_escapes) .path_escape else .escape_sequence; + state = .string_escape_sequence; }, '"' => { self.index += 1; break; }, '\n' => { - id = .invalid; + id = .unterminated_string_literal; break; }, '\r' => unreachable, else => {}, }, - .path_escape => { - state = .string_literal; - }, .char_literal_start => switch (c) { '\\' => { state = .char_escape_sequence; }, - '\'', '\n' => { - id = .invalid; + '\'' => { + id = .empty_char_literal; + self.index += 1; + break; + }, + '\n' => { + id = .unterminated_char_literal; break; }, else => { @@ -1257,7 +1269,7 @@ pub fn next(self: *Tokenizer) Token { break; }, '\n' => { - id = .invalid; + id = .unterminated_char_literal; break; }, else => {}, @@ -1266,55 +1278,9 @@ pub fn next(self: *Tokenizer) Token { '\r', '\n' => unreachable, // removed by line splicing else => state = .char_literal, }, - .escape_sequence => switch (c) { - '\'', '"', '?', '\\', 'a', 'b', 'e', 'f', 'n', 'r', 't', 'v' => { - state = return_state; - }, + .string_escape_sequence => switch (c) { '\r', '\n' => unreachable, // removed by line splicing - '0'...'7' => { - counter = 1; - state = .octal_escape; - }, - 'x' => state = .hex_escape, - 'u' => { - counter = 4; - state = .unicode_escape; - }, - 'U' => { - counter = 8; - state = .unicode_escape; - }, - else => { - id = .invalid; - break; - }, - }, - .octal_escape => switch (c) { - '0'...'7' => { - counter += 1; - if (counter == 3) state = return_state; - }, - else => { - self.index -= 1; - state = return_state; - }, - }, - .hex_escape => switch (c) { - '0'...'9', 'a'...'f', 'A'...'F' => {}, - else => { - self.index -= 1; - state = return_state; - }, - }, - .unicode_escape => switch (c) { - '0'...'9', 'a'...'f', 'A'...'F' => { - counter -= 1; - if (counter == 0) state = return_state; - }, - else => { - id = .invalid; - break; - }, + else => state = .string_literal, }, .identifier, .extended_identifier => switch (c) { 'a'...'z', 'A'...'Z', '_', '0'...'9' => {}, @@ -1732,19 +1698,18 @@ pub fn next(self: *Tokenizer) Token { .start, .line_comment => {}, .u, .u8, .U, .L, .identifier => id = Token.getTokenId(self.comp, self.buf[start..self.index]), .extended_identifier => id = .extended_identifier, - .period2, - .string_literal, - .path_escape, - .char_literal_start, - .char_literal, - .escape_sequence, - .char_escape_sequence, - .octal_escape, - .hex_escape, - .unicode_escape, + + .period2 => { + self.index -= 1; + id = .period; + }, + .multi_line_comment, .multi_line_comment_asterisk, - => id = .invalid, + => id = .unterminated_comment, + + .char_escape_sequence, .char_literal, .char_literal_start => id = .unterminated_char_literal, + .string_escape_sequence, .string_literal => id = .unterminated_string_literal, .whitespace => id = .whitespace, .multi_line_comment_done => id = .whitespace, @@ -2114,7 +2079,7 @@ test "extended identifiers" { try expectTokens("0x0\u{E0000}", &.{ .pp_num, .extended_identifier }); try expectTokens("\"\\0\u{E0000}\"", &.{.string_literal}); try expectTokens("\"\\x\u{E0000}\"", &.{.string_literal}); - try expectTokens("\"\\u\u{E0000}\"", &.{ .invalid, .extended_identifier, .invalid }); + try expectTokens("\"\\u\u{E0000}\"", &.{.string_literal}); try expectTokens("1e\u{E0000}", &.{ .pp_num, .extended_identifier }); try expectTokens("1e1\u{E0000}", &.{ .pp_num, .extended_identifier }); } diff --git a/deps/aro/Tree.zig b/deps/aro/Tree.zig index 257fd7dd6a..f633501440 100644 --- a/deps/aro/Tree.zig +++ b/deps/aro/Tree.zig @@ -6,7 +6,6 @@ const Source = @import("Source.zig"); const Attribute = @import("Attribute.zig"); const Value = @import("Value.zig"); const StringInterner = @import("StringInterner.zig"); -const BuiltinFunction = @import("builtins/BuiltinFunction.zig"); const Tree = @This(); @@ -657,17 +656,6 @@ pub fn isLvalExtra(nodes: Node.List.Slice, extra: []const NodeIndex, value_map: } } -pub fn dumpStr(retained_strings: []const u8, range: Value.ByteRange, tag: Tag, writer: anytype) !void { - switch (tag) { - .string_literal_expr => { - const lit_range = range.trim(1); // remove null-terminator - const str = lit_range.slice(retained_strings); - try writer.print("\"{}\"", .{std.zig.fmtEscapes(str)}); - }, - else => unreachable, - } -} - pub fn tokSlice(tree: Tree, tok_i: TokenIndex) []const u8 { if (tree.tokens.items(.id)[tok_i].lexeme()) |some| return some; const loc = tree.tokens.items(.loc)[tok_i]; @@ -703,12 +691,13 @@ fn dumpAttribute(attr: Attribute, strings: []const u8, writer: anytype) !void { switch (attr.tag) { inline else => |tag| { const args = @field(attr.args, @tagName(tag)); - if (@TypeOf(args) == void) { + const fields = @typeInfo(@TypeOf(args)).Struct.fields; + if (fields.len == 0) { try writer.writeByte('\n'); return; } try writer.writeByte(' '); - inline for (@typeInfo(@TypeOf(args)).Struct.fields, 0..) |f, i| { + inline for (fields, 0..) |f, i| { if (comptime std.mem.eql(u8, f.name, "__name_tok")) continue; if (i != 0) { try writer.writeAll(", "); @@ -716,8 +705,8 @@ fn dumpAttribute(attr: Attribute, strings: []const u8, writer: anytype) !void { try writer.writeAll(f.name); try writer.writeAll(": "); switch (f.type) { - Value.ByteRange => try writer.print("\"{s}\"", .{@field(args, f.name).slice(strings)}), - ?Value.ByteRange => try writer.print("\"{?s}\"", .{if (@field(args, f.name)) |range| range.slice(strings) else null}), + Value.ByteRange => try writer.print("\"{s}\"", .{@field(args, f.name).slice(strings, .@"1")}), + ?Value.ByteRange => try writer.print("\"{?s}\"", .{if (@field(args, f.name)) |range| range.slice(strings, .@"1") else null}), else => switch (@typeInfo(f.type)) { .Enum => try writer.writeAll(@tagName(@field(args, f.name))), else => try writer.print("{any}", .{@field(args, f.name)}), diff --git a/deps/aro/Type.zig b/deps/aro/Type.zig index c7d5e5efed..f844e474a3 100644 --- a/deps/aro/Type.zig +++ b/deps/aro/Type.zig @@ -9,7 +9,6 @@ const StringInterner = @import("StringInterner.zig"); const StringId = StringInterner.StringId; const target_util = @import("target.zig"); const LangOpts = @import("LangOpts.zig"); -const BuiltinFunction = @import("builtins/BuiltinFunction.zig"); const Type = @This(); @@ -104,6 +103,35 @@ pub const Func = struct { name: StringId, name_tok: TokenIndex, }; + + fn eql(a: *const Func, b: *const Func, a_var_args: bool, b_var_args: bool, comp: *const Compilation) bool { + // return type cannot have qualifiers + if (!a.return_type.eql(b.return_type, comp, false)) return false; + + if (a.params.len != b.params.len) { + const a_no_proto = a_var_args and a.params.len == 0 and !comp.langopts.standard.atLeast(.c2x); + const b_no_proto = b_var_args and b.params.len == 0 and !comp.langopts.standard.atLeast(.c2x); + if (a_no_proto or b_no_proto) { + const maybe_has_params = if (a_no_proto) b else a; + for (maybe_has_params.params) |param| { + if (param.ty.undergoesDefaultArgPromotion(comp)) return false; + } + return true; + } + } + if (a_var_args != b_var_args) return false; + // TODO validate this + for (a.params, b.params) |param, b_qual| { + var a_unqual = param.ty; + a_unqual.qual.@"const" = false; + a_unqual.qual.@"volatile" = false; + var b_unqual = b_qual.ty; + b_unqual.qual.@"const" = false; + b_unqual.qual.@"volatile" = false; + if (!a_unqual.eql(b_unqual, comp, true)) return false; + } + return true; + } }; pub const Array = struct { @@ -448,6 +476,22 @@ pub fn isArray(ty: Type) bool { }; } +/// Whether the type is promoted if used as a variadic argument or as an argument to a function with no prototype +fn undergoesDefaultArgPromotion(ty: Type, comp: *const Compilation) bool { + return switch (ty.specifier) { + .bool => true, + .char, .uchar, .schar => true, + .short, .ushort => true, + .@"enum" => if (comp.langopts.emulate == .clang) ty.data.@"enum".isIncomplete() else false, + .float => true, + + .typeof_type => ty.data.sub_type.undergoesDefaultArgPromotion(comp), + .typeof_expr => ty.data.expr.ty.undergoesDefaultArgPromotion(comp), + .attributed => ty.data.attributed.base.undergoesDefaultArgPromotion(comp), + else => false, + }; +} + pub fn isScalar(ty: Type) bool { return ty.isInt() or ty.isScalarNonInt(); } @@ -1195,31 +1239,6 @@ pub fn annotationAlignment(comp: *const Compilation, attrs: ?[]const Attribute) return max_requested; } -/// Checks type compatibility for __builtin_types_compatible_p -/// Returns true if the unqualified version of `a_param` and `b_param` are the same -/// Ignores top-level qualifiers (e.g. `int` and `const int` are compatible) but `int *` and `const int *` are not -/// Two types that are typedefed are considered compatible if their underlying types are compatible. -/// An enum type is not considered to be compatible with another enum type even if both are compatible with the same integer type; -/// `A[]` and `A[N]` for a type `A` and integer `N` are compatible -pub fn compatible(a_param: Type, b_param: Type, comp: *const Compilation) bool { - var a_unqual = a_param.canonicalize(.standard); - a_unqual.qual.@"const" = false; - a_unqual.qual.@"volatile" = false; - var b_unqual = b_param.canonicalize(.standard); - b_unqual.qual.@"const" = false; - b_unqual.qual.@"volatile" = false; - - if (a_unqual.eql(b_unqual, comp, true)) return true; - if (!a_unqual.isArray() or !b_unqual.isArray()) return false; - - if (a_unqual.arrayLen() == null or b_unqual.arrayLen() == null) { - // incomplete arrays are compatible with arrays of the same element type - // GCC and clang ignore cv-qualifiers on arrays - return a_unqual.elemType().compatible(b_unqual.elemType(), comp); - } - return false; -} - pub fn eql(a_param: Type, b_param: Type, comp: *const Compilation, check_qualifiers: bool) bool { const a = a_param.canonicalize(.standard); const b = b_param.canonicalize(.standard); @@ -1252,29 +1271,21 @@ pub fn eql(a_param: Type, b_param: Type, comp: *const Compilation, check_qualifi .func, .var_args_func, .old_style_func, - => { - // TODO validate this - if (a.data.func.params.len != b.data.func.params.len) return false; - // return type cannot have qualifiers - if (!a.returnType().eql(b.returnType(), comp, false)) return false; - for (a.data.func.params, b.data.func.params) |param, b_qual| { - var a_unqual = param.ty; - a_unqual.qual.@"const" = false; - a_unqual.qual.@"volatile" = false; - var b_unqual = b_qual.ty; - b_unqual.qual.@"const" = false; - b_unqual.qual.@"volatile" = false; - if (!a_unqual.eql(b_unqual, comp, check_qualifiers)) return false; - } - }, + => if (!a.data.func.eql(b.data.func, a.specifier == .var_args_func, b.specifier == .var_args_func, comp)) return false, .array, .static_array, .incomplete_array, .vector, => { - if (!std.meta.eql(a.arrayLen(), b.arrayLen())) return false; - if (!a.elemType().eql(b.elemType(), comp, check_qualifiers)) return false; + const a_len = a.arrayLen(); + const b_len = b.arrayLen(); + if (a_len == null or b_len == null) { + // At least one array is incomplete; only check child type for equality + } else if (a_len.? != b_len.?) { + return false; + } + if (!a.elemType().eql(b.elemType(), comp, false)) return false; }, .variable_len_array => if (!a.elemType().eql(b.elemType(), comp, check_qualifiers)) return false, diff --git a/deps/aro/Value.zig b/deps/aro/Value.zig index 58a058c33e..1577db9353 100644 --- a/deps/aro/Value.zig +++ b/deps/aro/Value.zig @@ -18,8 +18,40 @@ pub const ByteRange = struct { return .{ .start = self.start, .end = self.end - amount }; } - pub fn slice(self: ByteRange, all_bytes: []const u8) []const u8 { - return all_bytes[self.start..self.end]; + pub fn slice(self: ByteRange, all_bytes: []const u8, comptime size: Compilation.CharUnitSize) []const size.Type() { + switch (size) { + inline else => |sz| { + const aligned: []align(@alignOf(sz.Type())) const u8 = @alignCast(all_bytes[self.start..self.end]); + return std.mem.bytesAsSlice(sz.Type(), aligned); + }, + } + } + + pub fn dumpString(range: ByteRange, ty: Type, comp: *const Compilation, strings: []const u8, w: anytype) !void { + const size: Compilation.CharUnitSize = @enumFromInt(ty.elemType().sizeof(comp).?); + const without_null = range.trim(@intFromEnum(size)); + switch (size) { + inline .@"1", .@"2" => |sz| { + const data_slice = without_null.slice(strings, sz); + const formatter = if (sz == .@"1") std.zig.fmtEscapes(data_slice) else std.unicode.fmtUtf16le(data_slice); + try w.print("\"{}\"", .{formatter}); + }, + .@"4" => { + try w.writeByte('"'); + const data_slice = without_null.slice(strings, .@"4"); + var buf: [4]u8 = undefined; + for (data_slice) |item| { + if (item <= std.math.maxInt(u21) and std.unicode.utf8ValidCodepoint(@intCast(item))) { + const codepoint: u21 = @intCast(item); + const written = std.unicode.utf8Encode(codepoint, &buf) catch unreachable; + try w.print("{s}", .{buf[0..written]}); + } else { + try w.print("\\x{x}", .{item}); + } + } + try w.writeByte('"'); + }, + } } }; @@ -593,7 +625,7 @@ pub fn dump(v: Value, ty: Type, comp: *Compilation, strings: []const u8, w: anyt } else { try w.print("{d}", .{v.signExtend(ty, comp)}); }, - .bytes => try w.print("\"{s}\"", .{v.data.bytes.slice(strings)}), + .bytes => try v.data.bytes.dumpString(ty, comp, strings, w), // std.fmt does @as instead of @floatCast .float => try w.print("{d}", .{@as(f64, @floatCast(v.data.float))}), else => try w.print("({s})", .{@tagName(v.tag)}), diff --git a/deps/aro/build/GenerateDef.zig b/deps/aro/build/GenerateDef.zig new file mode 100644 index 0000000000..cb2238b542 --- /dev/null +++ b/deps/aro/build/GenerateDef.zig @@ -0,0 +1,641 @@ +const std = @import("std"); +const GenerateDef = @This(); +const Step = std.Build.Step; +const Allocator = std.mem.Allocator; +const GeneratedFile = std.Build.GeneratedFile; + +step: Step, +path: []const u8, +generated_file: GeneratedFile, + +pub const base_id: Step.Id = .custom; + +pub fn add( + owner: *std.Build, + def_file_path: []const u8, + import_path: []const u8, + compile_step: *Step.Compile, + aro_module: *std.Build.Module, +) void { + const self = owner.allocator.create(GenerateDef) catch @panic("OOM"); + + const name = owner.fmt("GenerateDef {s}", .{def_file_path}); + self.* = .{ + .step = Step.init(.{ + .id = base_id, + .name = name, + .owner = owner, + .makeFn = make, + }), + .path = def_file_path, + .generated_file = .{ .step = &self.step }, + }; + + const module = owner.createModule(.{ + .source_file = .{ .generated = &self.generated_file }, + }); + compile_step.addModule(import_path, module); + compile_step.step.dependOn(&self.step); + aro_module.dependencies.put(import_path, module) catch @panic("OOM"); +} + +fn make(step: *Step, prog_node: *std.Progress.Node) !void { + _ = prog_node; + const b = step.owner; + const self = @fieldParentPtr(GenerateDef, "step", step); + const arena = b.allocator; + + var man = b.cache.obtain(); + defer man.deinit(); + + // Random bytes to make GenerateDef unique. Refresh this with new + // random bytes when GenerateDef implementation is modified in a + // non-backwards-compatible way. + man.hash.add(@as(u32, 0xDCC14144)); + + const contents = try b.build_root.handle.readFileAlloc(arena, self.path, std.math.maxInt(u32)); + man.hash.addBytes(contents); + + const out_name = b.fmt("{s}.zig", .{std.fs.path.stem(self.path)}); + if (try step.cacheHit(&man)) { + const digest = man.final(); + self.generated_file.path = try b.cache_root.join(arena, &.{ + "o", &digest, out_name, + }); + return; + } + + const digest = man.final(); + + const sub_path = try std.fs.path.join(arena, &.{ "o", &digest, out_name }); + const sub_path_dirname = std.fs.path.dirname(sub_path).?; + + b.cache_root.handle.makePath(sub_path_dirname) catch |err| { + return step.fail("unable to make path '{}{s}': {s}", .{ + b.cache_root, sub_path_dirname, @errorName(err), + }); + }; + + const output = try self.generate(contents); + b.cache_root.handle.writeFile(sub_path, output) catch |err| { + return step.fail("unable to write file '{}{s}': {s}", .{ + b.cache_root, sub_path, @errorName(err), + }); + }; + + self.generated_file.path = try b.cache_root.join(arena, &.{sub_path}); + try man.writeManifest(); +} + +const Value = struct { + name: []const u8, + properties: []const []const u8, +}; + +fn generate(self: *GenerateDef, input: []const u8) ![]const u8 { + const arena = self.step.owner.allocator; + + var values = std.StringArrayHashMap([]const []const u8).init(arena); + defer values.deinit(); + var properties = std.ArrayList([]const u8).init(arena); + defer properties.deinit(); + var headers = std.ArrayList([]const u8).init(arena); + defer headers.deinit(); + + var value_name: ?[]const u8 = null; + var it = std.mem.tokenizeAny(u8, input, "\r\n"); + while (it.next()) |line_untrimmed| { + const line = std.mem.trim(u8, line_untrimmed, " \t"); + if (line.len == 0 or line[0] == '#') continue; + if (std.mem.startsWith(u8, line, "const ") or std.mem.startsWith(u8, line, "pub const ")) { + try headers.append(line); + continue; + } + if (line[0] == '.') { + if (value_name == null) { + return self.step.fail("property not attached to a value:\n\"{s}\"", .{line}); + } + try properties.append(line); + continue; + } + + if (value_name) |name| { + const old = try values.fetchPut(name, try properties.toOwnedSlice()); + if (old != null) return self.step.fail("duplicate value \"{s}\"", .{name}); + } + value_name = line; + } + + if (value_name) |name| { + const old = try values.fetchPut(name, try properties.toOwnedSlice()); + if (old != null) return self.step.fail("duplicate value \"{s}\"", .{name}); + } + + { + var sorted_list = try arena.dupe([]const u8, values.keys()); + defer arena.free(sorted_list); + std.mem.sort([]const u8, sorted_list, {}, struct { + pub fn lessThan(_: void, a: []const u8, b: []const u8) bool { + return std.mem.lessThan(u8, a, b); + } + }.lessThan); + + var longest_name: usize = 0; + var shortest_name: usize = std.math.maxInt(usize); + + var builder = try DafsaBuilder.init(arena); + defer builder.deinit(); + for (sorted_list) |name| { + try builder.insert(name); + longest_name = @max(name.len, longest_name); + shortest_name = @min(name.len, shortest_name); + } + try builder.finish(); + builder.calcNumbers(); + + // As a sanity check, confirm that the minimal perfect hashing doesn't + // have any collisions + { + var index_set = std.AutoHashMap(usize, void).init(arena); + defer index_set.deinit(); + + for (values.keys()) |name| { + const index = builder.getUniqueIndex(name).?; + const result = try index_set.getOrPut(index); + if (result.found_existing) { + return self.step.fail("clobbered {}, name={s}\n", .{ index, name }); + } + } + } + + var values_array = try arena.alloc(Value, values.count()); + defer arena.free(values_array); + + for (values.keys(), values.values()) |name, props| { + const unique_index = builder.getUniqueIndex(name).?; + const data_index = unique_index - 1; + values_array[data_index] = .{ .name = name, .properties = props }; + } + + var out_buf = std.ArrayList(u8).init(arena); + defer out_buf.deinit(); + const writer = out_buf.writer(); + + try writer.print( + \\//! Autogenerated by GenerateDef from {s}, do not edit + \\ + \\const std = @import("std"); + \\ + \\pub fn with(comptime Properties: type) type {{ + \\return struct {{ + \\ + , .{self.path}); + for (headers.items) |line| { + try writer.print("{s}\n", .{line}); + } + try writer.writeAll( + \\ + \\tag: Tag, + \\properties: Properties, + \\ + \\/// Integer starting at 0 derived from the unique index, + \\/// corresponds with the data array index. + \\pub const Tag = enum(u16) { _ }; + \\ + \\const Self = @This(); + \\ + \\pub fn fromName(name: []const u8) ?@This() { + \\ const data_index = tagFromName(name) orelse return null; + \\ return data[@intFromEnum(data_index)]; + \\} + \\ + \\pub fn tagFromName(name: []const u8) ?Tag { + \\ const unique_index = uniqueIndex(name) orelse return null; + \\ return @enumFromInt(unique_index - 1); + \\} + \\ + \\pub fn fromTag(tag: Tag) @This() { + \\ return data[@intFromEnum(tag)]; + \\} + \\ + \\pub fn nameFromTagIntoBuf(tag: Tag, name_buf: []u8) []u8 { + \\ std.debug.assert(name_buf.len >= longest_name); + \\ const unique_index = @intFromEnum(tag) + 1; + \\ return nameFromUniqueIndex(unique_index, name_buf); + \\} + \\ + \\pub fn nameFromTag(tag: Tag) NameBuf { + \\ var name_buf: NameBuf = undefined; + \\ const unique_index = @intFromEnum(tag) + 1; + \\ const name = nameFromUniqueIndex(unique_index, &name_buf.buf); + \\ name_buf.len = @intCast(name.len); + \\ return name_buf; + \\} + \\ + \\pub const NameBuf = struct { + \\ buf: [longest_name]u8 = undefined, + \\ len: std.math.IntFittingRange(0, longest_name), + \\ + \\ pub fn span(self: *const NameBuf) []const u8 { + \\ return self.buf[0..self.len]; + \\ } + \\}; + \\ + \\pub fn exists(name: []const u8) bool { + \\ if (name.len < shortest_name or name.len > longest_name) return false; + \\ + \\ var index: u16 = 0; + \\ for (name) |c| { + \\ index = findInList(dafsa[index].child_index, c) orelse return false; + \\ } + \\ return dafsa[index].end_of_word; + \\} + \\ + \\ + ); + try writer.print("pub const shortest_name = {};\n", .{shortest_name}); + try writer.print("pub const longest_name = {};\n\n", .{longest_name}); + try writer.writeAll( + \\/// Search siblings of `first_child_index` for the `char` + \\/// If found, returns the index of the node within the `dafsa` array. + \\/// Otherwise, returns `null`. + \\pub fn findInList(first_child_index: u16, char: u8) ?u16 { + \\ var index = first_child_index; + \\ while (true) { + \\ if (dafsa[index].char == char) return index; + \\ if (dafsa[index].end_of_list) return null; + \\ index += 1; + \\ } + \\ unreachable; + \\} + \\ + \\/// Returns a unique (minimal perfect hash) index (starting at 1) for the `name`, + \\/// or null if the name was not found. + \\pub fn uniqueIndex(name: []const u8) ?u16 { + \\ if (name.len < shortest_name or name.len > longest_name) return null; + \\ + \\ var index: u16 = 0; + \\ var node_index: u16 = 0; + \\ + \\ for (name) |c| { + \\ const child_index = findInList(dafsa[node_index].child_index, c) orelse return null; + \\ var sibling_index = dafsa[node_index].child_index; + \\ while (true) { + \\ const sibling_c = dafsa[sibling_index].char; + \\ std.debug.assert(sibling_c != 0); + \\ if (sibling_c < c) { + \\ index += dafsa[sibling_index].number; + \\ } + \\ if (dafsa[sibling_index].end_of_list) break; + \\ sibling_index += 1; + \\ } + \\ node_index = child_index; + \\ if (dafsa[node_index].end_of_word) index += 1; + \\ } + \\ + \\ if (!dafsa[node_index].end_of_word) return null; + \\ + \\ return index; + \\} + \\ + \\/// Returns a slice of `buf` with the name associated with the given `index`. + \\/// This function should only be called with an `index` that + \\/// is already known to exist within the `dafsa`, e.g. an index + \\/// returned from `uniqueIndex`. + \\pub fn nameFromUniqueIndex(index: u16, buf: []u8) []u8 { + \\ std.debug.assert(index >= 1 and index <= data.len); + \\ + \\ var node_index: u16 = 0; + \\ var count: u16 = index; + \\ var fbs = std.io.fixedBufferStream(buf); + \\ const w = fbs.writer(); + \\ + \\ while (true) { + \\ var sibling_index = dafsa[node_index].child_index; + \\ while (true) { + \\ if (dafsa[sibling_index].number > 0 and dafsa[sibling_index].number < count) { + \\ count -= dafsa[sibling_index].number; + \\ } else { + \\ w.writeByte(dafsa[sibling_index].char) catch unreachable; + \\ node_index = sibling_index; + \\ if (dafsa[node_index].end_of_word) { + \\ count -= 1; + \\ } + \\ break; + \\ } + \\ + \\ if (dafsa[sibling_index].end_of_list) break; + \\ sibling_index += 1; + \\ } + \\ if (count == 0) break; + \\ } + \\ + \\ return fbs.getWritten(); + \\} + \\ + \\ + ); + try writer.writeAll( + \\/// We're 1 bit shy of being able to fit this in a u32: + \\/// - char only contains 0-9, a-z, A-Z, and _, so it could use a enum(u6) with a way to convert <-> u8 + \\/// (note: this would have a performance cost that may make the u32 not worth it) + \\/// - number has a max value of > 2047 and < 4095 (the first _ node has the largest number), + \\/// so it could fit into a u12 + \\/// - child_index currently has a max of > 4095 and < 8191, so it could fit into a u13 + \\/// + \\/// with the end_of_word/end_of_list 2 bools, that makes 33 bits total + \\const Node = packed struct(u64) { + \\ char: u8, + \\ /// Nodes are numbered with "an integer which gives the number of words that + \\ /// would be accepted by the automaton starting from that state." This numbering + \\ /// allows calculating "a one-to-one correspondence between the integers 1 to L + \\ /// (L is the number of words accepted by the automaton) and the words themselves." + \\ /// + \\ /// Essentially, this allows us to have a minimal perfect hashing scheme such that + \\ /// it's possible to store & lookup the properties of each builtin using a separate array. + \\ number: u16, + \\ /// If true, this node is the end of a valid builtin. + \\ /// Note: This does not necessarily mean that this node does not have child nodes. + \\ end_of_word: bool, + \\ /// If true, this node is the end of a sibling list. + \\ /// If false, then (index + 1) will contain the next sibling. + \\ end_of_list: bool, + \\ /// Padding bits to get to u64, unsure if there's some way to use these to improve something. + \\ _extra: u22 = 0, + \\ /// Index of the first child of this node. + \\ child_index: u16, + \\}; + \\ + \\ + ); + try builder.writeDafsa(writer); + try writeData(writer, values_array); + try writer.writeAll( + \\}; + \\} + \\ + ); + + return out_buf.toOwnedSlice(); + } +} + +fn writeData(writer: anytype, values: []const Value) !void { + try writer.writeAll("pub const data = blk: {\n"); + try writer.print(" @setEvalBranchQuota({});\n", .{values.len}); + try writer.writeAll(" break :blk [_]@This(){\n"); + for (values, 0..) |value, i| { + try writer.print(" // {s}\n", .{value.name}); + try writer.print(" .{{ .tag = @enumFromInt({}), .properties = .{{", .{i}); + for (value.properties, 0..) |property, j| { + if (j != 0) try writer.writeByte(','); + try writer.writeByte(' '); + try writer.writeAll(property); + } + if (value.properties.len != 0) try writer.writeByte(' '); + try writer.writeAll("} },\n"); + } + try writer.writeAll(" };\n"); + try writer.writeAll("};\n"); +} + +const DafsaBuilder = struct { + root: *Node, + arena: std.heap.ArenaAllocator.State, + allocator: Allocator, + unchecked_nodes: std.ArrayListUnmanaged(UncheckedNode), + minimized_nodes: std.HashMapUnmanaged(*Node, *Node, Node.DuplicateContext, std.hash_map.default_max_load_percentage), + previous_word_buf: [128]u8 = undefined, + previous_word: []u8 = &[_]u8{}, + + const UncheckedNode = struct { + parent: *Node, + char: u8, + child: *Node, + }; + + pub fn init(allocator: Allocator) !DafsaBuilder { + var arena = std.heap.ArenaAllocator.init(allocator); + errdefer arena.deinit(); + + var root = try arena.allocator().create(Node); + root.* = .{}; + return DafsaBuilder{ + .root = root, + .allocator = allocator, + .arena = arena.state, + .unchecked_nodes = .{}, + .minimized_nodes = .{}, + }; + } + + pub fn deinit(self: *DafsaBuilder) void { + self.arena.promote(self.allocator).deinit(); + self.unchecked_nodes.deinit(self.allocator); + self.minimized_nodes.deinit(self.allocator); + self.* = undefined; + } + + const Node = struct { + children: [256]?*Node = [_]?*Node{null} ** 256, + is_terminal: bool = false, + number: usize = 0, + + const DuplicateContext = struct { + pub fn hash(ctx: @This(), key: *Node) u64 { + _ = ctx; + var hasher = std.hash.Wyhash.init(0); + std.hash.autoHash(&hasher, key.children); + std.hash.autoHash(&hasher, key.is_terminal); + return hasher.final(); + } + + pub fn eql(ctx: @This(), a: *Node, b: *Node) bool { + _ = ctx; + return a.is_terminal == b.is_terminal and std.mem.eql(?*Node, &a.children, &b.children); + } + }; + + pub fn calcNumbers(self: *Node) void { + self.number = @intFromBool(self.is_terminal); + for (self.children) |maybe_child| { + const child = maybe_child orelse continue; + // A node's number is the sum of the + // numbers of its immediate child nodes. + child.calcNumbers(); + self.number += child.number; + } + } + + pub fn numDirectChildren(self: *const Node) u8 { + var num: u8 = 0; + for (self.children) |child| { + if (child != null) num += 1; + } + return num; + } + }; + + pub fn insert(self: *DafsaBuilder, str: []const u8) !void { + if (std.mem.order(u8, str, self.previous_word) == .lt) { + @panic("insertion order must be sorted"); + } + + var common_prefix_len: usize = 0; + for (0..@min(str.len, self.previous_word.len)) |i| { + if (str[i] != self.previous_word[i]) break; + common_prefix_len += 1; + } + + try self.minimize(common_prefix_len); + + var node = if (self.unchecked_nodes.items.len == 0) + self.root + else + self.unchecked_nodes.getLast().child; + + for (str[common_prefix_len..]) |c| { + std.debug.assert(node.children[c] == null); + + var arena = self.arena.promote(self.allocator); + var child = try arena.allocator().create(Node); + self.arena = arena.state; + + child.* = .{}; + node.children[c] = child; + try self.unchecked_nodes.append(self.allocator, .{ + .parent = node, + .char = c, + .child = child, + }); + node = node.children[c].?; + } + node.is_terminal = true; + + self.previous_word = self.previous_word_buf[0..str.len]; + @memcpy(self.previous_word, str); + } + + pub fn minimize(self: *DafsaBuilder, down_to: usize) !void { + if (self.unchecked_nodes.items.len == 0) return; + while (self.unchecked_nodes.items.len > down_to) { + const unchecked_node = self.unchecked_nodes.pop(); + if (self.minimized_nodes.getPtr(unchecked_node.child)) |child| { + unchecked_node.parent.children[unchecked_node.char] = child.*; + } else { + try self.minimized_nodes.put(self.allocator, unchecked_node.child, unchecked_node.child); + } + } + } + + pub fn finish(self: *DafsaBuilder) !void { + try self.minimize(0); + } + + fn nodeCount(self: *const DafsaBuilder) usize { + return self.minimized_nodes.count(); + } + + fn edgeCount(self: *const DafsaBuilder) usize { + var count: usize = 0; + var it = self.minimized_nodes.iterator(); + while (it.next()) |entry| { + for (entry.key_ptr.*.children) |child| { + if (child != null) count += 1; + } + } + return count; + } + + fn contains(self: *const DafsaBuilder, str: []const u8) bool { + var node = self.root; + for (str) |c| { + node = node.children[c] orelse return false; + } + return node.is_terminal; + } + + fn calcNumbers(self: *const DafsaBuilder) void { + self.root.calcNumbers(); + } + + fn getUniqueIndex(self: *const DafsaBuilder, str: []const u8) ?usize { + var index: usize = 0; + var node = self.root; + + for (str) |c| { + const child = node.children[c] orelse return null; + for (node.children, 0..) |sibling, sibling_c| { + if (sibling == null) continue; + if (sibling_c < c) { + index += sibling.?.number; + } + } + node = child; + if (node.is_terminal) index += 1; + } + + return index; + } + + fn writeDafsa(self: *const DafsaBuilder, writer: anytype) !void { + try writer.writeAll("const dafsa = [_]Node{\n"); + + // write root + try writer.writeAll(" .{ .char = 0, .end_of_word = false, .end_of_list = true, .number = 0, .child_index = 1 },\n"); + + var queue = std.ArrayList(*Node).init(self.allocator); + defer queue.deinit(); + + var child_indexes = std.AutoHashMap(*Node, usize).init(self.allocator); + defer child_indexes.deinit(); + + try child_indexes.ensureTotalCapacity(@intCast(self.edgeCount())); + + var first_available_index: usize = self.root.numDirectChildren() + 1; + first_available_index = try writeDafsaChildren(self.root, writer, &queue, &child_indexes, first_available_index); + + while (queue.items.len > 0) { + // TODO: something with better time complexity + const node = queue.orderedRemove(0); + + first_available_index = try writeDafsaChildren(node, writer, &queue, &child_indexes, first_available_index); + } + + try writer.writeAll("};\n"); + } + + fn writeDafsaChildren( + node: *Node, + writer: anytype, + queue: *std.ArrayList(*Node), + child_indexes: *std.AutoHashMap(*Node, usize), + first_available_index: usize, + ) !usize { + var cur_available_index = first_available_index; + const num_children = node.numDirectChildren(); + var child_i: usize = 0; + for (node.children, 0..) |maybe_child, c_usize| { + const child = maybe_child orelse continue; + const c: u8 = @intCast(c_usize); + const is_last_child = child_i == num_children - 1; + + if (!child_indexes.contains(child)) { + const child_num_children = child.numDirectChildren(); + if (child_num_children > 0) { + child_indexes.putAssumeCapacityNoClobber(child, cur_available_index); + cur_available_index += child_num_children; + } + try queue.append(child); + } + + try writer.print( + " .{{ .char = '{c}', .end_of_word = {}, .end_of_list = {}, .number = {}, .child_index = {} }},\n", + .{ c, child.is_terminal, is_last_child, child.number, child_indexes.get(child) orelse 0 }, + ); + + child_i += 1; + } + return cur_available_index; + } +}; diff --git a/deps/aro/codegen/x86_64.zig b/deps/aro/codegen/x86_64.zig index bc8b43dff1..aa96b4dff5 100644 --- a/deps/aro/codegen/x86_64.zig +++ b/deps/aro/codegen/x86_64.zig @@ -177,7 +177,7 @@ fn genNode(func: *Fn, node: NodeIndex) Codegen.Error!Value { .int_literal => return Value{ .immediate = @bitCast(data.int) }, .string_literal_expr => { const range = func.c.tree.value_map.get(node).?.data.bytes; - const str_bytes = range.slice(func.c.tree.strings); + const str_bytes = range.slice(func.c.tree.strings, .@"1"); const section = try func.c.obj.getSection(.strings); const start = section.items.len; try section.appendSlice(str_bytes); diff --git a/deps/aro/object/Elf.zig b/deps/aro/object/Elf.zig index 6493e5dc25..b7e5c51656 100644 --- a/deps/aro/object/Elf.zig +++ b/deps/aro/object/Elf.zig @@ -20,7 +20,7 @@ const Symbol = struct { info: u8, }; -const Relocation = packed struct { +const Relocation = struct { symbol: *Symbol, addend: i64, offset: u48, diff --git a/deps/aro/target.zig b/deps/aro/target.zig index fcdac57f6e..526fce33d4 100644 --- a/deps/aro/target.zig +++ b/deps/aro/target.zig @@ -2,7 +2,7 @@ const std = @import("std"); const LangOpts = @import("LangOpts.zig"); const Type = @import("Type.zig"); const llvm = @import("zig").codegen.llvm; -const TargetSet = @import("builtins/Properties.zig").TargetSet; +const TargetSet = @import("Builtins/Properties.zig").TargetSet; /// intmax_t for this target pub fn intMaxType(target: std.Target) Type { @@ -349,8 +349,7 @@ pub fn isCygwinMinGW(target: std.Target) bool { } pub fn builtinEnabled(target: std.Target, enabled_for: TargetSet) bool { - var copy = enabled_for; - var it = copy.iterator(); + var it = enabled_for.iterator(); while (it.next()) |val| { switch (val) { .basic => return true, diff --git a/src/Compilation.zig b/src/Compilation.zig index c8618154d9..974861690e 100644 --- a/src/Compilation.zig +++ b/src/Compilation.zig @@ -4049,7 +4049,6 @@ pub fn cImport(comp: *Compilation, c_src: []const u8) !CImportResult { } var tree = switch (comp.c_frontend) { .aro => tree: { - if (builtin.zig_backend == .stage2_c) @panic("the CBE cannot compile Aro yet!"); const translate_c = @import("aro_translate_c.zig"); _ = translate_c; if (true) @panic("TODO"); diff --git a/src/main.zig b/src/main.zig index eb613a65f2..596d5e9852 100644 --- a/src/main.zig +++ b/src/main.zig @@ -4335,7 +4335,6 @@ fn cmdTranslateC(comp: *Compilation, arena: Allocator, fancy_output: ?*Compilati var tree = switch (comp.c_frontend) { .aro => tree: { - if (builtin.zig_backend == .stage2_c) @panic("the CBE cannot compile Aro yet!"); const translate_c = @import("aro_translate_c.zig"); var aro_comp = translate_c.Compilation.init(comp.gpa); defer aro_comp.deinit(); diff --git a/src/mingw.zig b/src/mingw.zig index 4d122819dd..2b57c2b0e1 100644 --- a/src/mingw.zig +++ b/src/mingw.zig @@ -274,6 +274,7 @@ fn add_cc_args( } pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void { + if (build_options.only_c) @panic("building import libs not included in core functionality"); var arena_allocator = std.heap.ArenaAllocator.init(comp.gpa); defer arena_allocator.deinit(); const arena = arena_allocator.allocator(); @@ -288,10 +289,6 @@ pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void { else => |e| return e, }; - // We need to invoke `zig clang` to use the preprocessor. - if (!build_options.have_llvm) return error.ZigCompilerNotBuiltWithLLVMExtensions; - const self_exe_path = comp.self_exe_path orelse return error.PreprocessorDisabled; - const target = comp.getTarget(); var cache: Cache = .{ @@ -337,67 +334,57 @@ pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void { "o", &digest, final_def_basename, }); - const target_def_arg = switch (target.cpu.arch) { - .x86 => "-DDEF_I386", - .x86_64 => "-DDEF_X64", - .arm, .armeb, .thumb, .thumbeb, .aarch64_32 => "-DDEF_ARM32", - .aarch64, .aarch64_be => "-DDEF_ARM64", + const target_defines = switch (target.cpu.arch) { + .x86 => "#define DEF_I386\n", + .x86_64 => "#define DEF_X64\n", + .arm, .armeb, .thumb, .thumbeb, .aarch64_32 => "#define DEF_ARM32\n", + .aarch64, .aarch64_be => "#define DEF_ARM64\n", else => unreachable, }; - const args = [_][]const u8{ - self_exe_path, - "clang", - "-x", - "c", - def_file_path, - "-Wp,-w", - "-undef", - "-P", - "-I", - try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libc", "mingw", "def-include" }), - target_def_arg, - "-E", - "-o", - def_final_path, - }; + const aro = @import("aro"); + var aro_comp = aro.Compilation.init(comp.gpa); + defer aro_comp.deinit(); - if (comp.verbose_cc) { - Compilation.dump_argv(&args); + const include_dir = try comp.zig_lib_directory.join(arena, &[_][]const u8{ "libc", "mingw", "def-include" }); + + if (comp.verbose_cc) print: { + std.debug.getStderrMutex().lock(); + defer std.debug.getStderrMutex().unlock(); + const stderr = std.io.getStdErr().writer(); + nosuspend stderr.print("def file: {s}\n", .{def_file_path}) catch break :print; + nosuspend stderr.print("include dir: {s}\n", .{include_dir}) catch break :print; + nosuspend stderr.print("output path: {s}\n", .{def_final_path}) catch break :print; } - if (std.process.can_spawn) { - var child = std.ChildProcess.init(&args, arena); - child.stdin_behavior = .Ignore; - child.stdout_behavior = .Pipe; - child.stderr_behavior = .Pipe; + try aro_comp.include_dirs.append(include_dir); - try child.spawn(); + const builtin_macros = try aro_comp.generateBuiltinMacros(); + const user_macros = try aro_comp.addSourceFromBuffer("", target_defines); + const def_file_source = try aro_comp.addSourceFromPath(def_file_path); - const stderr = try child.stderr.?.reader().readAllAlloc(arena, std.math.maxInt(usize)); + var pp = aro.Preprocessor.init(&aro_comp); + defer pp.deinit(); + pp.linemarkers = .none; + pp.preserve_whitespace = true; - const term = child.wait() catch |err| { - // TODO surface a proper error here - log.err("unable to spawn {s}: {s}", .{ args[0], @errorName(err) }); - return error.ClangPreprocessorFailed; - }; - switch (term) { - .Exited => |code| { - if (code != 0) { - // TODO surface a proper error here - log.err("clang exited with code {d} and stderr: {s}", .{ code, stderr }); - return error.ClangPreprocessorFailed; - } - }, - else => { - // TODO surface a proper error here - log.err("clang terminated unexpectedly with stderr: {s}", .{stderr}); - return error.ClangPreprocessorFailed; - }, + _ = try pp.preprocess(builtin_macros); + _ = try pp.preprocess(user_macros); + const eof = try pp.preprocess(def_file_source); + try pp.tokens.append(pp.comp.gpa, eof); + + for (aro_comp.diag.list.items) |diagnostic| { + if (diagnostic.kind == .@"fatal error" or diagnostic.kind == .@"error") { + aro_comp.renderErrors(); + return error.AroPreprocessorFailed; } - } else { - log.err("unable to spawn {s}: spawning child process not supported on {s}", .{ args[0], @tagName(builtin.os.tag) }); - return error.ClangPreprocessorFailed; + } + + { + // new scope to ensure definition file is written before passing the path to WriteImportLibrary + const def_final_file = try comp.global_cache_directory.handle.createFile(def_final_path, .{ .truncate = true }); + defer def_final_file.close(); + try pp.prettyPrintTokens(def_final_file.writer()); } const lib_final_path = try comp.global_cache_directory.join(comp.gpa, &[_][]const u8{ @@ -405,6 +392,7 @@ pub fn buildImportLib(comp: *Compilation, lib_name: []const u8) !void { }); errdefer comp.gpa.free(lib_final_path); + if (!build_options.have_llvm) return error.ZigCompilerNotBuiltWithLLVMExtensions; const llvm_bindings = @import("codegen/llvm/bindings.zig"); const llvm = @import("codegen/llvm.zig"); const arch_tag = llvm.targetArch(target.cpu.arch); diff --git a/src/stubs/aro_builtins.zig b/src/stubs/aro_builtins.zig new file mode 100644 index 0000000000..f6deaef4ad --- /dev/null +++ b/src/stubs/aro_builtins.zig @@ -0,0 +1,33 @@ +//! Stub implementation only used when bootstrapping stage2 +//! Keep in sync with deps/aro/build/GenerateDef.zig + +pub fn with(comptime Properties: type) type { + return struct { + tag: Tag = @enumFromInt(0), + properties: Properties = undefined, + pub const max_param_count = 1; + pub const longest_name = 0; + pub const data = [_]@This(){.{}}; + pub inline fn fromName(_: []const u8) ?@This() { + return .{}; + } + pub fn nameFromUniqueIndex(_: u16, _: []u8) []u8 { + return ""; + } + pub fn uniqueIndex(_: []const u8) ?u16 { + return null; + } + pub const Tag = enum(u16) { _ }; + pub fn nameFromTag(_: Tag) NameBuf { + return .{}; + } + pub fn tagFromName(name: []const u8) ?Tag { + return @enumFromInt(name.len); + } + pub const NameBuf = struct { + pub fn span(_: *const NameBuf) []const u8 { + return ""; + } + }; + }; +} diff --git a/src/stubs/aro_names.zig b/src/stubs/aro_names.zig new file mode 100644 index 0000000000..3dee3c12e4 --- /dev/null +++ b/src/stubs/aro_names.zig @@ -0,0 +1,10 @@ +//! Stub implementation only used when bootstrapping stage2 +//! Keep in sync with deps/aro/build/GenerateDef.zig + +pub fn with(comptime _: type) type { + return struct { + pub inline fn fromName(_: []const u8) ?@This() { + return null; + } + }; +}