Milky2018/vcode/native_lowering does not have a README file
impl Show for DirectLoweringErrorpub struct AtomicSpec {
width : AccessWidth
value_type : ValueType
offset : UInt64
endianness : Endianness
trap : TrapReason?
} derive(Eq, Hash, Debug)fn AtomicSpec::new(width : AccessWidth, value_type : ValueType, offset : UInt64, endianness : Endianness, trap : TrapReason?) -> AtomicSpecpub struct CallAbiElaboration {
// private fields
}fn CallAbiElaboration::new(root_scope? : CallerRootScopeAbi, hidden_safepoints? : Array[HiddenSafepointAbi]) -> CallAbiElaborationpub struct CallerRootScopeAbi {
// private fields
}fn CallerRootScopeAbi::new(push_symbol : ExternalSymbol, pop_symbol : ExternalSymbol) -> CallerRootScopeAbipub(all) enum ConversionOp {
I32WrapI64
I64ExtendI32(Signedness)
F32DemoteF64
F64PromoteF32
FloatToInt(FloatType, IntegerType, Signedness, ConversionMode)
IntToFloat(IntegerType, FloatType, Signedness)
SignExtend(IntegerType, AccessWidth)
Bitcast(ValueType, ValueType)
} derive(Eq, Hash, Debug)pub struct DirectBuilder {
// private fields
}fn DirectBuilder::branch(self : DirectBuilder, condition : Value, true_target : Block, true_arguments : Array[Value], false_target : Block, false_arguments : Array[Value]) -> Unitfn DirectBuilder::branch_int_compare(self : DirectBuilder, comparison : IntComparison, left : Value, right : Value, true_target : Block, true_arguments : Array[Value], false_target : Block, false_arguments : Array[Value]) -> Unitfn DirectBuilder::branch_int_compare_immediate(self : DirectBuilder, comparison : IntComparison, input : Value, bits : UInt64, true_target : Block, true_arguments : Array[Value], false_target : Block, false_arguments : Array[Value]) -> Unitfn DirectBuilder::create_stack_object(self : DirectBuilder, size : Int, alignment : Int) -> StackObjectfn DirectBuilder::emit_with_metadata(self : DirectBuilder, operation : Operation, operands : Array[Value], result_types : Array[ValueType], metadata : InstructionMetadata) -> Array[Value]fn DirectBuilder::new(parameter_types : Array[ValueType], sink : TargetSink, call_abi? : CallAbiElaboration, root_scope_capacity? : Int) -> DirectBuilderfn DirectBuilder::noreturn_call_with_metadata(self : DirectBuilder, call : NativeCall, operands : Array[Value], metadata : TerminatorMetadata) -> Unitfn DirectBuilder::switch(self : DirectBuilder, value : Value, cases : Array[(UInt64, Block, Array[Value])], default_target : Block, default_arguments : Array[Value]) -> Unitfn DirectBuilder::tail_call_with_metadata(self : DirectBuilder, call : NativeCall, operands : Array[Value], metadata : TerminatorMetadata) -> Unitpub struct HiddenSafepointAbi {
// private fields
}fn HiddenSafepointAbi::new(symbol : ExternalSymbol, argument_roots : StackMapArgumentRoots) -> HiddenSafepointAbipub(all) struct InstructionMetadata {
source : SourceLocation?
live_gc_roots : Array[Value]
stack_map : StackMapMetadata?
} derive(Eq, Debug)fn InstructionMetadata::new(source : SourceLocation?, live_gc_roots : Array[Value], stack_map? : StackMapMetadata) -> InstructionMetadatapub(all) enum IntOverflowOp {
Add(Signedness)
Sub(Signedness)
Mul(Signedness)
} derive(Eq, Hash, Debug)pub struct LoadSpec {
width : AccessWidth
extension : LoadExtension
result_type : ValueType
offset : UInt64
endianness : Endianness
trap : TrapReason?
} derive(Eq, Hash, Debug)fn LoadSpec::new(width : AccessWidth, extension : LoadExtension, result_type : ValueType, offset : UInt64, endianness : Endianness, trap : TrapReason?) -> LoadSpecpub(all) enum Operation {
I32Const(UInt)
I64Const(UInt64)
F32Const(UInt)
F64Const(UInt64)
V128Const(UInt64, UInt64)
NullPtr
NullGcRef
CodeAddress(CodeSymbol)
ExternalAddress(ExternalSymbol)
DataAddress(DataSymbol)
EnvironmentField(EnvironmentField, EnvironmentFieldStability)
StackAddress(StackObject)
Copy
Select
GcRefAddress
GcRefFromBits
PointerOffset
ReferenceCompare(ReferenceComparison)
IntUnary(IntUnaryOp)
IntBinary(IntBinaryOp)
IntBinaryImmediate(IntBinaryOp, UInt64)
IntShiftImmediate(IntBinaryOp, Int)
IntMultiplyAdd
IntAddShiftedLeft(Int)
IntHighMultiply(Signedness)
IntWithOverflow(IntOverflowOp)
IntCompare(IntComparison)
FloatUnary(FloatUnaryOp)
FloatBinary(FloatBinaryOp)
FloatTernary(FloatTernaryOp)
FloatCompare(FloatComparison)
Convert(ConversionOp)
Load(LoadSpec)
LoadIndexed(LoadSpec, Int)
Store(StoreSpec)
StoreIndexed(StoreSpec, Int)
AtomicLoad(AtomicSpec)
AtomicStore(AtomicSpec)
AtomicRmw(AtomicSpec, AtomicRmwOp)
AtomicCompareExchange(AtomicSpec)
AtomicFence
Vector(VectorOp)
VectorLoad(VectorLoadSpec)
VectorStoreLane(VectorStoreLaneSpec)
Call(NativeCall)
Safepoint(SafepointKind)
} derive(Eq, Debug)pub struct StoreSpec {
width : AccessWidth
value_type : ValueType
offset : UInt64
endianness : Endianness
trap : TrapReason?
} derive(Eq, Hash, Debug)fn StoreSpec::new(width : AccessWidth, value_type : ValueType, offset : UInt64, endianness : Endianness, trap : TrapReason?) -> StoreSpecpub struct TargetSink {
// private fields
}fn TargetSink::new(parameters : () -> Array[Int], entry_block : () -> Int, create_block : (Array[ValueType]) -> (Int, Array[Int]), create_stack_object : (Int, Int) -> Int, switch_to_block : (Int) -> Unit, emit : (Int, Operation, Array[Int], Array[ValueType], SourceLocation?, Array[Int], StackMapMetadata?) -> Array[Int], terminate : (Int, TargetTerminator, TargetTerminatorMetadata) -> Unit, finish : () -> Unit) -> TargetSinkpub(all) enum TargetTerminator {
Jump(Int, Array[Int])
Branch(Int, Int, Array[Int], Int, Array[Int])
BranchIntCompare(IntComparison, Int, Int, Int, Array[Int], Int, Array[Int])
BranchIntCompareImmediate(IntComparison, Int, UInt64, Int, Array[Int], Int, Array[Int])
Switch(Int, Array[TargetSwitchCase], Int, Array[Int])
Return(Array[Int])
TailCall(NativeCall, Array[Int])
NoReturnCall(NativeCall, Array[Int])
Trap(TrapReason)
}pub(all) enum Terminator {
Jump(Block, Array[Value])
Branch(Value, Block, Array[Value], Block, Array[Value])
BranchIntCompare(IntComparison, Value, Value, Block, Array[Value], Block, Array[Value])
BranchIntCompareImmediate(IntComparison, Value, UInt64, Block, Array[Value], Block, Array[Value])
Switch(Value, Array[SwitchCase], Block, Array[Value])
Return(Array[Value])
TailCall(NativeCall, Array[Value])
NoReturnCall(NativeCall, Array[Value])
Trap(TrapReason)
} derive(Eq, Debug)pub(all) struct TerminatorMetadata {
source : SourceLocation?
live_gc_roots : Array[Value]
} derive(Eq, Debug)fn TerminatorMetadata::new(source : SourceLocation?, live_gc_roots : Array[Value]) -> TerminatorMetadatapub(all) enum VectorConversionOp {
ExtendLow(VectorLane, Signedness)
ExtendHigh(VectorLane, Signedness)
Narrow(VectorLane, Signedness)
FloatToInt(VectorLane, VectorLane, Signedness, ConversionMode)
IntToFloat(VectorLane, VectorLane, Signedness)
PromoteLowF32x4
DemoteZeroF64x2
} derive(Eq, Hash, Debug)pub(all) enum VectorIntBinaryOp {
Add
Sub
Mul
Min(Signedness)
Max(Signedness)
AverageUnsigned
SaturatingAdd(Signedness)
SaturatingSub(Signedness)
ExtendMultiply(VectorHalf, Signedness)
Dot16To32Signed
Q15MultiplyRoundedSaturating
} derive(Eq, Hash, Debug)pub(all) enum VectorIntComparison {
Equal
NotEqual
LessThan(Signedness)
LessOrEqual(Signedness)
GreaterThan(Signedness)
GreaterOrEqual(Signedness)
} derive(Eq, Hash, Debug)pub(all) enum VectorIntUnaryOp {
Absolute
Negate
PopulationCount
ExtendAddPairwise(Signedness)
} derive(Eq, Hash, Debug)pub(all) enum VectorLoadKind {
Splat(VectorLane)
Extend(VectorLane, Signedness)
Zero(AccessWidth)
Lane(VectorLane, Int)
} derive(Eq, Hash, Debug)pub struct VectorLoadSpec {
kind : VectorLoadKind
offset : UInt64
endianness : Endianness
trap : TrapReason?
} derive(Eq, Hash, Debug)fn VectorLoadSpec::new(kind : VectorLoadKind, offset : UInt64, endianness : Endianness, trap : TrapReason?) -> VectorLoadSpecpub(all) enum VectorOp {
Splat(VectorLane)
ExtractLane(VectorLane, Int, Signedness?)
ReplaceLane(VectorLane, Int)
Shuffle(FixedArray[Int])
Swizzle
Bitwise(VectorBitwiseOp)
IntUnary(VectorLane, VectorIntUnaryOp)
IntBinary(VectorLane, VectorIntBinaryOp)
IntShift(VectorLane, VectorIntShiftOp)
IntCompare(VectorLane, VectorIntComparison)
FloatUnary(VectorLane, VectorFloatUnaryOp)
FloatBinary(VectorLane, VectorFloatBinaryOp)
FloatTernary(VectorLane, FloatTernaryOp)
FloatCompare(VectorLane, VectorFloatComparison)
Predicate(VectorPredicateOp)
Convert(VectorConversionOp)
Relaxed(VectorRelaxedOp)
} derive(Eq, Debug)pub(all) enum VectorPredicateOp {
AnyTrue
AllTrue(VectorLane)
BitMask(VectorLane)
} derive(Eq, Hash, Debug)pub(all) enum VectorRelaxedOp {
Swizzle
FloatToInt(VectorLane, VectorLane, Signedness)
FusedMultiplyAdd(VectorLane, FloatTernaryOp)
LaneSelect(VectorLane)
Min(VectorLane)
Max(VectorLane)
Q15MultiplyRoundedSigned
Dot8To16Signed
Dot8To32AddSigned
} derive(Eq, Hash, Debug)pub struct VectorStoreLaneSpec {
lane : VectorLane
lane_index : Int
offset : UInt64
endianness : Endianness
trap : TrapReason?
} derive(Eq, Hash, Debug)fn VectorStoreLaneSpec::new(lane : VectorLane, lane_index : Int, offset : UInt64, endianness : Endianness, trap : TrapReason?) -> VectorStoreLaneSpecfn verify_call_operands(call : NativeCall, operands : Array[ValueType], context : String) -> String?Install
Download zipTarget-independent native lowering, VCode, and code-object infrastructure