@@ 3,6 3,8 @@
#define SCOPES_VALUE_HH
#include "gencc.inc"
SCOPES_BEGIN_MODULE
+#define TYPE_BITSET_CompileFlags(T) T(DumpDisassembly, 0) T(DumpModule, 1) T(DumpFunction, 2) T(DumpTime, 3) T(NoDebugInfo, 4) T(O1, 5) T(O2, 6) T(Cache, 7) T(Module, 8) T(IgnoreMissingSymbols, 9)
+SCOPES_DEFINE_TYPE_BITSET(CompileFlags)
#define TYPE_BITSET_TypenameFlags(T) T(Plain, 0) T(Complete, 1)
SCOPES_DEFINE_TYPE_BITSET(TypenameFlags)
#define TYPE_BITSET_PointerTypeFlags(T) T(BufferBlock, 0) T(NonWritable, 1) T(NonReadable, 2) T(Volatile, 3) T(Coherent, 4) T(Restrict, 5) T(Block, 6) T(Flat, 7) T(Managed, 8) T(BuiltIn, 9) T(ThreadLocal, 10)
@@ 13,36 15,36 @@ SCOPES_DEFINE_TYPE_BITSET(FunctionFlags)
SCOPES_DEFINE_TYPE_BITSET(CallTemplateFlags)
#define TYPE_BITSET_BlockFlags(T) T(TagTraceback, 0) T(IgnorePrematureNoreturn, 1)
SCOPES_DEFINE_TYPE_BITSET(BlockFlags)
-#define TYPE_ENUM_ValueKind(T, U) T(ParserBadTasteError) T(ParserUnterminatedSequenceError) T(ParserUnexpectedLineBreakError) T(ParserInvalidIntegerSuffixError) T(ParserInvalidRealSuffixError) T(ParserUnclosedOpenBracketError) T(ParserStrayClosingBracketError) T(ParserUnterminatedQuoteError) T(ParserUnexpectedTokenError) T(ParserStrayEscapeTokenError) T(ParserIndentationMismatchError) T(ParserBadIndentationLevelError) T(ParserStrayStatementTokenError) T(SyntaxCallExpressionEmptyError) T(SyntaxTooManyArgumentsError) T(SyntaxNotEnoughArgumentsError) T(SyntaxUnnamedForwardDeclarationError) T(SyntaxVariadicSymbolNotLastError) T(SyntaxAssignmentTokenExpectedError) T(SyntaxKeyedArgumentMismatchError) T(SyntaxUnexpectedExtraTokenError) T(SyntaxUndeclaredIdentifierError) T(SyntaxExceptBlockExpectedError) T(SyntaxMissingDefaultCaseError) T(SyntaxCaseBlockExpectedError) T(SyntaxLabelExpectedError) T(SyntaxSymbolExpanderTypeMismatchError) T(SyntaxListExpanderTypeMismatchError) T(SyntaxExcessBindingArgumentError) T(TypeKindMismatchError) T(ValueKindMismatchError) T(CannotCreateConstantOfError) T(ConstantExpectedError) T(ConstantValueKindMismatchError) T(TypedConstantValueKindMismatchError) T(TooManyArgumentsError) T(NotEnoughArgumentsError) T(CannotTypeInlineError) T(ValueMustBeReferenceError) T(NonReadableReferenceError) T(NonWritableReferenceError) T(NonReadablePointerError) T(NonWritablePointerError) T(MergeConflictError) T(InaccessibleValueError) T(DropReturnsArgumentsError) T(RecursiveDropError) T(SwitchPassMovedValueError) T(CaseValueExpectedError) T(BadIndirectCaseArgumentListError) T(DuplicateCaseLiteralError) T(LoopMovedValueError) T(ViewExitingScopeError) T(MovingGlobalUniqueError) T(DuplicateParameterKeyError) T(UnknownParameterKeyError) T(BreakOutsideLoopError) T(RepeatOutsideLoopError) T(LabelExpectedError) T(RecursiveFunctionChangedTypeError) T(UnknownTupleFieldError) T(PlainToUniqueCastError) T(ManagedPointerCannotLoadError) T(UniqueValueExpectedError) T(CannotDupeManagedPointerError) T(SimilarViewValueExpectedForStoreError) T(IncompatibleStorageTypeForUniqueError) T(SpiceMacroReturnedNullError) T(UnsupportedDimensionalityError) T(UnsupportedExecutionModeError) T(CastCategoryError) T(CastSizeError) T(CastIncompatibleAggregateTypeError) T(InvalidOperandsError) T(InvalidArgumentTypeForBuiltinError) T(UnsupportedBuiltinError) T(InvalidCalleeError) T(TooManyFunctionArgumentsError) T(NotEnoughFunctionArgumentsError) T(DuplicateSwitchDefaultCaseError) T(MissingDefaultCaseError) T(UnclosedPassError) T(DoWithoutPassError) T(VariadicParameterNotLastError) T(RecursionOverflowError) T(ResultMustBePureError) T(GlobalInitializerMustBePureError) T(NoGlobalInitializerError) T(NoGlobalConstructorError) T(ParameterTypeMismatchError) T(FunctionPointerExpectedError) T(ScalarOrVectorExpectedError) T(FixedVectorSizeMismatchError) T(VectorSizeMismatchError) T(TypeMismatchError) T(InvalidMatrixSizeError) T(ConditionNotBoolError) T(UnexpectedValueKindError) T(UnresolvedValueError) T(PtrToGlobalHandlerMissingError) T(CannotSerializeTypeError) T(PrematureReturnFromExpressionError) T(OpaqueTypeError) T(UntrackedTypeError) T(MovableTypeMismatchError) T(DupeUniqueStorageError) T(GenericIndexOutOfRangeError) T(ShuffleVectorIndexOutOfRangeError) T(ExtractStringConstantIndexOutOfRangeError) T(ArgumentsTypeIndexOutOfRangeError) T(FunctionTypeIndexOutOfRangeError) T(ArrayOrVectorTypeIndexOutOfRangeError) T(TupleTypeIndexOutOfRangeError) T(TypenameCompleteError) T(TypenameIncompleteError) T(TypenameIncompatibleStorageError) T(StorageTypeExpectedError) T(PlainStorageTypeExpectedError) T(VariableOutOfScopeError) T(UnboundValueError) T(CannotProveForwardDeclarationError) T(QuoteUnsupportedValueKindError) T(QuoteUnboundValueError) T(CGenTypeUnsupportedInTargetError) T(CGenFailedToTranslateTypeError) T(CGenUnboundValueError) T(CGenInvalidRedeclarationError) T(CGenUnsupportedBuiltinError) T(CGenUnsupportedArrayAllocError) T(CGenUnsupportedMallocError) T(CGenUnsupportedUnOpError) T(CGenUnsupportedBinOpError) T(CGenUnsupportedTriOpError) T(CGenUnsupportedImageOpError) T(CGenUnsupportedCastOpError) T(CGenUnsupportedAtomicOpError) T(CGenUnsupportedTargetError) T(CGenInvalidCalleeError) T(CGenFailedToTranslateValueError) T(CGenUnsupportedInstructionError) T(CGenFailedToResolveExternError) T(CGenRecursiveConstructorError) T(CGenBackendFailedError) T(CGenBackendFailedErrnoError) T(CGenCannotSerializeConstPointerError) T(CGenBackendValidationFailedError) T(CGenBackendOptimizationFailedError) T(CGenUnsupportedCapabilityError) T(CGenUnsupportedDimensionalityError) T(CGenUnsupportedImageFormatError) T(CGenUnsupportedExecutionModeError) T(CGenUnrecognizedSymbolicMaskError) T(CGenUnsupportedPointerStorageClassError) T(CGenUnsupportedArgumentPointerStorageClassError) T(CGenUnsupportedBufferAlignmentError) T(CGenUnsupportedReturnArgumentError) T(CGenUnsupportedIntrinsicError) T(CGenEntryFunctionSignatureMismatchError) T(CGenUnsupportedVectorSizeError) T(CGenUnsupportedMatrixSizeError) T(RTLoadLibraryFailedError) T(RTGetAddressFailedError) T(RTMissingKeyError) T(RTMissingScopeAnyAttributeError) T(RTMissingLocalScopeAnyAttributeError) T(RTMissingScopeAttributeError) T(RTMissingLocalScopeAttributeError) T(RTMissingTypeAttributeError) T(RTMissingLocalTypeAttributeError) T(RTMissingTupleAttributeError) T(RTRegExError) T(RTUnableToOpenFileError) T(RTUncountableStorageTypeError) T(RTNoElementsInStorageTypeError) T(RTNoNamedElementsInStorageTypeError) T(RTTypeBitcountMismatchError) T(RTUndefinedAttributeError) T(MainInaccessibleBinaryError) T(InvalidFooterError) T(CoreModuleFunctionTypeMismatchError) T(CoreMissingError) T(UserError) T(ExecutionEngineFailedError) T(OptimizationPassFailedError) T(StackOverflowError) T(SourceText) T(SourceLocation) T(UnknownOriginTrace) T(DummyTrace) T(TraceTrace) T(CallTrace) T(ParserTrace) T(ExpanderTrace) T(InvokeHookTrace) T(ProveExpressionTrace) T(ProveTemplateTrace) T(ProveArgumentTrace) T(ProveParamMapTrace) T(ProveArgumentLifetimeTrace) T(ProveDropTrace) T(TranslateTrace) T(QuoteTrace) T(UnwrapTrace) T(BuiltinTrace) T(BindSymbolTrace) T(FollowSymbolTrace) T(BindExprTrace) T(FollowExprTrace) T(ConvertForeignTypeTrace) T(ConvertForeignValueTrace) T(UserTrace) T(String) T(Symbol) T(Builtin) T(ListBuffer) T(ListSlice) T(ScopeCell) T(Closure) T(QualifyType) T(ArgumentsType) T(TypenameType) T(IntegerType) T(RealType) T(PointerType) T(ArrayType) T(VectorType) T(MatrixType) T(TupleType) T(FunctionType) T(SamplerType) T(ImageType) T(SampledImageType) T(ReferQualifier) T(UniqueQualifier) T(ViewQualifier) T(MutateQualifier) T(KeyQualifier) T(Template) T(UserLabelTemplate) T(InlineLabelTemplate) T(TryLabelTemplate) T(ExceptLabelTemplate) T(ExceptAllLabelTemplate) T(ThenLabelTemplate) T(BreakLabelTemplate) T(BranchMergeLabelTemplate) T(TypeOfLabelTemplate) T(Loop) T(LoopArguments) T(KeyedTemplate) T(Expression) T(Quote) T(Unquote) T(CompileStage) T(CondTemplate) T(SwitchTemplate) T(Case) T(Pass) T(DoCase) T(DefaultCase) T(MergeTemplate) T(CallTemplate) T(ArgumentListTemplate) T(ExtractArgumentTemplate) T(ParameterTemplate) T(Keyed) T(Parameter) T(Exception) T(ArgumentList) T(Block) T(ExtractArgument) T(LoopLabelArguments) T(Function) T(Global) T(PureCast) T(Undef) T(ConstNull) T(ConstInt) T(ConstReal) T(ConstString) T(ConstAggregate) T(ConstPointer) T(ConstValue) T(UserLabel) T(InlineLabel) T(TryLabel) T(ExceptLabel) T(ExceptAllLabel) T(ThenLabel) T(BreakLabel) T(BranchMergeLabel) T(TypeOfLabel) T(LoopLabel) T(CondBr) T(Switch) T(Call) T(Select) T(ExtractValue) T(InsertValue) T(GetElementPtr) T(ExtractElement) T(InsertElement) T(ShuffleVector) T(Alloca) T(Malloc) T(Free) T(Load) T(Store) T(AtomicXchg) T(AtomicAdd) T(AtomicSub) T(AtomicBAnd) T(AtomicBNAnd) T(AtomicBOr) T(AtomicBXor) T(AtomicSMin) T(AtomicSMax) T(AtomicUMin) T(AtomicUMax) T(AtomicFAdd) T(AtomicFSub) T(CmpXchg) T(BarrierControl) T(BarrierMemory) T(BarrierMemoryGroup) T(BarrierMemoryImage) T(BarrierMemoryBuffer) T(BarrierMemoryShared) T(ICmpEQ) T(ICmpNE) T(ICmpUGT) T(ICmpUGE) T(ICmpULT) T(ICmpULE) T(ICmpSGT) T(ICmpSGE) T(ICmpSLT) T(ICmpSLE) T(FCmpOEQ) T(FCmpONE) T(FCmpORD) T(FCmpOGT) T(FCmpOGE) T(FCmpOLT) T(FCmpOLE) T(FCmpUEQ) T(FCmpUNE) T(FCmpUNO) T(FCmpUGT) T(FCmpUGE) T(FCmpULT) T(FCmpULE) T(UnOpBitReverse) T(UnOpBitCount) T(UnOpFindMSB) T(UnOpFindLSB) T(UnOpFNeg) T(UnOpSin) T(UnOpCos) T(UnOpTan) T(UnOpAsin) T(UnOpAcos) T(UnOpAtan) T(UnOpSinh) T(UnOpCosh) T(UnOpTanh) T(UnOpASinh) T(UnOpACosh) T(UnOpATanh) T(UnOpTrunc) T(UnOpFloor) T(UnOpFAbs) T(UnOpLog) T(UnOpLog2) T(UnOpExp) T(UnOpExp2) T(UnOpSqrt) T(BinOpAdd) T(BinOpAddNUW) T(BinOpAddNSW) T(BinOpSub) T(BinOpSubNUW) T(BinOpSubNSW) T(BinOpMul) T(BinOpMulNUW) T(BinOpMulNSW) T(BinOpUDiv) T(BinOpSDiv) T(BinOpURem) T(BinOpSRem) T(BinOpShl) T(BinOpLShr) T(BinOpAShr) T(BinOpBAnd) T(BinOpBOr) T(BinOpBXor) T(BinOpFAdd) T(BinOpFSub) T(BinOpFMul) T(BinOpFDiv) T(BinOpFRem) T(BinOpAtan2) T(BinOpPow) T(Annotate) T(ExecutionMode) T(CastBitcast) T(CastIntToPtr) T(CastPtrToInt) T(CastSExt) T(CastITrunc) T(CastZExt) T(CastFPTrunc) T(CastFPExt) T(CastFPToUI) T(CastFPToSI) T(CastUIToFP) T(CastSIToFP) T(CastPtrToRef) T(CastRefToPtr) T(CastCellToData) T(CastDataToCell) T(Merge) T(Repeat) T(Return) T(Raise) T(Unreachable) T(Discard)
-SCOPES_DEFINE_TYPE_ENUM(ValueKind)
-#define TYPE_ENUM_ErrorKind(T, U) U(ParserBadTasteError, ValueKind) U(ParserUnterminatedSequenceError, ValueKind) U(ParserUnexpectedLineBreakError, ValueKind) U(ParserInvalidIntegerSuffixError, ValueKind) U(ParserInvalidRealSuffixError, ValueKind) U(ParserUnclosedOpenBracketError, ValueKind) U(ParserStrayClosingBracketError, ValueKind) U(ParserUnterminatedQuoteError, ValueKind) U(ParserUnexpectedTokenError, ValueKind) U(ParserStrayEscapeTokenError, ValueKind) U(ParserIndentationMismatchError, ValueKind) U(ParserBadIndentationLevelError, ValueKind) U(ParserStrayStatementTokenError, ValueKind) U(SyntaxCallExpressionEmptyError, ValueKind) U(SyntaxTooManyArgumentsError, ValueKind) U(SyntaxNotEnoughArgumentsError, ValueKind) U(SyntaxUnnamedForwardDeclarationError, ValueKind) U(SyntaxVariadicSymbolNotLastError, ValueKind) U(SyntaxAssignmentTokenExpectedError, ValueKind) U(SyntaxKeyedArgumentMismatchError, ValueKind) U(SyntaxUnexpectedExtraTokenError, ValueKind) U(SyntaxUndeclaredIdentifierError, ValueKind) U(SyntaxExceptBlockExpectedError, ValueKind) U(SyntaxMissingDefaultCaseError, ValueKind) U(SyntaxCaseBlockExpectedError, ValueKind) U(SyntaxLabelExpectedError, ValueKind) U(SyntaxSymbolExpanderTypeMismatchError, ValueKind) U(SyntaxListExpanderTypeMismatchError, ValueKind) U(SyntaxExcessBindingArgumentError, ValueKind) U(TypeKindMismatchError, ValueKind) U(ValueKindMismatchError, ValueKind) U(CannotCreateConstantOfError, ValueKind) U(ConstantExpectedError, ValueKind) U(ConstantValueKindMismatchError, ValueKind) U(TypedConstantValueKindMismatchError, ValueKind) U(TooManyArgumentsError, ValueKind) U(NotEnoughArgumentsError, ValueKind) U(CannotTypeInlineError, ValueKind) U(ValueMustBeReferenceError, ValueKind) U(NonReadableReferenceError, ValueKind) U(NonWritableReferenceError, ValueKind) U(NonReadablePointerError, ValueKind) U(NonWritablePointerError, ValueKind) U(MergeConflictError, ValueKind) U(InaccessibleValueError, ValueKind) U(DropReturnsArgumentsError, ValueKind) U(RecursiveDropError, ValueKind) U(SwitchPassMovedValueError, ValueKind) U(CaseValueExpectedError, ValueKind) U(BadIndirectCaseArgumentListError, ValueKind) U(DuplicateCaseLiteralError, ValueKind) U(LoopMovedValueError, ValueKind) U(ViewExitingScopeError, ValueKind) U(MovingGlobalUniqueError, ValueKind) U(DuplicateParameterKeyError, ValueKind) U(UnknownParameterKeyError, ValueKind) U(BreakOutsideLoopError, ValueKind) U(RepeatOutsideLoopError, ValueKind) U(LabelExpectedError, ValueKind) U(RecursiveFunctionChangedTypeError, ValueKind) U(UnknownTupleFieldError, ValueKind) U(PlainToUniqueCastError, ValueKind) U(ManagedPointerCannotLoadError, ValueKind) U(UniqueValueExpectedError, ValueKind) U(CannotDupeManagedPointerError, ValueKind) U(SimilarViewValueExpectedForStoreError, ValueKind) U(IncompatibleStorageTypeForUniqueError, ValueKind) U(SpiceMacroReturnedNullError, ValueKind) U(UnsupportedDimensionalityError, ValueKind) U(UnsupportedExecutionModeError, ValueKind) U(CastCategoryError, ValueKind) U(CastSizeError, ValueKind) U(CastIncompatibleAggregateTypeError, ValueKind) U(InvalidOperandsError, ValueKind) U(InvalidArgumentTypeForBuiltinError, ValueKind) U(UnsupportedBuiltinError, ValueKind) U(InvalidCalleeError, ValueKind) U(TooManyFunctionArgumentsError, ValueKind) U(NotEnoughFunctionArgumentsError, ValueKind) U(DuplicateSwitchDefaultCaseError, ValueKind) U(MissingDefaultCaseError, ValueKind) U(UnclosedPassError, ValueKind) U(DoWithoutPassError, ValueKind) U(VariadicParameterNotLastError, ValueKind) U(RecursionOverflowError, ValueKind) U(ResultMustBePureError, ValueKind) U(GlobalInitializerMustBePureError, ValueKind) U(NoGlobalInitializerError, ValueKind) U(NoGlobalConstructorError, ValueKind) U(ParameterTypeMismatchError, ValueKind) U(FunctionPointerExpectedError, ValueKind) U(ScalarOrVectorExpectedError, ValueKind) U(FixedVectorSizeMismatchError, ValueKind) U(VectorSizeMismatchError, ValueKind) U(TypeMismatchError, ValueKind) U(InvalidMatrixSizeError, ValueKind) U(ConditionNotBoolError, ValueKind) U(UnexpectedValueKindError, ValueKind) U(UnresolvedValueError, ValueKind) U(PtrToGlobalHandlerMissingError, ValueKind) U(CannotSerializeTypeError, ValueKind) U(PrematureReturnFromExpressionError, ValueKind) U(OpaqueTypeError, ValueKind) U(UntrackedTypeError, ValueKind) U(MovableTypeMismatchError, ValueKind) U(DupeUniqueStorageError, ValueKind) U(GenericIndexOutOfRangeError, ValueKind) U(ShuffleVectorIndexOutOfRangeError, ValueKind) U(ExtractStringConstantIndexOutOfRangeError, ValueKind) U(ArgumentsTypeIndexOutOfRangeError, ValueKind) U(FunctionTypeIndexOutOfRangeError, ValueKind) U(ArrayOrVectorTypeIndexOutOfRangeError, ValueKind) U(TupleTypeIndexOutOfRangeError, ValueKind) U(TypenameCompleteError, ValueKind) U(TypenameIncompleteError, ValueKind) U(TypenameIncompatibleStorageError, ValueKind) U(StorageTypeExpectedError, ValueKind) U(PlainStorageTypeExpectedError, ValueKind) U(VariableOutOfScopeError, ValueKind) U(UnboundValueError, ValueKind) U(CannotProveForwardDeclarationError, ValueKind) U(QuoteUnsupportedValueKindError, ValueKind) U(QuoteUnboundValueError, ValueKind) U(CGenTypeUnsupportedInTargetError, ValueKind) U(CGenFailedToTranslateTypeError, ValueKind) U(CGenUnboundValueError, ValueKind) U(CGenInvalidRedeclarationError, ValueKind) U(CGenUnsupportedBuiltinError, ValueKind) U(CGenUnsupportedArrayAllocError, ValueKind) U(CGenUnsupportedMallocError, ValueKind) U(CGenUnsupportedUnOpError, ValueKind) U(CGenUnsupportedBinOpError, ValueKind) U(CGenUnsupportedTriOpError, ValueKind) U(CGenUnsupportedImageOpError, ValueKind) U(CGenUnsupportedCastOpError, ValueKind) U(CGenUnsupportedAtomicOpError, ValueKind) U(CGenUnsupportedTargetError, ValueKind) U(CGenInvalidCalleeError, ValueKind) U(CGenFailedToTranslateValueError, ValueKind) U(CGenUnsupportedInstructionError, ValueKind) U(CGenFailedToResolveExternError, ValueKind) U(CGenRecursiveConstructorError, ValueKind) U(CGenBackendFailedError, ValueKind) U(CGenBackendFailedErrnoError, ValueKind) U(CGenCannotSerializeConstPointerError, ValueKind) U(CGenBackendValidationFailedError, ValueKind) U(CGenBackendOptimizationFailedError, ValueKind) U(CGenUnsupportedCapabilityError, ValueKind) U(CGenUnsupportedDimensionalityError, ValueKind) U(CGenUnsupportedImageFormatError, ValueKind) U(CGenUnsupportedExecutionModeError, ValueKind) U(CGenUnrecognizedSymbolicMaskError, ValueKind) U(CGenUnsupportedPointerStorageClassError, ValueKind) U(CGenUnsupportedArgumentPointerStorageClassError, ValueKind) U(CGenUnsupportedBufferAlignmentError, ValueKind) U(CGenUnsupportedReturnArgumentError, ValueKind) U(CGenUnsupportedIntrinsicError, ValueKind) U(CGenEntryFunctionSignatureMismatchError, ValueKind) U(CGenUnsupportedVectorSizeError, ValueKind) U(CGenUnsupportedMatrixSizeError, ValueKind) U(RTLoadLibraryFailedError, ValueKind) U(RTGetAddressFailedError, ValueKind) U(RTMissingKeyError, ValueKind) U(RTMissingScopeAnyAttributeError, ValueKind) U(RTMissingLocalScopeAnyAttributeError, ValueKind) U(RTMissingScopeAttributeError, ValueKind) U(RTMissingLocalScopeAttributeError, ValueKind) U(RTMissingTypeAttributeError, ValueKind) U(RTMissingLocalTypeAttributeError, ValueKind) U(RTMissingTupleAttributeError, ValueKind) U(RTRegExError, ValueKind) U(RTUnableToOpenFileError, ValueKind) U(RTUncountableStorageTypeError, ValueKind) U(RTNoElementsInStorageTypeError, ValueKind) U(RTNoNamedElementsInStorageTypeError, ValueKind) U(RTTypeBitcountMismatchError, ValueKind) U(RTUndefinedAttributeError, ValueKind) U(MainInaccessibleBinaryError, ValueKind) U(InvalidFooterError, ValueKind) U(CoreModuleFunctionTypeMismatchError, ValueKind) U(CoreMissingError, ValueKind) U(UserError, ValueKind) U(ExecutionEngineFailedError, ValueKind) U(OptimizationPassFailedError, ValueKind) U(StackOverflowError, ValueKind)
-SCOPES_DEFINE_TYPE_ENUM(ErrorKind)
-#define TYPE_ENUM_TraceKind(T, U) U(UnknownOriginTrace, ValueKind) U(DummyTrace, ValueKind) U(TraceTrace, ValueKind) U(CallTrace, ValueKind) U(ParserTrace, ValueKind) U(ExpanderTrace, ValueKind) U(InvokeHookTrace, ValueKind) U(ProveExpressionTrace, ValueKind) U(ProveTemplateTrace, ValueKind) U(ProveArgumentTrace, ValueKind) U(ProveParamMapTrace, ValueKind) U(ProveArgumentLifetimeTrace, ValueKind) U(ProveDropTrace, ValueKind) U(TranslateTrace, ValueKind) U(QuoteTrace, ValueKind) U(UnwrapTrace, ValueKind) U(BuiltinTrace, ValueKind) U(BindSymbolTrace, ValueKind) U(FollowSymbolTrace, ValueKind) U(BindExprTrace, ValueKind) U(FollowExprTrace, ValueKind) U(ConvertForeignTypeTrace, ValueKind) U(ConvertForeignValueTrace, ValueKind) U(UserTrace, ValueKind)
-SCOPES_DEFINE_TYPE_ENUM(TraceKind)
-#define TYPE_ENUM_TypeKind(T, U) U(QualifyType, ValueKind) U(ArgumentsType, ValueKind) U(TypenameType, ValueKind) U(IntegerType, ValueKind) U(RealType, ValueKind) U(PointerType, ValueKind) U(ArrayType, ValueKind) U(VectorType, ValueKind) U(MatrixType, ValueKind) U(TupleType, ValueKind) U(FunctionType, ValueKind) U(SamplerType, ValueKind) U(ImageType, ValueKind) U(SampledImageType, ValueKind)
-SCOPES_DEFINE_TYPE_ENUM(TypeKind)
-#define TYPE_ENUM_QualifierKind(T, U) U(ReferQualifier, ValueKind) U(UniqueQualifier, ValueKind) U(ViewQualifier, ValueKind) U(MutateQualifier, ValueKind) U(KeyQualifier, ValueKind)
-SCOPES_DEFINE_TYPE_ENUM(QualifierKind)
-#define TYPE_ENUM_LabelTemplateKind(T, U) U(UserLabelTemplate, ValueKind) U(InlineLabelTemplate, ValueKind) U(TryLabelTemplate, ValueKind) U(ExceptLabelTemplate, ValueKind) U(ExceptAllLabelTemplate, ValueKind) U(ThenLabelTemplate, ValueKind) U(BreakLabelTemplate, ValueKind) U(BranchMergeLabelTemplate, ValueKind) U(TypeOfLabelTemplate, ValueKind)
-SCOPES_DEFINE_TYPE_ENUM(LabelTemplateKind)
-#define TYPE_ENUM_CaseKind(T, U) U(Case, ValueKind) U(Pass, ValueKind) U(DoCase, ValueKind) U(DefaultCase, ValueKind)
+#define TYPE_ENUM_CompileFileKind(T) T(Object, 0) T(ASM, 1) T(BC, 2) T(LLVM, 3)
+SCOPES_DEFINE_TYPE_ENUM(CompileFileKind)
+#define TYPE_ENUM_LabelKind(T) T(User, 0) T(Inline, 1) T(Try, 2) T(Except, 3) T(ExceptAll, 4) T(Then, 5) T(Break, 6) T(BranchMerge, 7) T(TypeOf, 8)
+SCOPES_DEFINE_TYPE_ENUM(LabelKind)
+#define TYPE_ENUM_CaseKind(T) T(Case, 0) T(Pass, 1) T(Do, 2) T(Default, 3)
SCOPES_DEFINE_TYPE_ENUM(CaseKind)
-#define TYPE_ENUM_LabelKind(T, U) U(UserLabel, ValueKind) U(InlineLabel, ValueKind) U(TryLabel, ValueKind) U(ExceptLabel, ValueKind) U(ExceptAllLabel, ValueKind) U(ThenLabel, ValueKind) U(BreakLabel, ValueKind) U(BranchMergeLabel, ValueKind) U(TypeOfLabel, ValueKind)
-SCOPES_DEFINE_TYPE_ENUM(LabelKind)
-#define TYPE_ENUM_AtomicRMWOpKind(T, U) U(AtomicXchg, ValueKind) U(AtomicAdd, ValueKind) U(AtomicSub, ValueKind) U(AtomicBAnd, ValueKind) U(AtomicBNAnd, ValueKind) U(AtomicBOr, ValueKind) U(AtomicBXor, ValueKind) U(AtomicSMin, ValueKind) U(AtomicSMax, ValueKind) U(AtomicUMin, ValueKind) U(AtomicUMax, ValueKind) U(AtomicFAdd, ValueKind) U(AtomicFSub, ValueKind)
+#define TYPE_ENUM_AtomicRMWOpKind(T) T(Xchg, 0) T(Add, 1) T(Sub, 2) T(BAnd, 3) T(BNAnd, 4) T(BOr, 5) T(BXor, 6) T(SMin, 7) T(SMax, 8) T(UMin, 9) T(UMax, 10) T(FAdd, 11) T(FSub, 12)
SCOPES_DEFINE_TYPE_ENUM(AtomicRMWOpKind)
-#define TYPE_ENUM_BarrierKind(T, U) U(BarrierControl, ValueKind) U(BarrierMemory, ValueKind) U(BarrierMemoryGroup, ValueKind) U(BarrierMemoryImage, ValueKind) U(BarrierMemoryBuffer, ValueKind) U(BarrierMemoryShared, ValueKind)
+#define TYPE_ENUM_BarrierKind(T) T(Control, 0) T(Memory, 1) T(MemoryGroup, 2) T(MemoryImage, 3) T(MemoryBuffer, 4) T(MemoryShared, 5)
SCOPES_DEFINE_TYPE_ENUM(BarrierKind)
-#define TYPE_ENUM_ICmpKind(T, U) U(ICmpEQ, ValueKind) U(ICmpNE, ValueKind) U(ICmpUGT, ValueKind) U(ICmpUGE, ValueKind) U(ICmpULT, ValueKind) U(ICmpULE, ValueKind) U(ICmpSGT, ValueKind) U(ICmpSGE, ValueKind) U(ICmpSLT, ValueKind) U(ICmpSLE, ValueKind)
+#define TYPE_ENUM_ICmpKind(T) T(EQ, 0) T(NE, 1) T(UGT, 2) T(UGE, 3) T(ULT, 4) T(ULE, 5) T(SGT, 6) T(SGE, 7) T(SLT, 8) T(SLE, 9)
SCOPES_DEFINE_TYPE_ENUM(ICmpKind)
-#define TYPE_ENUM_FCmpKind(T, U) U(FCmpOEQ, ValueKind) U(FCmpONE, ValueKind) U(FCmpORD, ValueKind) U(FCmpOGT, ValueKind) U(FCmpOGE, ValueKind) U(FCmpOLT, ValueKind) U(FCmpOLE, ValueKind) U(FCmpUEQ, ValueKind) U(FCmpUNE, ValueKind) U(FCmpUNO, ValueKind) U(FCmpUGT, ValueKind) U(FCmpUGE, ValueKind) U(FCmpULT, ValueKind) U(FCmpULE, ValueKind)
+#define TYPE_ENUM_FCmpKind(T) T(OEQ, 0) T(ONE, 1) T(ORD, 2) T(OGT, 3) T(OGE, 4) T(OLT, 5) T(OLE, 6) T(UEQ, 7) T(UNE, 8) T(UNO, 9) T(UGT, 10) T(UGE, 11) T(ULT, 12) T(ULE, 13)
SCOPES_DEFINE_TYPE_ENUM(FCmpKind)
-#define TYPE_ENUM_UnOpKind(T, U) U(UnOpBitReverse, ValueKind) U(UnOpBitCount, ValueKind) U(UnOpFindMSB, ValueKind) U(UnOpFindLSB, ValueKind) U(UnOpFNeg, ValueKind) U(UnOpSin, ValueKind) U(UnOpCos, ValueKind) U(UnOpTan, ValueKind) U(UnOpAsin, ValueKind) U(UnOpAcos, ValueKind) U(UnOpAtan, ValueKind) U(UnOpSinh, ValueKind) U(UnOpCosh, ValueKind) U(UnOpTanh, ValueKind) U(UnOpASinh, ValueKind) U(UnOpACosh, ValueKind) U(UnOpATanh, ValueKind) U(UnOpTrunc, ValueKind) U(UnOpFloor, ValueKind) U(UnOpFAbs, ValueKind) U(UnOpLog, ValueKind) U(UnOpLog2, ValueKind) U(UnOpExp, ValueKind) U(UnOpExp2, ValueKind) U(UnOpSqrt, ValueKind)
+#define TYPE_ENUM_UnOpKind(T) T(BitReverse, 0) T(BitCount, 1) T(FindMSB, 2) T(FindLSB, 3) T(FNeg, 4) T(Sin, 5) T(Cos, 6) T(Tan, 7) T(Asin, 8) T(Acos, 9) T(Atan, 10) T(Sinh, 11) T(Cosh, 12) T(Tanh, 13) T(ASinh, 14) T(ACosh, 15) T(ATanh, 16) T(Trunc, 17) T(Floor, 18) T(FAbs, 19) T(Log, 20) T(Log2, 21) T(Exp, 22) T(Exp2, 23) T(Sqrt, 24)
SCOPES_DEFINE_TYPE_ENUM(UnOpKind)
-#define TYPE_ENUM_BinOpKind(T, U) U(BinOpAdd, ValueKind) U(BinOpAddNUW, ValueKind) U(BinOpAddNSW, ValueKind) U(BinOpSub, ValueKind) U(BinOpSubNUW, ValueKind) U(BinOpSubNSW, ValueKind) U(BinOpMul, ValueKind) U(BinOpMulNUW, ValueKind) U(BinOpMulNSW, ValueKind) U(BinOpUDiv, ValueKind) U(BinOpSDiv, ValueKind) U(BinOpURem, ValueKind) U(BinOpSRem, ValueKind) U(BinOpShl, ValueKind) U(BinOpLShr, ValueKind) U(BinOpAShr, ValueKind) U(BinOpBAnd, ValueKind) U(BinOpBOr, ValueKind) U(BinOpBXor, ValueKind) U(BinOpFAdd, ValueKind) U(BinOpFSub, ValueKind) U(BinOpFMul, ValueKind) U(BinOpFDiv, ValueKind) U(BinOpFRem, ValueKind) U(BinOpAtan2, ValueKind) U(BinOpPow, ValueKind)
+#define TYPE_ENUM_BinOpKind(T) T(Add, 0) T(AddNUW, 1) T(AddNSW, 2) T(Sub, 3) T(SubNUW, 4) T(SubNSW, 5) T(Mul, 6) T(MulNUW, 7) T(MulNSW, 8) T(UDiv, 9) T(SDiv, 10) T(URem, 11) T(SRem, 12) T(Shl, 13) T(LShr, 14) T(AShr, 15) T(BAnd, 16) T(BOr, 17) T(BXor, 18) T(FAdd, 19) T(FSub, 20) T(FMul, 21) T(FDiv, 22) T(FRem, 23) T(Atan2, 24) T(Pow, 25)
SCOPES_DEFINE_TYPE_ENUM(BinOpKind)
-#define TYPE_ENUM_CastKind(T, U) U(CastBitcast, ValueKind) U(CastIntToPtr, ValueKind) U(CastPtrToInt, ValueKind) U(CastSExt, ValueKind) U(CastITrunc, ValueKind) U(CastZExt, ValueKind) U(CastFPTrunc, ValueKind) U(CastFPExt, ValueKind) U(CastFPToUI, ValueKind) U(CastFPToSI, ValueKind) U(CastUIToFP, ValueKind) U(CastSIToFP, ValueKind) U(CastPtrToRef, ValueKind) U(CastRefToPtr, ValueKind) U(CastCellToData, ValueKind) U(CastDataToCell, ValueKind)
+#define TYPE_ENUM_CastKind(T) T(Bitcast, 0) T(IntToPtr, 1) T(PtrToInt, 2) T(SExt, 3) T(ITrunc, 4) T(ZExt, 5) T(FPTrunc, 6) T(FPExt, 7) T(FPToUI, 8) T(FPToSI, 9) T(UIToFP, 10) T(SIToFP, 11) T(PtrToRef, 12) T(RefToPtr, 13) T(CellToData, 14) T(DataToCell, 15)
SCOPES_DEFINE_TYPE_ENUM(CastKind)
+#define TYPE_ENUM_ValueKind(T, U) T(ParserBadTasteError) T(ParserUnterminatedSequenceError) T(ParserUnexpectedLineBreakError) T(ParserInvalidIntegerSuffixError) T(ParserInvalidRealSuffixError) T(ParserUnclosedOpenBracketError) T(ParserStrayClosingBracketError) T(ParserUnterminatedQuoteError) T(ParserUnexpectedTokenError) T(ParserStrayEscapeTokenError) T(ParserIndentationMismatchError) T(ParserBadIndentationLevelError) T(ParserStrayStatementTokenError) T(SyntaxCallExpressionEmptyError) T(SyntaxTooManyArgumentsError) T(SyntaxNotEnoughArgumentsError) T(SyntaxUnnamedForwardDeclarationError) T(SyntaxVariadicSymbolNotLastError) T(SyntaxAssignmentTokenExpectedError) T(SyntaxKeyedArgumentMismatchError) T(SyntaxUnexpectedExtraTokenError) T(SyntaxUndeclaredIdentifierError) T(SyntaxExceptBlockExpectedError) T(SyntaxMissingDefaultCaseError) T(SyntaxCaseBlockExpectedError) T(SyntaxLabelExpectedError) T(SyntaxSymbolExpanderTypeMismatchError) T(SyntaxListExpanderTypeMismatchError) T(SyntaxExcessBindingArgumentError) T(TypeKindMismatchError) T(ValueKindMismatchError) T(CannotCreateConstantOfError) T(ConstantExpectedError) T(ConstantValueKindMismatchError) T(TypedConstantValueKindMismatchError) T(TooManyArgumentsError) T(NotEnoughArgumentsError) T(CannotTypeInlineError) T(ValueMustBeReferenceError) T(NonReadableReferenceError) T(NonWritableReferenceError) T(NonReadablePointerError) T(NonWritablePointerError) T(MergeConflictError) T(InaccessibleValueError) T(DropReturnsArgumentsError) T(RecursiveDropError) T(SwitchPassMovedValueError) T(CaseValueExpectedError) T(BadIndirectCaseArgumentListError) T(DuplicateCaseLiteralError) T(LoopMovedValueError) T(ViewExitingScopeError) T(MovingGlobalUniqueError) T(DuplicateParameterKeyError) T(UnknownParameterKeyError) T(BreakOutsideLoopError) T(RepeatOutsideLoopError) T(LabelExpectedError) T(RecursiveFunctionChangedTypeError) T(UnknownTupleFieldError) T(PlainToUniqueCastError) T(ManagedPointerCannotLoadError) T(UniqueValueExpectedError) T(CannotDupeManagedPointerError) T(SimilarViewValueExpectedForStoreError) T(IncompatibleStorageTypeForUniqueError) T(SpiceMacroReturnedNullError) T(UnsupportedDimensionalityError) T(UnsupportedExecutionModeError) T(CastCategoryError) T(CastSizeError) T(CastIncompatibleAggregateTypeError) T(InvalidOperandsError) T(InvalidArgumentTypeForBuiltinError) T(UnsupportedBuiltinError) T(InvalidCalleeError) T(TooManyFunctionArgumentsError) T(NotEnoughFunctionArgumentsError) T(DuplicateSwitchDefaultCaseError) T(MissingDefaultCaseError) T(UnclosedPassError) T(DoWithoutPassError) T(VariadicParameterNotLastError) T(RecursionOverflowError) T(ResultMustBePureError) T(GlobalInitializerMustBePureError) T(NoGlobalInitializerError) T(NoGlobalConstructorError) T(ParameterTypeMismatchError) T(FunctionPointerExpectedError) T(ScalarOrVectorExpectedError) T(FixedVectorSizeMismatchError) T(VectorSizeMismatchError) T(TypeMismatchError) T(InvalidMatrixSizeError) T(ConditionNotBoolError) T(UnexpectedValueKindError) T(UnresolvedValueError) T(PtrToGlobalHandlerMissingError) T(CannotSerializeTypeError) T(PrematureReturnFromExpressionError) T(OpaqueTypeError) T(UntrackedTypeError) T(MovableTypeMismatchError) T(DupeUniqueStorageError) T(GenericIndexOutOfRangeError) T(ShuffleVectorIndexOutOfRangeError) T(ExtractStringConstantIndexOutOfRangeError) T(ArgumentsTypeIndexOutOfRangeError) T(FunctionTypeIndexOutOfRangeError) T(ArrayOrVectorTypeIndexOutOfRangeError) T(TupleTypeIndexOutOfRangeError) T(TypenameCompleteError) T(TypenameIncompleteError) T(TypenameIncompatibleStorageError) T(StorageTypeExpectedError) T(PlainStorageTypeExpectedError) T(VariableOutOfScopeError) T(UnboundValueError) T(CannotProveForwardDeclarationError) T(QuoteUnsupportedValueKindError) T(QuoteUnboundValueError) T(CGenTypeUnsupportedInTargetError) T(CGenFailedToTranslateTypeError) T(CGenUnboundValueError) T(CGenInvalidRedeclarationError) T(CGenUnsupportedBuiltinError) T(CGenUnsupportedArrayAllocError) T(CGenUnsupportedMallocError) T(CGenUnsupportedUnOpError) T(CGenUnsupportedBinOpError) T(CGenUnsupportedTriOpError) T(CGenUnsupportedImageOpError) T(CGenUnsupportedCastOpError) T(CGenUnsupportedAtomicOpError) T(CGenUnsupportedTargetError) T(CGenInvalidCalleeError) T(CGenFailedToTranslateValueError) T(CGenUnsupportedInstructionError) T(CGenFailedToResolveExternError) T(CGenRecursiveConstructorError) T(CGenBackendFailedError) T(CGenBackendFailedErrnoError) T(CGenCannotSerializeConstPointerError) T(CGenBackendValidationFailedError) T(CGenBackendOptimizationFailedError) T(CGenUnsupportedCapabilityError) T(CGenUnsupportedDimensionalityError) T(CGenUnsupportedImageFormatError) T(CGenUnsupportedExecutionModeError) T(CGenUnrecognizedSymbolicMaskError) T(CGenUnsupportedPointerStorageClassError) T(CGenUnsupportedArgumentPointerStorageClassError) T(CGenUnsupportedBufferAlignmentError) T(CGenUnsupportedReturnArgumentError) T(CGenUnsupportedIntrinsicError) T(CGenEntryFunctionSignatureMismatchError) T(CGenUnsupportedVectorSizeError) T(CGenUnsupportedMatrixSizeError) T(RTLoadLibraryFailedError) T(RTGetAddressFailedError) T(RTMissingKeyError) T(RTMissingScopeAnyAttributeError) T(RTMissingLocalScopeAnyAttributeError) T(RTMissingScopeAttributeError) T(RTMissingLocalScopeAttributeError) T(RTMissingTypeAttributeError) T(RTMissingLocalTypeAttributeError) T(RTMissingTupleAttributeError) T(RTRegExError) T(RTUnableToOpenFileError) T(RTUncountableStorageTypeError) T(RTNoElementsInStorageTypeError) T(RTNoNamedElementsInStorageTypeError) T(RTTypeBitcountMismatchError) T(RTUndefinedAttributeError) T(MainInaccessibleBinaryError) T(InvalidFooterError) T(CoreModuleFunctionTypeMismatchError) T(CoreMissingError) T(UserError) T(ExecutionEngineFailedError) T(OptimizationPassFailedError) T(StackOverflowError) T(SourceText) T(SourceLocation) T(UnknownOriginTrace) T(DummyTrace) T(TraceTrace) T(CallTrace) T(ParserTrace) T(ExpanderTrace) T(InvokeHookTrace) T(ProveExpressionTrace) T(ProveTemplateTrace) T(ProveArgumentTrace) T(ProveParamMapTrace) T(ProveArgumentLifetimeTrace) T(ProveDropTrace) T(TranslateTrace) T(QuoteTrace) T(UnwrapTrace) T(BuiltinTrace) T(BindSymbolTrace) T(FollowSymbolTrace) T(BindExprTrace) T(FollowExprTrace) T(ConvertForeignTypeTrace) T(ConvertForeignValueTrace) T(UserTrace) T(String) T(Symbol) T(Builtin) T(ListBuffer) T(ListSlice) T(ScopeCell) T(Closure) T(QualifyType) T(ArgumentsType) T(TypenameType) T(IntegerType) T(RealType) T(PointerType) T(ArrayType) T(VectorType) T(MatrixType) T(TupleType) T(FunctionType) T(SamplerType) T(ImageType) T(SampledImageType) T(ReferQualifier) T(UniqueQualifier) T(ViewQualifier) T(MutateQualifier) T(KeyQualifier) T(Template) T(LabelTemplate) T(Loop) T(LoopArguments) T(KeyedTemplate) T(Expression) T(Quote) T(Unquote) T(CompileStage) T(CondTemplate) T(SwitchTemplate) T(CaseTemplate) T(MergeTemplate) T(CallTemplate) T(ArgumentListTemplate) T(ExtractArgumentTemplate) T(ParameterTemplate) T(Keyed) T(Parameter) T(Exception) T(ArgumentList) T(Block) T(ExtractArgument) T(LoopLabelArguments) T(Function) T(Global) T(PureCast) T(Undef) T(ConstNull) T(ConstInt) T(ConstReal) T(ConstString) T(ConstAggregate) T(ConstPointer) T(ConstValue) T(Label) T(LoopLabel) T(CondBr) T(Switch) T(Call) T(Select) T(ExtractValue) T(InsertValue) T(GetElementPtr) T(ExtractElement) T(InsertElement) T(ShuffleVector) T(Alloca) T(Malloc) T(Free) T(Load) T(Store) T(AtomicRMW) T(CmpXchg) T(Barrier) T(ICmp) T(FCmp) T(UnOp) T(BinOp) T(Annotate) T(ExecutionMode) T(Cast) T(Merge) T(Repeat) T(Return) T(Raise) T(Unreachable) T(Discard)
+SCOPES_DEFINE_TYPE_ID_ENUM(ValueKind)
+#define TYPE_ENUM_ErrorKind(T, U) U(ParserBadTasteError, ValueKind) U(ParserUnterminatedSequenceError, ValueKind) U(ParserUnexpectedLineBreakError, ValueKind) U(ParserInvalidIntegerSuffixError, ValueKind) U(ParserInvalidRealSuffixError, ValueKind) U(ParserUnclosedOpenBracketError, ValueKind) U(ParserStrayClosingBracketError, ValueKind) U(ParserUnterminatedQuoteError, ValueKind) U(ParserUnexpectedTokenError, ValueKind) U(ParserStrayEscapeTokenError, ValueKind) U(ParserIndentationMismatchError, ValueKind) U(ParserBadIndentationLevelError, ValueKind) U(ParserStrayStatementTokenError, ValueKind) U(SyntaxCallExpressionEmptyError, ValueKind) U(SyntaxTooManyArgumentsError, ValueKind) U(SyntaxNotEnoughArgumentsError, ValueKind) U(SyntaxUnnamedForwardDeclarationError, ValueKind) U(SyntaxVariadicSymbolNotLastError, ValueKind) U(SyntaxAssignmentTokenExpectedError, ValueKind) U(SyntaxKeyedArgumentMismatchError, ValueKind) U(SyntaxUnexpectedExtraTokenError, ValueKind) U(SyntaxUndeclaredIdentifierError, ValueKind) U(SyntaxExceptBlockExpectedError, ValueKind) U(SyntaxMissingDefaultCaseError, ValueKind) U(SyntaxCaseBlockExpectedError, ValueKind) U(SyntaxLabelExpectedError, ValueKind) U(SyntaxSymbolExpanderTypeMismatchError, ValueKind) U(SyntaxListExpanderTypeMismatchError, ValueKind) U(SyntaxExcessBindingArgumentError, ValueKind) U(TypeKindMismatchError, ValueKind) U(ValueKindMismatchError, ValueKind) U(CannotCreateConstantOfError, ValueKind) U(ConstantExpectedError, ValueKind) U(ConstantValueKindMismatchError, ValueKind) U(TypedConstantValueKindMismatchError, ValueKind) U(TooManyArgumentsError, ValueKind) U(NotEnoughArgumentsError, ValueKind) U(CannotTypeInlineError, ValueKind) U(ValueMustBeReferenceError, ValueKind) U(NonReadableReferenceError, ValueKind) U(NonWritableReferenceError, ValueKind) U(NonReadablePointerError, ValueKind) U(NonWritablePointerError, ValueKind) U(MergeConflictError, ValueKind) U(InaccessibleValueError, ValueKind) U(DropReturnsArgumentsError, ValueKind) U(RecursiveDropError, ValueKind) U(SwitchPassMovedValueError, ValueKind) U(CaseValueExpectedError, ValueKind) U(BadIndirectCaseArgumentListError, ValueKind) U(DuplicateCaseLiteralError, ValueKind) U(LoopMovedValueError, ValueKind) U(ViewExitingScopeError, ValueKind) U(MovingGlobalUniqueError, ValueKind) U(DuplicateParameterKeyError, ValueKind) U(UnknownParameterKeyError, ValueKind) U(BreakOutsideLoopError, ValueKind) U(RepeatOutsideLoopError, ValueKind) U(LabelExpectedError, ValueKind) U(RecursiveFunctionChangedTypeError, ValueKind) U(UnknownTupleFieldError, ValueKind) U(PlainToUniqueCastError, ValueKind) U(ManagedPointerCannotLoadError, ValueKind) U(UniqueValueExpectedError, ValueKind) U(CannotDupeManagedPointerError, ValueKind) U(SimilarViewValueExpectedForStoreError, ValueKind) U(IncompatibleStorageTypeForUniqueError, ValueKind) U(SpiceMacroReturnedNullError, ValueKind) U(UnsupportedDimensionalityError, ValueKind) U(UnsupportedExecutionModeError, ValueKind) U(CastCategoryError, ValueKind) U(CastSizeError, ValueKind) U(CastIncompatibleAggregateTypeError, ValueKind) U(InvalidOperandsError, ValueKind) U(InvalidArgumentTypeForBuiltinError, ValueKind) U(UnsupportedBuiltinError, ValueKind) U(InvalidCalleeError, ValueKind) U(TooManyFunctionArgumentsError, ValueKind) U(NotEnoughFunctionArgumentsError, ValueKind) U(DuplicateSwitchDefaultCaseError, ValueKind) U(MissingDefaultCaseError, ValueKind) U(UnclosedPassError, ValueKind) U(DoWithoutPassError, ValueKind) U(VariadicParameterNotLastError, ValueKind) U(RecursionOverflowError, ValueKind) U(ResultMustBePureError, ValueKind) U(GlobalInitializerMustBePureError, ValueKind) U(NoGlobalInitializerError, ValueKind) U(NoGlobalConstructorError, ValueKind) U(ParameterTypeMismatchError, ValueKind) U(FunctionPointerExpectedError, ValueKind) U(ScalarOrVectorExpectedError, ValueKind) U(FixedVectorSizeMismatchError, ValueKind) U(VectorSizeMismatchError, ValueKind) U(TypeMismatchError, ValueKind) U(InvalidMatrixSizeError, ValueKind) U(ConditionNotBoolError, ValueKind) U(UnexpectedValueKindError, ValueKind) U(UnresolvedValueError, ValueKind) U(PtrToGlobalHandlerMissingError, ValueKind) U(CannotSerializeTypeError, ValueKind) U(PrematureReturnFromExpressionError, ValueKind) U(OpaqueTypeError, ValueKind) U(UntrackedTypeError, ValueKind) U(MovableTypeMismatchError, ValueKind) U(DupeUniqueStorageError, ValueKind) U(GenericIndexOutOfRangeError, ValueKind) U(ShuffleVectorIndexOutOfRangeError, ValueKind) U(ExtractStringConstantIndexOutOfRangeError, ValueKind) U(ArgumentsTypeIndexOutOfRangeError, ValueKind) U(FunctionTypeIndexOutOfRangeError, ValueKind) U(ArrayOrVectorTypeIndexOutOfRangeError, ValueKind) U(TupleTypeIndexOutOfRangeError, ValueKind) U(TypenameCompleteError, ValueKind) U(TypenameIncompleteError, ValueKind) U(TypenameIncompatibleStorageError, ValueKind) U(StorageTypeExpectedError, ValueKind) U(PlainStorageTypeExpectedError, ValueKind) U(VariableOutOfScopeError, ValueKind) U(UnboundValueError, ValueKind) U(CannotProveForwardDeclarationError, ValueKind) U(QuoteUnsupportedValueKindError, ValueKind) U(QuoteUnboundValueError, ValueKind) U(CGenTypeUnsupportedInTargetError, ValueKind) U(CGenFailedToTranslateTypeError, ValueKind) U(CGenUnboundValueError, ValueKind) U(CGenInvalidRedeclarationError, ValueKind) U(CGenUnsupportedBuiltinError, ValueKind) U(CGenUnsupportedArrayAllocError, ValueKind) U(CGenUnsupportedMallocError, ValueKind) U(CGenUnsupportedUnOpError, ValueKind) U(CGenUnsupportedBinOpError, ValueKind) U(CGenUnsupportedTriOpError, ValueKind) U(CGenUnsupportedImageOpError, ValueKind) U(CGenUnsupportedCastOpError, ValueKind) U(CGenUnsupportedAtomicOpError, ValueKind) U(CGenUnsupportedTargetError, ValueKind) U(CGenInvalidCalleeError, ValueKind) U(CGenFailedToTranslateValueError, ValueKind) U(CGenUnsupportedInstructionError, ValueKind) U(CGenFailedToResolveExternError, ValueKind) U(CGenRecursiveConstructorError, ValueKind) U(CGenBackendFailedError, ValueKind) U(CGenBackendFailedErrnoError, ValueKind) U(CGenCannotSerializeConstPointerError, ValueKind) U(CGenBackendValidationFailedError, ValueKind) U(CGenBackendOptimizationFailedError, ValueKind) U(CGenUnsupportedCapabilityError, ValueKind) U(CGenUnsupportedDimensionalityError, ValueKind) U(CGenUnsupportedImageFormatError, ValueKind) U(CGenUnsupportedExecutionModeError, ValueKind) U(CGenUnrecognizedSymbolicMaskError, ValueKind) U(CGenUnsupportedPointerStorageClassError, ValueKind) U(CGenUnsupportedArgumentPointerStorageClassError, ValueKind) U(CGenUnsupportedBufferAlignmentError, ValueKind) U(CGenUnsupportedReturnArgumentError, ValueKind) U(CGenUnsupportedIntrinsicError, ValueKind) U(CGenEntryFunctionSignatureMismatchError, ValueKind) U(CGenUnsupportedVectorSizeError, ValueKind) U(CGenUnsupportedMatrixSizeError, ValueKind) U(RTLoadLibraryFailedError, ValueKind) U(RTGetAddressFailedError, ValueKind) U(RTMissingKeyError, ValueKind) U(RTMissingScopeAnyAttributeError, ValueKind) U(RTMissingLocalScopeAnyAttributeError, ValueKind) U(RTMissingScopeAttributeError, ValueKind) U(RTMissingLocalScopeAttributeError, ValueKind) U(RTMissingTypeAttributeError, ValueKind) U(RTMissingLocalTypeAttributeError, ValueKind) U(RTMissingTupleAttributeError, ValueKind) U(RTRegExError, ValueKind) U(RTUnableToOpenFileError, ValueKind) U(RTUncountableStorageTypeError, ValueKind) U(RTNoElementsInStorageTypeError, ValueKind) U(RTNoNamedElementsInStorageTypeError, ValueKind) U(RTTypeBitcountMismatchError, ValueKind) U(RTUndefinedAttributeError, ValueKind) U(MainInaccessibleBinaryError, ValueKind) U(InvalidFooterError, ValueKind) U(CoreModuleFunctionTypeMismatchError, ValueKind) U(CoreMissingError, ValueKind) U(UserError, ValueKind) U(ExecutionEngineFailedError, ValueKind) U(OptimizationPassFailedError, ValueKind) U(StackOverflowError, ValueKind)
+SCOPES_DEFINE_TYPE_ID_ENUM(ErrorKind)
+#define TYPE_ENUM_TraceKind(T, U) U(UnknownOriginTrace, ValueKind) U(DummyTrace, ValueKind) U(TraceTrace, ValueKind) U(CallTrace, ValueKind) U(ParserTrace, ValueKind) U(ExpanderTrace, ValueKind) U(InvokeHookTrace, ValueKind) U(ProveExpressionTrace, ValueKind) U(ProveTemplateTrace, ValueKind) U(ProveArgumentTrace, ValueKind) U(ProveParamMapTrace, ValueKind) U(ProveArgumentLifetimeTrace, ValueKind) U(ProveDropTrace, ValueKind) U(TranslateTrace, ValueKind) U(QuoteTrace, ValueKind) U(UnwrapTrace, ValueKind) U(BuiltinTrace, ValueKind) U(BindSymbolTrace, ValueKind) U(FollowSymbolTrace, ValueKind) U(BindExprTrace, ValueKind) U(FollowExprTrace, ValueKind) U(ConvertForeignTypeTrace, ValueKind) U(ConvertForeignValueTrace, ValueKind) U(UserTrace, ValueKind)
+SCOPES_DEFINE_TYPE_ID_ENUM(TraceKind)
+#define TYPE_ENUM_TypeKind(T, U) U(QualifyType, ValueKind) U(ArgumentsType, ValueKind) U(TypenameType, ValueKind) U(IntegerType, ValueKind) U(RealType, ValueKind) U(PointerType, ValueKind) U(ArrayType, ValueKind) U(VectorType, ValueKind) U(MatrixType, ValueKind) U(TupleType, ValueKind) U(FunctionType, ValueKind) U(SamplerType, ValueKind) U(ImageType, ValueKind) U(SampledImageType, ValueKind)
+SCOPES_DEFINE_TYPE_ID_ENUM(TypeKind)
+#define TYPE_ENUM_QualifierKind(T, U) U(ReferQualifier, ValueKind) U(UniqueQualifier, ValueKind) U(ViewQualifier, ValueKind) U(MutateQualifier, ValueKind) U(KeyQualifier, ValueKind)
+SCOPES_DEFINE_TYPE_ID_ENUM(QualifierKind)
#define TYPE_FIELDS_Value(T)
SCOPES_DEFINE_ROOT_TYPE(Abstract, Value, ValueKind)
#define TYPE_FIELDS_Error(T) T(by, Anchor)
@@ 544,31 546,12 @@ SCOPES_DEFINE_TYPE(Concrete, MutateQuali
#define TYPE_FIELDS_KeyQualifier(T) T(key, Symbol)
SCOPES_DEFINE_TYPE(Concrete, KeyQualifier, Qualifier, QualifierKind)
#define TYPE_FIELDS_UntypedValue(T)
-#define TYPE_SUBTYPES_UntypedValue(T) T(Concrete, Template) T(Abstract, LabelTemplate) T(Concrete, Loop) T(Concrete, LoopArguments) T(Concrete, KeyedTemplate) T(Concrete, Expression) T(Concrete, Quote) T(Concrete, Unquote) T(Concrete, CompileStage) T(Concrete, CondTemplate) T(Concrete, SwitchTemplate) T(Abstract, CaseTemplate) T(Concrete, MergeTemplate) T(Concrete, CallTemplate) T(Concrete, ArgumentListTemplate) T(Concrete, ExtractArgumentTemplate) T(Concrete, ParameterTemplate)
+#define TYPE_SUBTYPES_UntypedValue(T) T(Concrete, Template) T(Concrete, LabelTemplate) T(Concrete, Loop) T(Concrete, LoopArguments) T(Concrete, KeyedTemplate) T(Concrete, Expression) T(Concrete, Quote) T(Concrete, Unquote) T(Concrete, CompileStage) T(Concrete, CondTemplate) T(Concrete, SwitchTemplate) T(Concrete, CaseTemplate) T(Concrete, MergeTemplate) T(Concrete, CallTemplate) T(Concrete, ArgumentListTemplate) T(Concrete, ExtractArgumentTemplate) T(Concrete, ParameterTemplate)
SCOPES_DEFINE_TYPE(Abstract, UntypedValue, Value, ValueKind)
#define TYPE_FIELDS_Template(T) T(name, Symbol) T(params, ParameterTemplates) T(value, Value) T(is_inline, SCOPES_bool) T(default_view_parameters, SCOPES_bool) T(lazy_expression, SCOPES_bool) T(docstring, SCOPES_OPTIONAL_ID_TYPE(String)) T(recursion, SCOPES_i32)
SCOPES_DEFINE_TYPE(Concrete, Template, UntypedValue, ValueKind)
-#define TYPE_FIELDS_LabelTemplate(T) T(name, Symbol) T(value, SCOPES_OPTIONAL_ID_TYPE(Value))
-#define TYPE_SUBTYPES_LabelTemplate(T) T(Concrete, UserLabelTemplate) T(Concrete, InlineLabelTemplate) T(Concrete, TryLabelTemplate) T(Concrete, ExceptLabelTemplate) T(Concrete, ExceptAllLabelTemplate) T(Concrete, ThenLabelTemplate) T(Concrete, BreakLabelTemplate) T(Concrete, BranchMergeLabelTemplate) T(Concrete, TypeOfLabelTemplate)
-SCOPES_DEFINE_TYPE(Abstract, LabelTemplate, UntypedValue, LabelTemplateKind)
-#define TYPE_FIELDS_UserLabelTemplate(T) T(name, Symbol) T(value, SCOPES_OPTIONAL_ID_TYPE(Value))
-SCOPES_DEFINE_TYPE(Concrete, UserLabelTemplate, LabelTemplate, LabelTemplateKind)
-#define TYPE_FIELDS_InlineLabelTemplate(T) T(name, Symbol) T(value, SCOPES_OPTIONAL_ID_TYPE(Value))
-SCOPES_DEFINE_TYPE(Concrete, InlineLabelTemplate, LabelTemplate, LabelTemplateKind)
-#define TYPE_FIELDS_TryLabelTemplate(T) T(name, Symbol) T(value, SCOPES_OPTIONAL_ID_TYPE(Value))
-SCOPES_DEFINE_TYPE(Concrete, TryLabelTemplate, LabelTemplate, LabelTemplateKind)
-#define TYPE_FIELDS_ExceptLabelTemplate(T) T(name, Symbol) T(value, SCOPES_OPTIONAL_ID_TYPE(Value))
-SCOPES_DEFINE_TYPE(Concrete, ExceptLabelTemplate, LabelTemplate, LabelTemplateKind)
-#define TYPE_FIELDS_ExceptAllLabelTemplate(T) T(name, Symbol) T(value, SCOPES_OPTIONAL_ID_TYPE(Value))
-SCOPES_DEFINE_TYPE(Concrete, ExceptAllLabelTemplate, LabelTemplate, LabelTemplateKind)
-#define TYPE_FIELDS_ThenLabelTemplate(T) T(name, Symbol) T(value, SCOPES_OPTIONAL_ID_TYPE(Value))
-SCOPES_DEFINE_TYPE(Concrete, ThenLabelTemplate, LabelTemplate, LabelTemplateKind)
-#define TYPE_FIELDS_BreakLabelTemplate(T) T(name, Symbol) T(value, SCOPES_OPTIONAL_ID_TYPE(Value))
-SCOPES_DEFINE_TYPE(Concrete, BreakLabelTemplate, LabelTemplate, LabelTemplateKind)
-#define TYPE_FIELDS_BranchMergeLabelTemplate(T) T(name, Symbol) T(value, SCOPES_OPTIONAL_ID_TYPE(Value))
-SCOPES_DEFINE_TYPE(Concrete, BranchMergeLabelTemplate, LabelTemplate, LabelTemplateKind)
-#define TYPE_FIELDS_TypeOfLabelTemplate(T) T(name, Symbol) T(value, SCOPES_OPTIONAL_ID_TYPE(Value))
-SCOPES_DEFINE_TYPE(Concrete, TypeOfLabelTemplate, LabelTemplate, LabelTemplateKind)
+#define TYPE_FIELDS_LabelTemplate(T) T(label_kind, LabelKind) T(name, Symbol) T(value, SCOPES_OPTIONAL_ID_TYPE(Value))
+SCOPES_DEFINE_TYPE(Concrete, LabelTemplate, UntypedValue, ValueKind)
#define TYPE_FIELDS_Loop(T) T(init, Value) T(value, Value) T(args, LoopArguments)
SCOPES_DEFINE_TYPE(Concrete, Loop, UntypedValue, ValueKind)
#define TYPE_FIELDS_LoopArguments(T) T(loop, SCOPES_OPTIONAL_ID_TYPE(Loop))
@@ 587,20 570,8 @@ SCOPES_DEFINE_TYPE(Concrete, CompileStag
SCOPES_DEFINE_TYPE(Concrete, CondTemplate, UntypedValue, ValueKind)
#define TYPE_FIELDS_SwitchTemplate(T) T(expr, Value) T(cases, Values)
SCOPES_DEFINE_TYPE(Concrete, SwitchTemplate, UntypedValue, ValueKind)
-#define TYPE_FIELDS_CaseTemplate(T) T(value, Value)
-#define TYPE_SUBTYPES_CaseTemplate(T) T(Abstract, LiteralCaseTemplate) T(Concrete, DoCase) T(Concrete, DefaultCase)
-SCOPES_DEFINE_TYPE(Abstract, CaseTemplate, UntypedValue, CaseKind)
-#define TYPE_FIELDS_LiteralCaseTemplate(T) T(value, Value) T(literal, Value)
-#define TYPE_SUBTYPES_LiteralCaseTemplate(T) T(Concrete, Case) T(Concrete, Pass)
-SCOPES_DEFINE_TYPE(Abstract, LiteralCaseTemplate, CaseTemplate, CaseKind)
-#define TYPE_FIELDS_Case(T) T(value, Value) T(literal, Value)
-SCOPES_DEFINE_TYPE(Concrete, Case, LiteralCaseTemplate, CaseKind)
-#define TYPE_FIELDS_Pass(T) T(value, Value) T(literal, Value)
-SCOPES_DEFINE_TYPE(Concrete, Pass, LiteralCaseTemplate, CaseKind)
-#define TYPE_FIELDS_DoCase(T) T(value, Value)
-SCOPES_DEFINE_TYPE(Concrete, DoCase, CaseTemplate, CaseKind)
-#define TYPE_FIELDS_DefaultCase(T) T(value, Value)
-SCOPES_DEFINE_TYPE(Concrete, DefaultCase, CaseTemplate, CaseKind)
+#define TYPE_FIELDS_CaseTemplate(T) T(case_kind, CaseKind) T(value, Value) T(literal, SCOPES_OPTIONAL_ID_TYPE(Value))
+SCOPES_DEFINE_TYPE(Concrete, CaseTemplate, UntypedValue, ValueKind)
#define TYPE_FIELDS_MergeTemplate(T) T(label, LabelTemplate) T(value, Value)
SCOPES_DEFINE_TYPE(Concrete, MergeTemplate, UntypedValue, ValueKind)
#define TYPE_FIELDS_CallTemplate(T) T(callee, Value) T(args, Values) T(flags, CallTemplateFlags)
@@ 657,29 628,10 @@ SCOPES_DEFINE_TYPE(Concrete, ConstPointe
#define TYPE_FIELDS_ConstValue(T) T(type, Type) T(value, Value)
SCOPES_DEFINE_TYPE(Concrete, ConstValue, Const, ValueKind)
#define TYPE_FIELDS_Instruction(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block))
-#define TYPE_SUBTYPES_Instruction(T) T(Abstract, Label) T(Concrete, LoopLabel) T(Concrete, CondBr) T(Concrete, Switch) T(Concrete, Call) T(Concrete, Select) T(Concrete, ExtractValue) T(Concrete, InsertValue) T(Concrete, GetElementPtr) T(Concrete, ExtractElement) T(Concrete, InsertElement) T(Concrete, ShuffleVector) T(Concrete, Alloca) T(Concrete, Malloc) T(Concrete, Free) T(Concrete, Load) T(Concrete, Store) T(Abstract, AtomicRMW) T(Concrete, CmpXchg) T(Abstract, Barrier) T(Abstract, ICmp) T(Abstract, FCmp) T(Abstract, UnOp) T(Abstract, BinOp) T(Concrete, Annotate) T(Concrete, ExecutionMode) T(Abstract, Cast) T(Abstract, Terminator)
+#define TYPE_SUBTYPES_Instruction(T) T(Concrete, Label) T(Concrete, LoopLabel) T(Concrete, CondBr) T(Concrete, Switch) T(Concrete, Call) T(Concrete, Select) T(Concrete, ExtractValue) T(Concrete, InsertValue) T(Concrete, GetElementPtr) T(Concrete, ExtractElement) T(Concrete, InsertElement) T(Concrete, ShuffleVector) T(Concrete, Alloca) T(Concrete, Malloc) T(Concrete, Free) T(Concrete, Load) T(Concrete, Store) T(Concrete, AtomicRMW) T(Concrete, CmpXchg) T(Concrete, Barrier) T(Concrete, ICmp) T(Concrete, FCmp) T(Concrete, UnOp) T(Concrete, BinOp) T(Concrete, Annotate) T(Concrete, ExecutionMode) T(Concrete, Cast) T(Abstract, Terminator)
SCOPES_DEFINE_TYPE(Abstract, Instruction, TypedValue, ValueKind)
-#define TYPE_FIELDS_Label(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(body, Block) T(merges, Merges) T(splitpoints, SCOPES_SET_TYPE(TypedValue))
-#define TYPE_SUBTYPES_Label(T) T(Concrete, UserLabel) T(Concrete, InlineLabel) T(Concrete, TryLabel) T(Concrete, ExceptLabel) T(Concrete, ExceptAllLabel) T(Concrete, ThenLabel) T(Concrete, BreakLabel) T(Concrete, BranchMergeLabel) T(Concrete, TypeOfLabel)
-SCOPES_DEFINE_TYPE(Abstract, Label, Instruction, LabelKind)
-#define TYPE_FIELDS_UserLabel(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(body, Block) T(merges, Merges) T(splitpoints, SCOPES_SET_TYPE(TypedValue))
-SCOPES_DEFINE_TYPE(Concrete, UserLabel, Label, LabelKind)
-#define TYPE_FIELDS_InlineLabel(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(body, Block) T(merges, Merges) T(splitpoints, SCOPES_SET_TYPE(TypedValue))
-SCOPES_DEFINE_TYPE(Concrete, InlineLabel, Label, LabelKind)
-#define TYPE_FIELDS_TryLabel(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(body, Block) T(merges, Merges) T(splitpoints, SCOPES_SET_TYPE(TypedValue))
-SCOPES_DEFINE_TYPE(Concrete, TryLabel, Label, LabelKind)
-#define TYPE_FIELDS_ExceptLabel(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(body, Block) T(merges, Merges) T(splitpoints, SCOPES_SET_TYPE(TypedValue))
-SCOPES_DEFINE_TYPE(Concrete, ExceptLabel, Label, LabelKind)
-#define TYPE_FIELDS_ExceptAllLabel(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(body, Block) T(merges, Merges) T(splitpoints, SCOPES_SET_TYPE(TypedValue))
-SCOPES_DEFINE_TYPE(Concrete, ExceptAllLabel, Label, LabelKind)
-#define TYPE_FIELDS_ThenLabel(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(body, Block) T(merges, Merges) T(splitpoints, SCOPES_SET_TYPE(TypedValue))
-SCOPES_DEFINE_TYPE(Concrete, ThenLabel, Label, LabelKind)
-#define TYPE_FIELDS_BreakLabel(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(body, Block) T(merges, Merges) T(splitpoints, SCOPES_SET_TYPE(TypedValue))
-SCOPES_DEFINE_TYPE(Concrete, BreakLabel, Label, LabelKind)
-#define TYPE_FIELDS_BranchMergeLabel(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(body, Block) T(merges, Merges) T(splitpoints, SCOPES_SET_TYPE(TypedValue))
-SCOPES_DEFINE_TYPE(Concrete, BranchMergeLabel, Label, LabelKind)
-#define TYPE_FIELDS_TypeOfLabel(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(body, Block) T(merges, Merges) T(splitpoints, SCOPES_SET_TYPE(TypedValue))
-SCOPES_DEFINE_TYPE(Concrete, TypeOfLabel, Label, LabelKind)
+#define TYPE_FIELDS_Label(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(label_kind, LabelKind) T(body, Block) T(merges, Merges) T(splitpoints, SCOPES_SET_TYPE(TypedValue))
+SCOPES_DEFINE_TYPE(Concrete, Label, Instruction, ValueKind)
#define TYPE_FIELDS_LoopLabel(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(init, TypedValues) T(body, Block) T(repeats, Repeats) T(args, LoopLabelArguments)
SCOPES_DEFINE_TYPE(Concrete, LoopLabel, Instruction, ValueKind)
#define TYPE_FIELDS_CondBr(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(cond, TypedValue) T(then_body, Block) T(else_body, Block)
@@ 712,253 664,26 @@ SCOPES_DEFINE_TYPE(Concrete, Free, Instr
SCOPES_DEFINE_TYPE(Concrete, Load, Instruction, ValueKind)
#define TYPE_FIELDS_Store(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue) T(target, TypedValue) T(is_volatile, SCOPES_bool)
SCOPES_DEFINE_TYPE(Concrete, Store, Instruction, ValueKind)
-#define TYPE_FIELDS_AtomicRMW(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-#define TYPE_SUBTYPES_AtomicRMW(T) T(Concrete, AtomicXchg) T(Concrete, AtomicAdd) T(Concrete, AtomicSub) T(Concrete, AtomicBAnd) T(Concrete, AtomicBNAnd) T(Concrete, AtomicBOr) T(Concrete, AtomicBXor) T(Concrete, AtomicSMin) T(Concrete, AtomicSMax) T(Concrete, AtomicUMin) T(Concrete, AtomicUMax) T(Concrete, AtomicFAdd) T(Concrete, AtomicFSub)
-SCOPES_DEFINE_TYPE(Abstract, AtomicRMW, Instruction, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicXchg(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicXchg, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicAdd(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicAdd, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicSub(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicSub, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicBAnd(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicBAnd, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicBNAnd(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicBNAnd, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicBOr(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicBOr, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicBXor(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicBXor, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicSMin(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicSMin, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicSMax(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicSMax, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicUMin(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicUMin, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicUMax(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicUMax, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicFAdd(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicFAdd, AtomicRMW, AtomicRMWOpKind)
-#define TYPE_FIELDS_AtomicFSub(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, AtomicFSub, AtomicRMW, AtomicRMWOpKind)
+#define TYPE_FIELDS_AtomicRMW(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(op, AtomicRMWOpKind) T(target, TypedValue) T(value, TypedValue)
+SCOPES_DEFINE_TYPE(Concrete, AtomicRMW, Instruction, ValueKind)
#define TYPE_FIELDS_CmpXchg(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(target, TypedValue) T(cmp, TypedValue) T(value, TypedValue)
SCOPES_DEFINE_TYPE(Concrete, CmpXchg, Instruction, ValueKind)
-#define TYPE_FIELDS_Barrier(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block))
-#define TYPE_SUBTYPES_Barrier(T) T(Concrete, BarrierControl) T(Concrete, BarrierMemory) T(Concrete, BarrierMemoryGroup) T(Concrete, BarrierMemoryImage) T(Concrete, BarrierMemoryBuffer) T(Concrete, BarrierMemoryShared)
-SCOPES_DEFINE_TYPE(Abstract, Barrier, Instruction, BarrierKind)
-#define TYPE_FIELDS_BarrierControl(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block))
-SCOPES_DEFINE_TYPE(Concrete, BarrierControl, Barrier, BarrierKind)
-#define TYPE_FIELDS_BarrierMemory(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block))
-SCOPES_DEFINE_TYPE(Concrete, BarrierMemory, Barrier, BarrierKind)
-#define TYPE_FIELDS_BarrierMemoryGroup(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block))
-SCOPES_DEFINE_TYPE(Concrete, BarrierMemoryGroup, Barrier, BarrierKind)
-#define TYPE_FIELDS_BarrierMemoryImage(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block))
-SCOPES_DEFINE_TYPE(Concrete, BarrierMemoryImage, Barrier, BarrierKind)
-#define TYPE_FIELDS_BarrierMemoryBuffer(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block))
-SCOPES_DEFINE_TYPE(Concrete, BarrierMemoryBuffer, Barrier, BarrierKind)
-#define TYPE_FIELDS_BarrierMemoryShared(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block))
-SCOPES_DEFINE_TYPE(Concrete, BarrierMemoryShared, Barrier, BarrierKind)
-#define TYPE_FIELDS_ICmp(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-#define TYPE_SUBTYPES_ICmp(T) T(Concrete, ICmpEQ) T(Concrete, ICmpNE) T(Concrete, ICmpUGT) T(Concrete, ICmpUGE) T(Concrete, ICmpULT) T(Concrete, ICmpULE) T(Concrete, ICmpSGT) T(Concrete, ICmpSGE) T(Concrete, ICmpSLT) T(Concrete, ICmpSLE)
-SCOPES_DEFINE_TYPE(Abstract, ICmp, Instruction, ICmpKind)
-#define TYPE_FIELDS_ICmpEQ(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, ICmpEQ, ICmp, ICmpKind)
-#define TYPE_FIELDS_ICmpNE(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, ICmpNE, ICmp, ICmpKind)
-#define TYPE_FIELDS_ICmpUGT(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, ICmpUGT, ICmp, ICmpKind)
-#define TYPE_FIELDS_ICmpUGE(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, ICmpUGE, ICmp, ICmpKind)
-#define TYPE_FIELDS_ICmpULT(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, ICmpULT, ICmp, ICmpKind)
-#define TYPE_FIELDS_ICmpULE(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, ICmpULE, ICmp, ICmpKind)
-#define TYPE_FIELDS_ICmpSGT(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, ICmpSGT, ICmp, ICmpKind)
-#define TYPE_FIELDS_ICmpSGE(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, ICmpSGE, ICmp, ICmpKind)
-#define TYPE_FIELDS_ICmpSLT(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, ICmpSLT, ICmp, ICmpKind)
-#define TYPE_FIELDS_ICmpSLE(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, ICmpSLE, ICmp, ICmpKind)
-#define TYPE_FIELDS_FCmp(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-#define TYPE_SUBTYPES_FCmp(T) T(Concrete, FCmpOEQ) T(Concrete, FCmpONE) T(Concrete, FCmpORD) T(Concrete, FCmpOGT) T(Concrete, FCmpOGE) T(Concrete, FCmpOLT) T(Concrete, FCmpOLE) T(Concrete, FCmpUEQ) T(Concrete, FCmpUNE) T(Concrete, FCmpUNO) T(Concrete, FCmpUGT) T(Concrete, FCmpUGE) T(Concrete, FCmpULT) T(Concrete, FCmpULE)
-SCOPES_DEFINE_TYPE(Abstract, FCmp, Instruction, FCmpKind)
-#define TYPE_FIELDS_FCmpOEQ(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpOEQ, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpONE(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpONE, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpORD(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpORD, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpOGT(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpOGT, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpOGE(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpOGE, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpOLT(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpOLT, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpOLE(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpOLE, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpUEQ(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpUEQ, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpUNE(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpUNE, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpUNO(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpUNO, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpUGT(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpUGT, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpUGE(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpUGE, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpULT(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpULT, FCmp, FCmpKind)
-#define TYPE_FIELDS_FCmpULE(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, FCmpULE, FCmp, FCmpKind)
-#define TYPE_FIELDS_UnOp(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-#define TYPE_SUBTYPES_UnOp(T) T(Concrete, UnOpBitReverse) T(Concrete, UnOpBitCount) T(Concrete, UnOpFindMSB) T(Concrete, UnOpFindLSB) T(Concrete, UnOpFNeg) T(Concrete, UnOpSin) T(Concrete, UnOpCos) T(Concrete, UnOpTan) T(Concrete, UnOpAsin) T(Concrete, UnOpAcos) T(Concrete, UnOpAtan) T(Concrete, UnOpSinh) T(Concrete, UnOpCosh) T(Concrete, UnOpTanh) T(Concrete, UnOpASinh) T(Concrete, UnOpACosh) T(Concrete, UnOpATanh) T(Concrete, UnOpTrunc) T(Concrete, UnOpFloor) T(Concrete, UnOpFAbs) T(Concrete, UnOpLog) T(Concrete, UnOpLog2) T(Concrete, UnOpExp) T(Concrete, UnOpExp2) T(Concrete, UnOpSqrt)
-SCOPES_DEFINE_TYPE(Abstract, UnOp, Instruction, UnOpKind)
-#define TYPE_FIELDS_UnOpBitReverse(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpBitReverse, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpBitCount(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpBitCount, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpFindMSB(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpFindMSB, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpFindLSB(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpFindLSB, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpFNeg(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpFNeg, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpSin(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpSin, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpCos(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpCos, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpTan(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpTan, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpAsin(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpAsin, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpAcos(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpAcos, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpAtan(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpAtan, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpSinh(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpSinh, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpCosh(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpCosh, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpTanh(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpTanh, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpASinh(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpASinh, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpACosh(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpACosh, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpATanh(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpATanh, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpTrunc(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpTrunc, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpFloor(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpFloor, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpFAbs(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpFAbs, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpLog(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpLog, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpLog2(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpLog2, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpExp(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpExp, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpExp2(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpExp2, UnOp, UnOpKind)
-#define TYPE_FIELDS_UnOpSqrt(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, UnOpSqrt, UnOp, UnOpKind)
-#define TYPE_FIELDS_BinOp(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-#define TYPE_SUBTYPES_BinOp(T) T(Concrete, BinOpAdd) T(Concrete, BinOpAddNUW) T(Concrete, BinOpAddNSW) T(Concrete, BinOpSub) T(Concrete, BinOpSubNUW) T(Concrete, BinOpSubNSW) T(Concrete, BinOpMul) T(Concrete, BinOpMulNUW) T(Concrete, BinOpMulNSW) T(Concrete, BinOpUDiv) T(Concrete, BinOpSDiv) T(Concrete, BinOpURem) T(Concrete, BinOpSRem) T(Concrete, BinOpShl) T(Concrete, BinOpLShr) T(Concrete, BinOpAShr) T(Concrete, BinOpBAnd) T(Concrete, BinOpBOr) T(Concrete, BinOpBXor) T(Concrete, BinOpFAdd) T(Concrete, BinOpFSub) T(Concrete, BinOpFMul) T(Concrete, BinOpFDiv) T(Concrete, BinOpFRem) T(Concrete, BinOpAtan2) T(Concrete, BinOpPow)
-SCOPES_DEFINE_TYPE(Abstract, BinOp, Instruction, BinOpKind)
-#define TYPE_FIELDS_BinOpAdd(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpAdd, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpAddNUW(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpAddNUW, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpAddNSW(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpAddNSW, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpSub(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpSub, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpSubNUW(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpSubNUW, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpSubNSW(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpSubNSW, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpMul(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpMul, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpMulNUW(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpMulNUW, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpMulNSW(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpMulNSW, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpUDiv(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpUDiv, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpSDiv(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpSDiv, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpURem(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpURem, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpSRem(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpSRem, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpShl(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpShl, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpLShr(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpLShr, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpAShr(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpAShr, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpBAnd(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpBAnd, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpBOr(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpBOr, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpBXor(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpBXor, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpFAdd(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpFAdd, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpFSub(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpFSub, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpFMul(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpFMul, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpFDiv(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpFDiv, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpFRem(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpFRem, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpAtan2(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpAtan2, BinOp, BinOpKind)
-#define TYPE_FIELDS_BinOpPow(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value1, TypedValue) T(value2, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, BinOpPow, BinOp, BinOpKind)
+#define TYPE_FIELDS_Barrier(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(op, BarrierKind)
+SCOPES_DEFINE_TYPE(Concrete, Barrier, Instruction, ValueKind)
+#define TYPE_FIELDS_ICmp(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(op, ICmpKind) T(value1, TypedValue) T(value2, TypedValue)
+SCOPES_DEFINE_TYPE(Concrete, ICmp, Instruction, ValueKind)
+#define TYPE_FIELDS_FCmp(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(op, FCmpKind) T(value1, TypedValue) T(value2, TypedValue)
+SCOPES_DEFINE_TYPE(Concrete, FCmp, Instruction, ValueKind)
+#define TYPE_FIELDS_UnOp(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(op, UnOpKind) T(value, TypedValue)
+SCOPES_DEFINE_TYPE(Concrete, UnOp, Instruction, ValueKind)
+#define TYPE_FIELDS_BinOp(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(op, BinOpKind) T(value1, TypedValue) T(value2, TypedValue)
+SCOPES_DEFINE_TYPE(Concrete, BinOp, Instruction, ValueKind)
#define TYPE_FIELDS_Annotate(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(values, TypedValues)
SCOPES_DEFINE_TYPE(Concrete, Annotate, Instruction, ValueKind)
#define TYPE_FIELDS_ExecutionMode(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(mode, Symbol) T(values, i32x3)
SCOPES_DEFINE_TYPE(Concrete, ExecutionMode, Instruction, ValueKind)
-#define TYPE_FIELDS_Cast(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-#define TYPE_SUBTYPES_Cast(T) T(Concrete, CastBitcast) T(Concrete, CastIntToPtr) T(Concrete, CastPtrToInt) T(Concrete, CastSExt) T(Concrete, CastITrunc) T(Concrete, CastZExt) T(Concrete, CastFPTrunc) T(Concrete, CastFPExt) T(Concrete, CastFPToUI) T(Concrete, CastFPToSI) T(Concrete, CastUIToFP) T(Concrete, CastSIToFP) T(Concrete, CastPtrToRef) T(Concrete, CastRefToPtr) T(Concrete, CastCellToData) T(Concrete, CastDataToCell)
-SCOPES_DEFINE_TYPE(Abstract, Cast, Instruction, CastKind)
-#define TYPE_FIELDS_CastBitcast(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastBitcast, Cast, CastKind)
-#define TYPE_FIELDS_CastIntToPtr(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastIntToPtr, Cast, CastKind)
-#define TYPE_FIELDS_CastPtrToInt(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastPtrToInt, Cast, CastKind)
-#define TYPE_FIELDS_CastSExt(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastSExt, Cast, CastKind)
-#define TYPE_FIELDS_CastITrunc(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastITrunc, Cast, CastKind)
-#define TYPE_FIELDS_CastZExt(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastZExt, Cast, CastKind)
-#define TYPE_FIELDS_CastFPTrunc(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastFPTrunc, Cast, CastKind)
-#define TYPE_FIELDS_CastFPExt(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastFPExt, Cast, CastKind)
-#define TYPE_FIELDS_CastFPToUI(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastFPToUI, Cast, CastKind)
-#define TYPE_FIELDS_CastFPToSI(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastFPToSI, Cast, CastKind)
-#define TYPE_FIELDS_CastUIToFP(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastUIToFP, Cast, CastKind)
-#define TYPE_FIELDS_CastSIToFP(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastSIToFP, Cast, CastKind)
-#define TYPE_FIELDS_CastPtrToRef(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastPtrToRef, Cast, CastKind)
-#define TYPE_FIELDS_CastRefToPtr(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastRefToPtr, Cast, CastKind)
-#define TYPE_FIELDS_CastCellToData(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastCellToData, Cast, CastKind)
-#define TYPE_FIELDS_CastDataToCell(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(value, TypedValue)
-SCOPES_DEFINE_TYPE(Concrete, CastDataToCell, Cast, CastKind)
+#define TYPE_FIELDS_Cast(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(op, CastKind) T(value, TypedValue)
+SCOPES_DEFINE_TYPE(Concrete, Cast, Instruction, ValueKind)
#define TYPE_FIELDS_Terminator(T) T(type, Type) T(name, Symbol) T(block, SCOPES_OPTIONAL_ID_TYPE(Block)) T(values, TypedValues)
#define TYPE_SUBTYPES_Terminator(T) T(Concrete, Merge) T(Concrete, Repeat) T(Concrete, Return) T(Concrete, Raise) T(Concrete, Unreachable) T(Concrete, Discard)
SCOPES_DEFINE_TYPE(Abstract, Terminator, Instruction, ValueKind)
@@ 1006,7 731,7 @@ SCOPES_TYPEDEF(i32x3, SCOPES_SARRAY_TYPE
SCOPES_TYPEDEF(Repeats, SCOPES_DARRAY_TYPE(Repeat))
#define STRUCT_FIELDS_Location(T) T(line, SCOPES_i32) T(column, SCOPES_i32) T(offset, SCOPES_usize)
SCOPES_DEFINE_STRUCT(Location)
-#define STRUCT_FIELDS_SwitchCase(T) T(anchor, Anchor) T(literal, SCOPES_OPTIONAL_ID_TYPE(ConstInt)) T(body, Block)
+#define STRUCT_FIELDS_SwitchCase(T) T(anchor, Anchor) T(case_kind, CaseKind) T(literal, SCOPES_OPTIONAL_ID_TYPE(ConstInt)) T(body, Block)
SCOPES_DEFINE_STRUCT(SwitchCase)
SCOPES_IMPL_FIELDS(Concrete, Discard, Terminator)
SCOPES_IMPL_FIELDS(Concrete, Unreachable, Terminator)
@@ 1015,126 740,16 @@ SCOPES_IMPL_FIELDS(Concrete, Return, Ter
SCOPES_IMPL_FIELDS(Concrete, Repeat, Terminator)
SCOPES_IMPL_FIELDS(Concrete, Merge, Terminator)
SCOPES_IMPL_FIELDS(Abstract, Terminator, Instruction)
-SCOPES_IMPL_FIELDS(Concrete, CastDataToCell, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastCellToData, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastRefToPtr, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastPtrToRef, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastSIToFP, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastUIToFP, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastFPToSI, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastFPToUI, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastFPExt, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastFPTrunc, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastZExt, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastITrunc, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastSExt, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastPtrToInt, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastIntToPtr, Cast)
-SCOPES_IMPL_FIELDS(Concrete, CastBitcast, Cast)
-SCOPES_IMPL_FIELDS(Abstract, Cast, Instruction)
+SCOPES_IMPL_FIELDS(Concrete, Cast, Instruction)
SCOPES_IMPL_FIELDS(Concrete, ExecutionMode, Instruction)
SCOPES_IMPL_FIELDS(Concrete, Annotate, Instruction)
-SCOPES_IMPL_FIELDS(Concrete, BinOpPow, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpAtan2, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpFRem, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpFDiv, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpFMul, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpFSub, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpFAdd, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpBXor, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpBOr, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpBAnd, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpAShr, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpLShr, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpShl, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpSRem, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpURem, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpSDiv, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpUDiv, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpMulNSW, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpMulNUW, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpMul, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpSubNSW, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpSubNUW, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpSub, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpAddNSW, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpAddNUW, BinOp)
-SCOPES_IMPL_FIELDS(Concrete, BinOpAdd, BinOp)
-SCOPES_IMPL_FIELDS(Abstract, BinOp, Instruction)
-SCOPES_IMPL_FIELDS(Concrete, UnOpSqrt, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpExp2, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpExp, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpLog2, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpLog, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpFAbs, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpFloor, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpTrunc, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpATanh, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpACosh, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpASinh, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpTanh, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpCosh, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpSinh, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpAtan, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpAcos, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpAsin, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpTan, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpCos, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpSin, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpFNeg, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpFindLSB, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpFindMSB, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpBitCount, UnOp)
-SCOPES_IMPL_FIELDS(Concrete, UnOpBitReverse, UnOp)
-SCOPES_IMPL_FIELDS(Abstract, UnOp, Instruction)
-SCOPES_IMPL_FIELDS(Concrete, FCmpULE, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpULT, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpUGE, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpUGT, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpUNO, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpUNE, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpUEQ, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpOLE, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpOLT, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpOGE, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpOGT, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpORD, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpONE, FCmp)
-SCOPES_IMPL_FIELDS(Concrete, FCmpOEQ, FCmp)
-SCOPES_IMPL_FIELDS(Abstract, FCmp, Instruction)
-SCOPES_IMPL_FIELDS(Concrete, ICmpSLE, ICmp)
-SCOPES_IMPL_FIELDS(Concrete, ICmpSLT, ICmp)
-SCOPES_IMPL_FIELDS(Concrete, ICmpSGE, ICmp)
-SCOPES_IMPL_FIELDS(Concrete, ICmpSGT, ICmp)
-SCOPES_IMPL_FIELDS(Concrete, ICmpULE, ICmp)
-SCOPES_IMPL_FIELDS(Concrete, ICmpULT, ICmp)
-SCOPES_IMPL_FIELDS(Concrete, ICmpUGE, ICmp)
-SCOPES_IMPL_FIELDS(Concrete, ICmpUGT, ICmp)
-SCOPES_IMPL_FIELDS(Concrete, ICmpNE, ICmp)
-SCOPES_IMPL_FIELDS(Concrete, ICmpEQ, ICmp)
-SCOPES_IMPL_FIELDS(Abstract, ICmp, Instruction)
-SCOPES_IMPL_FIELDS(Concrete, BarrierMemoryShared, Barrier)
-SCOPES_IMPL_FIELDS(Concrete, BarrierMemoryBuffer, Barrier)
-SCOPES_IMPL_FIELDS(Concrete, BarrierMemoryImage, Barrier)
-SCOPES_IMPL_FIELDS(Concrete, BarrierMemoryGroup, Barrier)
-SCOPES_IMPL_FIELDS(Concrete, BarrierMemory, Barrier)
-SCOPES_IMPL_FIELDS(Concrete, BarrierControl, Barrier)
-SCOPES_IMPL_FIELDS(Abstract, Barrier, Instruction)
+SCOPES_IMPL_FIELDS(Concrete, BinOp, Instruction)
+SCOPES_IMPL_FIELDS(Concrete, UnOp, Instruction)
+SCOPES_IMPL_FIELDS(Concrete, FCmp, Instruction)
+SCOPES_IMPL_FIELDS(Concrete, ICmp, Instruction)
+SCOPES_IMPL_FIELDS(Concrete, Barrier, Instruction)
SCOPES_IMPL_FIELDS(Concrete, CmpXchg, Instruction)
-SCOPES_IMPL_FIELDS(Concrete, AtomicFSub, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicFAdd, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicUMax, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicUMin, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicSMax, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicSMin, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicBXor, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicBOr, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicBNAnd, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicBAnd, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicSub, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicAdd, AtomicRMW)
-SCOPES_IMPL_FIELDS(Concrete, AtomicXchg, AtomicRMW)
-SCOPES_IMPL_FIELDS(Abstract, AtomicRMW, Instruction)
+SCOPES_IMPL_FIELDS(Concrete, AtomicRMW, Instruction)
SCOPES_IMPL_FIELDS(Concrete, Store, Instruction)
SCOPES_IMPL_FIELDS(Concrete, Load, Instruction)
SCOPES_IMPL_FIELDS(Concrete, Free, Instruction)
@@ 1151,16 766,7 @@ SCOPES_IMPL_FIELDS(Concrete, Call, Instr
SCOPES_IMPL_FIELDS(Concrete, Switch, Instruction)
SCOPES_IMPL_FIELDS(Concrete, CondBr, Instruction)
SCOPES_IMPL_FIELDS(Concrete, LoopLabel, Instruction)
-SCOPES_IMPL_FIELDS(Concrete, TypeOfLabel, Label)
-SCOPES_IMPL_FIELDS(Concrete, BranchMergeLabel, Label)
-SCOPES_IMPL_FIELDS(Concrete, BreakLabel, Label)
-SCOPES_IMPL_FIELDS(Concrete, ThenLabel, Label)
-SCOPES_IMPL_FIELDS(Concrete, ExceptAllLabel, Label)
-SCOPES_IMPL_FIELDS(Concrete, ExceptLabel, Label)
-SCOPES_IMPL_FIELDS(Concrete, TryLabel, Label)
-SCOPES_IMPL_FIELDS(Concrete, InlineLabel, Label)
-SCOPES_IMPL_FIELDS(Concrete, UserLabel, Label)
-SCOPES_IMPL_FIELDS(Abstract, Label, Instruction)
+SCOPES_IMPL_FIELDS(Concrete, Label, Instruction)
SCOPES_IMPL_FIELDS(Abstract, Instruction, TypedValue)
SCOPES_IMPL_FIELDS(Concrete, ConstValue, Const)
SCOPES_IMPL_FIELDS(Concrete, ConstPointer, Const)
@@ 1188,12 794,7 @@ SCOPES_IMPL_FIELDS(Concrete, ExtractArgu
SCOPES_IMPL_FIELDS(Concrete, ArgumentListTemplate, UntypedValue)
SCOPES_IMPL_FIELDS(Concrete, CallTemplate, UntypedValue)
SCOPES_IMPL_FIELDS(Concrete, MergeTemplate, UntypedValue)
-SCOPES_IMPL_FIELDS(Concrete, DefaultCase, CaseTemplate)
-SCOPES_IMPL_FIELDS(Concrete, DoCase, CaseTemplate)
-SCOPES_IMPL_FIELDS(Concrete, Pass, LiteralCaseTemplate)
-SCOPES_IMPL_FIELDS(Concrete, Case, LiteralCaseTemplate)
-SCOPES_IMPL_FIELDS(Abstract, LiteralCaseTemplate, CaseTemplate)
-SCOPES_IMPL_FIELDS(Abstract, CaseTemplate, UntypedValue)
+SCOPES_IMPL_FIELDS(Concrete, CaseTemplate, UntypedValue)
SCOPES_IMPL_FIELDS(Concrete, SwitchTemplate, UntypedValue)
SCOPES_IMPL_FIELDS(Concrete, CondTemplate, UntypedValue)
SCOPES_IMPL_FIELDS(Concrete, CompileStage, UntypedValue)
@@ 1203,16 804,7 @@ SCOPES_IMPL_FIELDS(Concrete, Expression,
SCOPES_IMPL_FIELDS(Concrete, KeyedTemplate, UntypedValue)
SCOPES_IMPL_FIELDS(Concrete, LoopArguments, UntypedValue)
SCOPES_IMPL_FIELDS(Concrete, Loop, UntypedValue)
-SCOPES_IMPL_FIELDS(Concrete, TypeOfLabelTemplate, LabelTemplate)
-SCOPES_IMPL_FIELDS(Concrete, BranchMergeLabelTemplate, LabelTemplate)
-SCOPES_IMPL_FIELDS(Concrete, BreakLabelTemplate, LabelTemplate)
-SCOPES_IMPL_FIELDS(Concrete, ThenLabelTemplate, LabelTemplate)
-SCOPES_IMPL_FIELDS(Concrete, ExceptAllLabelTemplate, LabelTemplate)
-SCOPES_IMPL_FIELDS(Concrete, ExceptLabelTemplate, LabelTemplate)
-SCOPES_IMPL_FIELDS(Concrete, TryLabelTemplate, LabelTemplate)
-SCOPES_IMPL_FIELDS(Concrete, InlineLabelTemplate, LabelTemplate)
-SCOPES_IMPL_FIELDS(Concrete, UserLabelTemplate, LabelTemplate)
-SCOPES_IMPL_FIELDS(Abstract, LabelTemplate, UntypedValue)
+SCOPES_IMPL_FIELDS(Concrete, LabelTemplate, UntypedValue)
SCOPES_IMPL_FIELDS(Concrete, Template, UntypedValue)
SCOPES_IMPL_FIELDS(Abstract, UntypedValue, Value)
SCOPES_IMPL_FIELDS(Concrete, KeyQualifier, Qualifier)