BuiltinFunction
public enum BuiltinFunction : Hashable, Sendable
extension BuiltinFunction: CustomStringConvertible
A function in the Builtin module, accessible only to the standard library.
Built-in functions implement the basis operations on built-in types such as Builtin.i64, and
are implemented by a single IR instruction.
Only a few built-in functions, such as Builtin.address(of:), are truly generic. Others are
parameterized by a bounded selection of types and flags, resulting in a family of related
non-generic Hylo functions having the same base name. The full name of these functions is a
concatenation of the base name with a representation of the value of each parameter, separated
by underscores. For example, Builtin.add_i32 and Builtin.add_i64 represent integer addition
for 32-bit and 64-bit integer values. Some flags have default values
(e.g. OverflowBehavior.ignored), which are omitted from builtin function names. For example:
| Hylo spelling | Swift representation |
|---|---|
Builtin.add_i64 |
.add(.ignored, .i(64)) |
Builtin.icmp_ne_i32 |
.icmp(.ne, .i(32)) |
Builtin.fmul_fast_float64 |
.fmul(.fast, .float64) |
Most built-in functions have the same semantics an the LLVM instruction with the same base name; the other cases have documentation describing their semantics and Hylo signature. Supported LLVM operations include all arithmetic and comparison instructions on built-in integral and floating-point numbers as well as conversions from and to these types.
-
Builtin.address<T>(of v: T) -> Builtin.ptrReturns a pointer to the storage of the argument.
The resulting pointer is dereferenceable only for the lifetime of the argument; additional measures may be needed to keep the argument alive during the pointer’s use.
Declaration
Swift
case addressOf -
Builtin.mark_uninitialized<T>(_ v: sink T) -> VoidMarks
vas being uninitialized.Declaration
Swift
case markUninitialized
-
Undocumented
Declaration
Swift
case add(OverflowBehavior, BuiltinType) -
Undocumented
Declaration
Swift
case sub(OverflowBehavior, BuiltinType) -
Undocumented
Declaration
Swift
case mul(OverflowBehavior, BuiltinType) -
Undocumented
Declaration
Swift
case shl(OverflowBehavior, BuiltinType) -
Undocumented
Declaration
Swift
case udiv(exact: Bool, BuiltinType) -
Undocumented
Declaration
Swift
case sdiv(exact: Bool, BuiltinType) -
Undocumented
Declaration
Swift
case lshr(exact: Bool, BuiltinType) -
Undocumented
Declaration
Swift
case ashr(exact: Bool, BuiltinType) -
Undocumented
Declaration
Swift
case urem(BuiltinType) -
Undocumented
Declaration
Swift
case srem(BuiltinType) -
Undocumented
Declaration
Swift
case and(BuiltinType) -
Undocumented
Declaration
Swift
case or(BuiltinType) -
Undocumented
Declaration
Swift
case xor(BuiltinType) -
Undocumented
Declaration
Swift
case signedAdditionWithOverflow(BuiltinType) -
Undocumented
Declaration
Swift
case unsignedAdditionWithOverflow(BuiltinType) -
Undocumented
Declaration
Swift
case signedSubtractionWithOverflow(BuiltinType) -
Undocumented
Declaration
Swift
case unsignedSubtractionWithOverflow(BuiltinType) -
Undocumented
Declaration
Swift
case signedMultiplicationWithOverflow(BuiltinType) -
Undocumented
Declaration
Swift
case unsignedMultiplicationWithOverflow(BuiltinType) -
Undocumented
Declaration
Swift
case icmp(IntegerPredicate, BuiltinType) -
Undocumented
Declaration
Swift
case trunc(BuiltinType, BuiltinType) -
Undocumented
Declaration
Swift
case zext(BuiltinType, BuiltinType) -
Undocumented
Declaration
Swift
case sext(BuiltinType, BuiltinType) -
Undocumented
Declaration
Swift
case uitofp(BuiltinType, BuiltinType) -
Undocumented
Declaration
Swift
case sitofp(BuiltinType, BuiltinType) -
Undocumented
Declaration
Swift
case inttoptr(BuiltinType) -
Undocumented
Declaration
Swift
case ptrtoint(BuiltinType) -
Undocumented
Declaration
Swift
case fadd(MathFlags, BuiltinType) -
Undocumented
Declaration
Swift
case fsub(MathFlags, BuiltinType) -
Undocumented
Declaration
Swift
case fmul(MathFlags, BuiltinType) -
Undocumented
Declaration
Swift
case fdiv(MathFlags, BuiltinType) -
Undocumented
Declaration
Swift
case frem(MathFlags, BuiltinType) -
Undocumented
Declaration
Swift
case fcmp(MathFlags, FloatingPointPredicate, BuiltinType) -
Undocumented
Declaration
Swift
case fptrunc(BuiltinType, BuiltinType) -
Undocumented
Declaration
Swift
case fpext(BuiltinType, BuiltinType) -
Undocumented
Declaration
Swift
case fptoui(BuiltinType, BuiltinType) -
Undocumented
Declaration
Swift
case fptosi(BuiltinType, BuiltinType) -
Undocumented
Declaration
Swift
case ctpop(BuiltinType) -
Undocumented
Declaration
Swift
case ctlz(BuiltinType) -
Undocumented
Declaration
Swift
case cttz(BuiltinType) -
Undocumented
Declaration
Swift
case zeroinitializer(BuiltinType) -
Undocumented
Declaration
Swift
case advancedByBytes(byteOffset: BuiltinType) -
Undocumented
Declaration
Swift
case atomic_store_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_store_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_store_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_load_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_load_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_load_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_swap_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_swap_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_swap_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_swap_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_swap_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_add_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_add_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_add_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_add_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_add_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fadd_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fadd_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fadd_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fadd_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fadd_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_sub_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_sub_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_sub_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_sub_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_sub_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fsub_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fsub_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fsub_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fsub_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fsub_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_max_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_max_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_max_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_max_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_max_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_umax_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_umax_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_umax_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_umax_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_umax_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fmax_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fmax_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fmax_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fmax_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fmax_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_min_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_min_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_min_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_min_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_min_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_umin_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_umin_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_umin_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_umin_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_umin_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fmin_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fmin_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fmin_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fmin_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fmin_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_and_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_and_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_and_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_and_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_and_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_nand_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_nand_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_nand_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_nand_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_nand_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_or_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_or_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_or_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_or_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_or_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_xor_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_xor_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_xor_release(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_xor_acqrel(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_xor_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_relaxed_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_relaxed_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_relaxed_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_acquire_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_acquire_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_acquire_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_release_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_release_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_release_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_acqrel_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_acqrel_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_acqrel_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_seqcst_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_seqcst_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchg_seqcst_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_relaxed_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_relaxed_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_relaxed_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_acquire_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_acquire_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_acquire_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_release_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_release_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_release_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_acqrel_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_acqrel_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_acqrel_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_seqcst_relaxed(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_seqcst_acquire(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_cmpxchgweak_seqcst_seqcst(BuiltinType) -
Undocumented
Declaration
Swift
case atomic_fence_acquire -
Undocumented
Declaration
Swift
case atomic_fence_release -
Undocumented
Declaration
Swift
case atomic_fence_acqrel -
Undocumented
Declaration
Swift
case atomic_fence_seqcst -
Undocumented
Declaration
Swift
case atomic_singlethreadfence_acquire -
Undocumented
Declaration
Swift
case atomic_singlethreadfence_release -
Undocumented
Declaration
Swift
case atomic_singlethreadfence_acqrel -
Undocumented
Declaration
Swift
case atomic_singlethreadfence_seqcst -
A set of customizations to the behavior of floating point operations.
The meaning of each customization is given by the LLVM option of the same name.
See moreDeclaration
Swift
public struct MathFlags : OptionSet, Hashable, Sendableextension BuiltinFunction.MathFlags: CustomStringConvertible -
The function’s result type.
Declaration
Swift
public var output: AnyType { get } -
Returns the type of the function, calling
freshVariableto create fresh type variables.Declaration
Swift
public func type(makingFreshVariableWith freshVariable: () -> TypeVariable) -> ArrowType -
The part of the name of this function in the
Builtinmodule that comes before the parentheses.Declaration
Swift
public var description: String { get }
-
An instance whose name—up to the open parenthesis—is
n, ornilif no such built-in function exists.Declaration
Swift
public init?(_ n: String) -
An atomic fence function whose name—up to the open parenthesis—is
n, ornilif no such built-in function exists.Declaration
Swift
private init?(fence n: String) -
An atomic non-fence function whose name—up to the open parenthesis—is
n, ornilif no such built-in function exists.Declaration
Swift
private init?(atomic n: String)
View on GitHub