// Part of the Carbon Language project, under the Apache License v2.0 with LLVM // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // // This is an X-macro header. It does not use `#include` guards, and instead is // designed to be `#include`ed after the x-macro is defined in order for its // inclusion to expand to the desired output. Macro definitions are cleaned up // at the end of this file. // // This macro should be defined before including this header: // - CARBON_SEM_IR_INST_KIND(Name) // Invoked for each kind of semantic instruction. #ifndef CARBON_SEM_IR_INST_KIND #error "Must define the x-macro to use this file." #endif // For each instruction kind declared here there is a matching definition in // `typed_insts.h`. CARBON_SEM_IR_INST_KIND(AdaptDecl) CARBON_SEM_IR_INST_KIND(AddrOf) CARBON_SEM_IR_INST_KIND(AddrPattern) CARBON_SEM_IR_INST_KIND(ArrayIndex) CARBON_SEM_IR_INST_KIND(ArrayInit) CARBON_SEM_IR_INST_KIND(ArrayType) CARBON_SEM_IR_INST_KIND(AsCompatible) CARBON_SEM_IR_INST_KIND(Assign) CARBON_SEM_IR_INST_KIND(AssociatedConstantDecl) CARBON_SEM_IR_INST_KIND(AssociatedEntity) CARBON_SEM_IR_INST_KIND(AssociatedEntityType) CARBON_SEM_IR_INST_KIND(BaseDecl) CARBON_SEM_IR_INST_KIND(BindAlias) CARBON_SEM_IR_INST_KIND(ExportDecl) CARBON_SEM_IR_INST_KIND(BindName) CARBON_SEM_IR_INST_KIND(BindSymbolicName) CARBON_SEM_IR_INST_KIND(BindValue) CARBON_SEM_IR_INST_KIND(BlockArg) CARBON_SEM_IR_INST_KIND(BoolLiteral) CARBON_SEM_IR_INST_KIND(BoundMethod) CARBON_SEM_IR_INST_KIND(Branch) CARBON_SEM_IR_INST_KIND(BranchIf) CARBON_SEM_IR_INST_KIND(BranchWithArg) CARBON_SEM_IR_INST_KIND(BuiltinInst) CARBON_SEM_IR_INST_KIND(Call) CARBON_SEM_IR_INST_KIND(ClassDecl) CARBON_SEM_IR_INST_KIND(ClassElementAccess) CARBON_SEM_IR_INST_KIND(ClassInit) CARBON_SEM_IR_INST_KIND(ClassType) CARBON_SEM_IR_INST_KIND(ConstType) CARBON_SEM_IR_INST_KIND(Converted) CARBON_SEM_IR_INST_KIND(Deref) CARBON_SEM_IR_INST_KIND(FacetTypeAccess) CARBON_SEM_IR_INST_KIND(FieldDecl) CARBON_SEM_IR_INST_KIND(FloatLiteral) CARBON_SEM_IR_INST_KIND(FloatType) CARBON_SEM_IR_INST_KIND(FunctionDecl) CARBON_SEM_IR_INST_KIND(FunctionType) CARBON_SEM_IR_INST_KIND(GenericClassType) CARBON_SEM_IR_INST_KIND(GenericInterfaceType) CARBON_SEM_IR_INST_KIND(ImplDecl) CARBON_SEM_IR_INST_KIND(ImportDecl) CARBON_SEM_IR_INST_KIND(ImportRefUnloaded) CARBON_SEM_IR_INST_KIND(ImportRefLoaded) CARBON_SEM_IR_INST_KIND(InitializeFrom) CARBON_SEM_IR_INST_KIND(SpecificConstant) CARBON_SEM_IR_INST_KIND(InterfaceDecl) CARBON_SEM_IR_INST_KIND(InterfaceType) CARBON_SEM_IR_INST_KIND(InterfaceWitness) CARBON_SEM_IR_INST_KIND(InterfaceWitnessAccess) CARBON_SEM_IR_INST_KIND(IntLiteral) CARBON_SEM_IR_INST_KIND(IntType) CARBON_SEM_IR_INST_KIND(NameRef) CARBON_SEM_IR_INST_KIND(Namespace) CARBON_SEM_IR_INST_KIND(Param) CARBON_SEM_IR_INST_KIND(PointerType) CARBON_SEM_IR_INST_KIND(ReturnExpr) CARBON_SEM_IR_INST_KIND(Return) CARBON_SEM_IR_INST_KIND(SpliceBlock) CARBON_SEM_IR_INST_KIND(StringLiteral) CARBON_SEM_IR_INST_KIND(StructAccess) CARBON_SEM_IR_INST_KIND(StructInit) CARBON_SEM_IR_INST_KIND(StructLiteral) CARBON_SEM_IR_INST_KIND(StructType) CARBON_SEM_IR_INST_KIND(StructTypeField) CARBON_SEM_IR_INST_KIND(StructValue) CARBON_SEM_IR_INST_KIND(TemporaryStorage) CARBON_SEM_IR_INST_KIND(Temporary) CARBON_SEM_IR_INST_KIND(TupleAccess) CARBON_SEM_IR_INST_KIND(TupleInit) CARBON_SEM_IR_INST_KIND(TupleLiteral) CARBON_SEM_IR_INST_KIND(TupleType) CARBON_SEM_IR_INST_KIND(TupleValue) CARBON_SEM_IR_INST_KIND(UnaryOperatorNot) CARBON_SEM_IR_INST_KIND(UnboundElementType) CARBON_SEM_IR_INST_KIND(ValueAsRef) CARBON_SEM_IR_INST_KIND(ValueOfInitializer) CARBON_SEM_IR_INST_KIND(VarStorage) #undef CARBON_SEM_IR_INST_KIND