rawVal ? ($T1*)((char*)this + rawVal) : ($T1*)0 BCPtr nullptr BCPtr {*($T1*)((char*)this + rawVal)} rawVal ? ($T1*)((char*)this + rawVal) : ($T1*)0 {astNodeType} (Slang::Decl*)this (Slang::Expr*)this (Slang::Modifier*)this (Slang::Stmt*)this (Slang::Val*)this (Slang::Scope*)this Constant {intOperand} {(Slang::Val*)nodeOperand} {nodeOperand} *(Slang::Val*)nodeOperand DeclRef nullptr {*declRefBase} declRefBase {astNodeType,en}#{_debugUID}({(Decl*)m_operands.m_buffer[0].values.nodeOperand}) {astNodeType,en}({(Decl*)m_operands.m_buffer[0].values.nodeOperand}) DeclRefBase nullptr {*(Decl*)m_operands.m_buffer[0].values.nodeOperand} *(Decl*)m_operands.m_buffer[0].values.nodeOperand {*(DeclRefBase*)(this->m_operands.m_buffer[1].values.nodeOperand)} *(DeclRefBase*)(this->m_operands.m_buffer[1].values.nodeOperand) {*(Val*)(this->m_operands.m_buffer[1].values.nodeOperand)} *(Val*)(this->m_operands.m_buffer[1].values.nodeOperand) {*(SubtypeWitness*)(this->m_operands.m_buffer[2].values.nodeOperand)} *(SubtypeWitness*)(this->m_operands.m_buffer[2].values.nodeOperand) {*(DeclRefBase*)(this->m_operands.m_buffer[1].values.nodeOperand)} *(DeclRefBase*)(this->m_operands.m_buffer[1].values.nodeOperand) *(Val*)(this->m_operands.m_buffer[index].values.nodeOperand) index=index+1 {astNodeType,en}#{_debugUID} {*(DeclRefBase*)m_operands.m_buffer[0].values.nodeOperand} {astNodeType,en} {*(DeclRefBase*)m_operands.m_buffer[0].values.nodeOperand} {astNodeType,en}#{_debugUID} {m_operands.m_buffer[0].values.nodeOperand->astNodeType, en}#{m_operands.m_buffer[0].values.nodeOperand->_debugUID} {astNodeType,en} {m_operands.m_buffer[0].values.nodeOperand->astNodeType, en} *(DeclRefBase*)m_operands.m_buffer[0].values.nodeOperand FuncDecl {nameAndLoc} {{name={(char*)(text.m_buffer.pointer+1), s}}} {{name={(char*)((*name).text.m_buffer.pointer+1), s} loc={loc.raw}}} requirementKey satisfyingVal {{{m_op} {(uint32_t)(void*)this, x}}} {{{m_op} #{_debugUID}}} m_op _debugUID typeUse.usedValue ((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.chars,[((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.numChars]s8 ((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.chars,[((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.numChars]s8 ((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.chars,[((Slang::IRStringLit*)(((Slang::IRUse*)(child + 1))->usedValue))->value.stringVal.numChars]s8 child = child->next ((IRStringLit*)this)->value.stringVal.chars,[((IRStringLit*)this)->value.stringVal.numChars]s8 ((IRIntLit*)this)->value.intVal pOperandInst = ((IRUse*)(&(typeUse) + 1 + index))->usedValue pOperandInst child = pOperandInst->m_decorationsAndChildren.first nameDecoration = 0 nameDecoration = child nameDecoration = child nameDecoration = child child = child->next *pOperandInst *pOperandInst index = index + 1 child = pItem->m_decorationsAndChildren.first nameDecoration = 0 nameDecoration = child nameDecoration = child nameDecoration = child child = child->next *pItem *pItem pItem = pItem->next index = index + 1 parent firstUse nextUse user {{IRUse {usedValue}}} usedValue {astNodeType,en} (Slang::DeclRefExpr*)&astNodeType (Slang::VarExpr*)&astNodeType (Slang::MemberExpr*)&astNodeType (Slang::StaticMemberExpr*)&astNodeType (Slang::OverloadedExpr*)&astNodeType (Slang::OverloadedExpr2*)&astNodeType (Slang::LiteralExpr*)&astNodeType (Slang::IntegerLiteralExpr*)&astNodeType (Slang::FloatingPointLiteralExpr*)&astNodeType (Slang::BoolLiteralExpr*)&astNodeType (Slang::NullPtrLiteralExpr*)&astNodeType (Slang::StringLiteralExpr*)&astNodeType (Slang::InitializerListExpr*)&astNodeType (Slang::ExprWithArgsBase*)&astNodeType (Slang::AggTypeCtorExpr*)&astNodeType (Slang::AppExprBase*)&astNodeType (Slang::InvokeExpr*)&astNodeType (Slang::NewExpr*)&astNodeType (Slang::OperatorExpr*)&astNodeType (Slang::InfixExpr*)&astNodeType (Slang::PrefixExpr*)&astNodeType (Slang::PostfixExpr*)&astNodeType (Slang::SelectExpr*)&astNodeType (Slang::TypeCastExpr*)&astNodeType (Slang::ExplicitCastExpr*)&astNodeType (Slang::ImplicitCastExpr*)&astNodeType (Slang::GenericAppExpr*)&astNodeType (Slang::TryExpr*)&astNodeType (Slang::IndexExpr*)&astNodeType (Slang::MatrixSwizzleExpr*)&astNodeType (Slang::SwizzleExpr*)&astNodeType (Slang::DerefExpr*)&astNodeType (Slang::CastToSuperTypeExpr*)&astNodeType (Slang::ModifierCastExpr*)&astNodeType (Slang::SharedTypeExpr*)&astNodeType (Slang::AssignExpr*)&astNodeType (Slang::ParenExpr*)&astNodeType (Slang::ThisExpr*)&astNodeType (Slang::LetExpr*)&astNodeType (Slang::ExtractExistentialValueExpr*)&astNodeType (Slang::OpenRefExpr*)&astNodeType (Slang::ForwardDifferentiateExpr*)&astNodeType (Slang::BackwardDifferentiateExpr*)&astNodeType (Slang::ThisTypeExpr*)&astNodeType (Slang::AndTypeExpr*)&astNodeType (Slang::ModifiedTypeExpr*)&astNodeType (Slang::PointerTypeExpr*)&astNodeType (Slang::AddressOfExpr*)&astNodeType type (Slang::Expr*)this,! {astNodeType,en} (Slang::ScopeStmt*)&astNodeType (Slang::BlockStmt*)&astNodeType (Slang::BreakableStmt*)&astNodeType (Slang::SwitchStmt*)&astNodeType (Slang::LoopStmt*)&astNodeType (Slang::ForStmt*)&astNodeType (Slang::UnscopedForStmt*)&astNodeType (Slang::WhileStmt*)&astNodeType (Slang::DoWhileStmt*)&astNodeType (Slang::GpuForeachStmt*)&astNodeType (Slang::CompileTimeForStmt*)&astNodeType (Slang::SeqStmt*)&astNodeType (Slang::UnparsedStmt*)&astNodeType (Slang::EmptyStmt*)&astNodeType (Slang::DiscardStmt*)&astNodeType (Slang::DeclStmt*)&astNodeType (Slang::IfStmt*)&astNodeType (Slang::ChildStmt*)&astNodeType (Slang::CaseStmtBase*)&astNodeType (Slang::CaseStmt*)&astNodeType (Slang::DefaultStmt*)&astNodeType (Slang::JumpStmt*)&astNodeType (Slang::BreakStmt*)&astNodeType (Slang::ContinueStmt*)&astNodeType (Slang::ReturnStmt*)&astNodeType (Slang::ExpressionStmt*)&astNodeType (Slang::TargetSwitchStmt*)&astNodeType (Slang::Stmt*)this,! {text} {astNodeType,en} {nameAndLoc.name->text} {astNodeType,en} nameAndLoc.name->text parentDecl Slang::DeclCheckState(checkState.m_raw & ~Slang::DeclCheckStateExt::kBeingCheckedBit) inferredCapabilityRequirements (Slang::ContainerDecl*)&astNodeType (Slang::ExtensionDecl*)&astNodeType (Slang::StructDecl*)&astNodeType (Slang::ClassDecl*)&astNodeType (Slang::EnumDecl*)&astNodeType (Slang::InterfaceDecl*)&astNodeType (Slang::AssocTypeDecl*)&astNodeType (Slang::GlobalGenericParamDecl*)&astNodeType (Slang::ScopeDecl*)&astNodeType (Slang::ConstructorDecl*)&astNodeType (Slang::GetterDecl*)&astNodeType (Slang::SetterDecl*)&astNodeType (Slang::RefAccessorDecl*)&astNodeType (Slang::FuncDecl*)&astNodeType (Slang::SubscriptDecl*)&astNodeType (Slang::PropertyDecl*)&astNodeType (Slang::NamespaceDecl*)&astNodeType (Slang::ModuleDecl*)&astNodeType (Slang::GenericDecl*)&astNodeType (Slang::AttributeDecl*)&astNodeType (Slang::VarDeclBase*)&astNodeType (Slang::VarDecl*)&astNodeType (Slang::LetDecl*)&astNodeType (Slang::GlobalGenericValueParamDecl*)&astNodeType (Slang::ParamDecl*)&astNodeType (Slang::ModernParamDecl*)&astNodeType (Slang::GenericValueParamDecl*)&astNodeType (Slang::EnumCaseDecl*)&astNodeType (Slang::TypeConstraintDecl*)&astNodeType (Slang::InheritanceDecl*)&astNodeType (Slang::GenericTypeConstraintDecl*)&astNodeType (Slang::SimpleTypeDecl*)&astNodeType (Slang::TypeDefDecl*)&astNodeType (Slang::TypeAliasDecl*)&astNodeType (Slang::GenericTypeParamDecl*)&astNodeType (Slang::UsingDecl*)&astNodeType (Slang::ImportDecl*)&astNodeType (Slang::EmptyDecl*)&astNodeType (Slang::SyntaxDecl*)&astNodeType (Slang::DeclGroup*)&astNodeType (Slang::DeclBase*)this,! {astNodeType,en} (Slang::ContainerDecl*)&astNodeType (Slang::ExtensionDecl*)&astNodeType (Slang::StructDecl*)&astNodeType (Slang::ClassDecl*)&astNodeType (Slang::EnumDecl*)&astNodeType (Slang::InterfaceDecl*)&astNodeType (Slang::AssocTypeDecl*)&astNodeType (Slang::GlobalGenericParamDecl*)&astNodeType (Slang::ScopeDecl*)&astNodeType (Slang::ConstructorDecl*)&astNodeType (Slang::GetterDecl*)&astNodeType (Slang::SetterDecl*)&astNodeType (Slang::RefAccessorDecl*)&astNodeType (Slang::FuncDecl*)&astNodeType (Slang::SubscriptDecl*)&astNodeType (Slang::PropertyDecl*)&astNodeType (Slang::NamespaceDecl*)&astNodeType (Slang::ModuleDecl*)&astNodeType (Slang::GenericDecl*)&astNodeType (Slang::AttributeDecl*)&astNodeType (Slang::VarDeclBase*)&astNodeType (Slang::VarDecl*)&astNodeType (Slang::LetDecl*)&astNodeType (Slang::GlobalGenericValueParamDecl*)&astNodeType (Slang::ParamDecl*)&astNodeType (Slang::ModernParamDecl*)&astNodeType (Slang::GenericValueParamDecl*)&astNodeType (Slang::EnumCaseDecl*)&astNodeType (Slang::TypeConstraintDecl*)&astNodeType (Slang::InheritanceDecl*)&astNodeType (Slang::GenericTypeConstraintDecl*)&astNodeType (Slang::SimpleTypeDecl*)&astNodeType (Slang::TypeDefDecl*)&astNodeType (Slang::TypeAliasDecl*)&astNodeType (Slang::GenericTypeParamDecl*)&astNodeType (Slang::UsingDecl*)&astNodeType (Slang::ImportDecl*)&astNodeType (Slang::EmptyDecl*)&astNodeType (Slang::SyntaxDecl*)&astNodeType (Slang::DeclGroup*)&astNodeType (Slang::Decl*)this,! {astNodeType,en} #{_debugUID} {*(Val*)(((Slang::DeclRefType*)this)->m_operands.m_buffer[0].values.nodeOperand)} {astNodeType,en} {*(Val*)(((Slang::DeclRefType*)this)->m_operands.m_buffer[0].values.nodeOperand)} *(Val*)(((Slang::DeclRefType*)this)->m_operands.m_buffer[0].values.nodeOperand) {astNodeType,en} #{_debugUID} {astNodeType,en} {m_operands.m_count-2} m_operands.m_count-2 m_operands.m_buffer {m_operands.m_buffer[m_operands.m_count-2]} m_operands.m_buffer[m_operands.m_count-2] {m_operands.m_buffer[m_operands.m_count-1]} m_operands.m_buffer[m_operands.m_count-1] DeclRefType#{_debugUID} {*(Val*)(((Slang::DeclRefType*)this)->m_operands.m_buffer[0].values.nodeOperand)} DeclRefType {*(Val*)(((Slang::DeclRefType*)this)->m_operands.m_buffer[0].values.nodeOperand)} DirectRef#{_debugUID} {*(Decl*)m_operands.m_buffer[0].values.nodeOperand} DirectRef {*(Decl*)m_operands.m_buffer[0].values.nodeOperand} {astNodeType,en} #{_debugUID} {astNodeType,en} {astNodeType} m_operands SubstitutionSet{declRef,en} declRef substType = subst->astNodeType shouldBreak = 1 subst = (DeclRefBase*)(((Slang::MemberDeclRef*)subst)->m_operands.m_buffer[1].values.nodeOperand) shouldBreak = 0 (LookupDeclRef*)subst (GenericAppDeclRef*)subst subst = (DeclRefBase*)(((Slang::GenericAppDeclRef*)subst)->m_operands.m_buffer[1].values.nodeOperand) shouldBreak = 0 {astNodeType}({nameAndLoc.name}) members ConstantValue ({this->values.intOperand}) #{((Val*)this)->_debugUID} {*(Val*)values.nodeOperand} {values.nodeOperand} values *(Val*)values.nodeOperand *(Decl*)values.nodeOperand _impl nullptr {_impl} empty _head._impl != 0 ? &_head : 0 _impl->next._impl != 0 ? &_impl->next : 0 *this empty _head != 0 ? _head : 0 next != 0 ? next : 0 *this {astNodeType,en}#{_debugUID} ({m_operands.m_buffer[1].values.intOperand} : {*(Type*)m_operands.m_buffer[0].values.nodeOperand}) ConstantIntVal ({m_operands.m_buffer[1].values.intOperand} : {*(Type*)m_operands.m_buffer[0].values.nodeOperand}) {astNodeType,en}#{_debugUID} {astNodeType,en} m_operands.m_count m_operands.m_buffer {astNodeType,en}#{_debugUID} {astNodeType,en} m_operands.m_count m_operands.m_buffer {astNodeType,en}#{_debugUID} {astNodeType,en} m_operands.m_count m_operands.m_buffer BasicExpressionType ({*(DeclRefBase*)m_operands.m_buffer[0].values.nodeOperand}) {m_targetSets.map.m_values} m_targetSets m_targetSets.map.m_values {{target={target}}} target shaderStageSets shaderStageSets.map.m_values {{size={atomSet}}} stage atomSet {{max_size={m_buffer.m_count*Slang::UIntSet::kElementSize}}} iter = (Slang::UIntSet::Element)0 bitIter = (Slang::UIntSet::Element)0 totalBitIter = (Slang::UIntSet::Element)0 value = 0 bitIter = 0 totalBitIter++ iter++ bitValue = (m_buffer[iter]>>bitIter)&1 value = totalBitIter (CapabilityAtom)value bitIter++ totalBitIter++ {{max_size={m_buffer.m_count*Slang::UIntSet::kElementSize}}} iter = (Slang::UIntSet::Element)0 bitIter = (Slang::UIntSet::Element)0 totalBitIter = (Slang::UIntSet::Element)0 value = 0 bitIter = 0 totalBitIter++ iter++ bitValue = (m_buffer[iter]>>bitIter)&1 value = totalBitIter (CapabilityAtom)value bitIter++ totalBitIter++ _offset == 0 ? nullptr : ($T1*)((char*)this + _offset) {($T1*)0} {($T1*)((char*)this + _offset)} _offset == 0 ? nullptr : ($T1*)((char*)this + _offset) "" {((char*)this + _obj._offset),s8} {{ count = 0 }} {{ count = {*((UInt32*)this - 1)} }} *((UInt32*)this - 1) *((UInt32*)this - 1) ($T1*)((char*)this + _obj._offset) {{ count = 0 }} {{ count = {*((UInt32*)this - 1)} }} *((UInt32*)this - 1) *((UInt32*)this - 1) (Slang::KeyValuePair<$T1,$T2> *) ((char*)this + _obj._offset)