Lines Matching refs:spirv
135 auto constOp = dyn_cast_or_null<spirv::ConstantOp>(op); in extractValueFromConstOp()
173 StringRef attrName = spirv::attributeName<EnumClass>()) { in parseEnumStrAttr()
186 spirv::symbolizeEnum<EnumClass>(attrVal.cast<StringAttr>().getValue()); in parseEnumStrAttr()
201 StringRef attrName = spirv::attributeName<EnumClass>()) { in parseEnumStrAttr()
217 StringRef attrName = spirv::attributeName<EnumClass>()) { in parseEnumKeywordAttr()
231 StringRef attrName = spirv::attributeName<EnumClass>()) { in parseControlAttribute()
259 spirv::MemoryAccess memoryAccessAttr; in parseMemoryAccessAttributes()
265 if (spirv::bitEnumContains(memoryAccessAttr, spirv::MemoryAccess::Aligned)) { in parseMemoryAccessAttributes()
290 spirv::MemoryAccess memoryAccessAttr; in parseSourceMemoryAccessAttributes()
296 if (spirv::bitEnumContains(memoryAccessAttr, spirv::MemoryAccess::Aligned)) { in parseSourceMemoryAccessAttributes()
313 Optional<spirv::MemoryAccess> memoryAccessAtrrValue = None, in printMemoryAccessAttribute()
322 if (spirv::bitEnumContains(*memAccess, spirv::MemoryAccess::Aligned)) { in printMemoryAccessAttribute()
332 elidedAttrs.push_back(spirv::attributeName<spirv::StorageClass>()); in printMemoryAccessAttribute()
343 Optional<spirv::MemoryAccess> memoryAccessAtrrValue = None, in printSourceMemoryAccessAttribute()
355 if (spirv::bitEnumContains(*memAccess, spirv::MemoryAccess::Aligned)) { in printSourceMemoryAccessAttribute()
365 elidedAttrs.push_back(spirv::attributeName<spirv::StorageClass>()); in printSourceMemoryAccessAttribute()
369 spirv::ImageOperandsAttr &attr) { in parseImageOperands()
374 spirv::ImageOperands imageOperands; in parseImageOperands()
378 attr = spirv::ImageOperandsAttr::get(parser.getContext(), imageOperands); in parseImageOperands()
384 spirv::ImageOperandsAttr attr) { in printImageOperands()
393 spirv::ImageOperandsAttr attr, in verifyImageOperands()
404 spirv::ImageOperands noSupportOperands = in verifyImageOperands()
405 spirv::ImageOperands::Bias | spirv::ImageOperands::Lod | in verifyImageOperands()
406 spirv::ImageOperands::Grad | spirv::ImageOperands::ConstOffset | in verifyImageOperands()
407 spirv::ImageOperands::Offset | spirv::ImageOperands::ConstOffsets | in verifyImageOperands()
408 spirv::ImageOperands::Sample | spirv::ImageOperands::MinLod | in verifyImageOperands()
409 spirv::ImageOperands::MakeTexelAvailable | in verifyImageOperands()
410 spirv::ImageOperands::MakeTexelVisible | in verifyImageOperands()
411 spirv::ImageOperands::SignExtend | spirv::ImageOperands::ZeroExtend; in verifyImageOperands()
413 if (spirv::bitEnumContains(attr.getValue(), noSupportOperands)) in verifyImageOperands()
436 operandType.dyn_cast<spirv::CooperativeMatrixNVType>()) { in verifyCastOp()
439 resultType.cast<spirv::CooperativeMatrixNVType>().getElementType(); in verifyCastOp()
484 auto memAccess = spirv::symbolizeMemoryAccess(memAccessVal.getInt()); in verifyMemoryAccessAttribute()
491 if (spirv::bitEnumContains(*memAccess, spirv::MemoryAccess::Aligned)) { in verifyMemoryAccessAttribute()
528 auto memAccess = spirv::symbolizeMemoryAccess(memAccessVal.getInt()); in verifySourceMemoryAccessAttribute()
535 if (spirv::bitEnumContains(*memAccess, spirv::MemoryAccess::Aligned)) { in verifySourceMemoryAccessAttribute()
550 verifyMemorySemantics(Operation *op, spirv::MemorySemantics memorySemantics) { in verifyMemorySemantics()
557 auto atMostOneInSet = spirv::MemorySemantics::Acquire | in verifyMemorySemantics()
558 spirv::MemorySemantics::Release | in verifyMemorySemantics()
559 spirv::MemorySemantics::AcquireRelease | in verifyMemorySemantics()
560 spirv::MemorySemantics::SequentiallyConsistent; in verifyMemorySemantics()
582 ptr.getType().cast<spirv::PointerType>().getPointeeType()) { in verifyLoadStorePtrAndValTypes()
595 if (valType != ptr.getType().cast<spirv::PointerType>().getPointeeType()) { in verifyBlockReadWritePtrAndValTypes()
604 stringifyDecoration(spirv::Decoration::BuiltIn)); in parseVariableDecorations()
609 stringifyDecoration(spirv::Decoration::DescriptorSet)); in parseVariableDecorations()
611 stringifyDecoration(spirv::Decoration::Binding)); in parseVariableDecorations()
642 stringifyDecoration(spirv::Decoration::DescriptorSet)); in printVariableDecorations()
644 stringifyDecoration(spirv::Decoration::Binding)); in printVariableDecorations()
656 stringifyDecoration(spirv::Decoration::BuiltIn)); in printVariableDecorations()
667 if (type.isa<spirv::PointerType>()) { in getBitWidth()
696 if (auto cType = type.dyn_cast<spirv::CompositeType>()) { in getElementType()
757 isa<spirv::MergeOp>(block.front()); in isMergeBlock()
768 spirv::Scope scope; in parseAtomicUpdateOp()
769 spirv::MemorySemantics memoryScope; in parseAtomicUpdateOp()
780 auto ptrType = type.dyn_cast<spirv::PointerType>(); in parseAtomicUpdateOp()
798 printer << spirv::stringifyScope( in printAtomicUpdateOp()
799 static_cast<spirv::Scope>(scopeAttr.getInt())) in printAtomicUpdateOp()
802 printer << spirv::stringifyMemorySemantics( in printAtomicUpdateOp()
803 static_cast<spirv::MemorySemantics>( in printAtomicUpdateOp()
824 auto ptrType = op->getOperand(0).getType().cast<spirv::PointerType>(); in verifyAtomicUpdateOp()
838 auto memorySemantics = static_cast<spirv::MemorySemantics>( in verifyAtomicUpdateOp()
848 spirv::Scope executionScope; in parseGroupNonUniformArithmeticOp()
849 spirv::GroupOperation groupOperation; in parseGroupNonUniformArithmeticOp()
885 << stringifyScope(static_cast<spirv::Scope>( in printGroupNonUniformArithmeticOp()
889 << stringifyGroupOperation(static_cast<spirv::GroupOperation>( in printGroupNonUniformArithmeticOp()
900 spirv::Scope scope = static_cast<spirv::Scope>( in verifyGroupNonUniformArithmeticOp()
902 if (scope != spirv::Scope::Workgroup && scope != spirv::Scope::Subgroup) in verifyGroupNonUniformArithmeticOp()
906 spirv::GroupOperation operation = static_cast<spirv::GroupOperation>( in verifyGroupNonUniformArithmeticOp()
908 if (operation == spirv::GroupOperation::ClusteredReduce && in verifyGroupNonUniformArithmeticOp()
974 auto ptrType = type.dyn_cast<spirv::PointerType>(); in getElementPtrType()
987 auto cType = resultType.dyn_cast<spirv::CompositeType>(); in getElementPtrType()
995 if (resultType.isa<spirv::StructType>()) { in getElementPtrType()
1021 return spirv::PointerType::get(resultType, resultStorageClass); in getElementPtrType()
1024 void spirv::AccessChainOp::build(OpBuilder &builder, OperationState &state, in build()
1031 ParseResult spirv::AccessChainOp::parse(OpAsmParser &parser, in parse()
1083 void spirv::AccessChainOp::print(OpAsmPrinter &printer) { in print()
1095 accessChainOp.getType().template dyn_cast<spirv::PointerType>(); in verifyAccessChain()
1108 LogicalResult spirv::AccessChainOp::verify() { in verify()
1116 void spirv::AddressOfOp::build(OpBuilder &builder, OperationState &state, in build()
1117 spirv::GlobalVariableOp var) { in build()
1121 LogicalResult spirv::AddressOfOp::verify() { in verify()
1122 auto varOp = dyn_cast_or_null<spirv::GlobalVariableOp>( in verify()
1145 spirv::Scope memoryScope; in parseAtomicCompareExchangeImpl()
1146 spirv::MemorySemantics equalSemantics, unequalSemantics; in parseAtomicCompareExchangeImpl()
1161 auto ptrType = type.dyn_cast<spirv::PointerType>(); in parseAtomicCompareExchangeImpl()
1193 .template cast<spirv::PointerType>() in verifyAtomicCompareExchangeImpl()
1211 LogicalResult spirv::AtomicAndOp::verify() { in verify()
1215 ParseResult spirv::AtomicAndOp::parse(OpAsmParser &parser, in parse()
1219 void spirv::AtomicAndOp::print(OpAsmPrinter &p) { in print()
1227 LogicalResult spirv::AtomicCompareExchangeOp::verify() { in verify()
1231 ParseResult spirv::AtomicCompareExchangeOp::parse(OpAsmParser &parser, in parse()
1235 void spirv::AtomicCompareExchangeOp::print(OpAsmPrinter &p) { in print()
1243 LogicalResult spirv::AtomicCompareExchangeWeakOp::verify() { in verify()
1247 ParseResult spirv::AtomicCompareExchangeWeakOp::parse(OpAsmParser &parser, in parse()
1251 void spirv::AtomicCompareExchangeWeakOp::print(OpAsmPrinter &p) { in print()
1259 void spirv::AtomicExchangeOp::print(OpAsmPrinter &printer) { in print()
1265 ParseResult spirv::AtomicExchangeOp::parse(OpAsmParser &parser, in parse()
1267 spirv::Scope memoryScope; in parse()
1268 spirv::MemorySemantics semantics; in parse()
1280 auto ptrType = type.dyn_cast<spirv::PointerType>(); in parse()
1291 LogicalResult spirv::AtomicExchangeOp::verify() { in verify()
1298 pointer().getType().cast<spirv::PointerType>().getPointeeType(); in verify()
1311 LogicalResult spirv::AtomicIAddOp::verify() { in verify()
1315 ParseResult spirv::AtomicIAddOp::parse(OpAsmParser &parser, in parse()
1319 void spirv::AtomicIAddOp::print(OpAsmPrinter &p) { in print()
1327 LogicalResult spirv::AtomicFAddEXTOp::verify() { in verify()
1331 ParseResult spirv::AtomicFAddEXTOp::parse(OpAsmParser &parser, in parse()
1335 void spirv::AtomicFAddEXTOp::print(OpAsmPrinter &p) { in print()
1343 LogicalResult spirv::AtomicIDecrementOp::verify() { in verify()
1347 ParseResult spirv::AtomicIDecrementOp::parse(OpAsmParser &parser, in parse()
1351 void spirv::AtomicIDecrementOp::print(OpAsmPrinter &p) { in print()
1359 LogicalResult spirv::AtomicIIncrementOp::verify() { in verify()
1363 ParseResult spirv::AtomicIIncrementOp::parse(OpAsmParser &parser, in parse()
1367 void spirv::AtomicIIncrementOp::print(OpAsmPrinter &p) { in print()
1375 LogicalResult spirv::AtomicISubOp::verify() { in verify()
1379 ParseResult spirv::AtomicISubOp::parse(OpAsmParser &parser, in parse()
1383 void spirv::AtomicISubOp::print(OpAsmPrinter &p) { in print()
1391 LogicalResult spirv::AtomicOrOp::verify() { in verify()
1395 ParseResult spirv::AtomicOrOp::parse(OpAsmParser &parser, in parse()
1399 void spirv::AtomicOrOp::print(OpAsmPrinter &p) { in print()
1407 LogicalResult spirv::AtomicSMaxOp::verify() { in verify()
1411 ParseResult spirv::AtomicSMaxOp::parse(OpAsmParser &parser, in parse()
1415 void spirv::AtomicSMaxOp::print(OpAsmPrinter &p) { in print()
1423 LogicalResult spirv::AtomicSMinOp::verify() { in verify()
1427 ParseResult spirv::AtomicSMinOp::parse(OpAsmParser &parser, in parse()
1431 void spirv::AtomicSMinOp::print(OpAsmPrinter &p) { in print()
1439 LogicalResult spirv::AtomicUMaxOp::verify() { in verify()
1443 ParseResult spirv::AtomicUMaxOp::parse(OpAsmParser &parser, in parse()
1447 void spirv::AtomicUMaxOp::print(OpAsmPrinter &p) { in print()
1455 LogicalResult spirv::AtomicUMinOp::verify() { in verify()
1459 ParseResult spirv::AtomicUMinOp::parse(OpAsmParser &parser, in parse()
1463 void spirv::AtomicUMinOp::print(OpAsmPrinter &p) { in print()
1471 LogicalResult spirv::AtomicXorOp::verify() { in verify()
1475 ParseResult spirv::AtomicXorOp::parse(OpAsmParser &parser, in parse()
1479 void spirv::AtomicXorOp::print(OpAsmPrinter &p) { in print()
1487 LogicalResult spirv::BitcastOp::verify() { in verify()
1495 if (operandType.isa<spirv::PointerType>() && in verify()
1496 !resultType.isa<spirv::PointerType>()) { in verify()
1500 if (!operandType.isa<spirv::PointerType>() && in verify()
1501 resultType.isa<spirv::PointerType>()) { in verify()
1519 SuccessorOperands spirv::BranchOp::getSuccessorOperands(unsigned index) { in getSuccessorOperands()
1529 spirv::BranchConditionalOp::getSuccessorOperands(unsigned index) { in getSuccessorOperands()
1535 ParseResult spirv::BranchConditionalOp::parse(OpAsmParser &parser, in parse()
1579 spirv::BranchConditionalOp::getOperandSegmentSizeAttr(), in parse()
1586 void spirv::BranchConditionalOp::print(OpAsmPrinter &printer) { in print()
1603 LogicalResult spirv::BranchConditionalOp::verify() { in verify()
1621 ParseResult spirv::CompositeConstructOp::parse(OpAsmParser &parser, in parse()
1630 auto cType = type.dyn_cast<spirv::CompositeType>(); in parse()
1655 void spirv::CompositeConstructOp::print(OpAsmPrinter &printer) { in print()
1659 LogicalResult spirv::CompositeConstructOp::verify() { in verify()
1660 auto cType = getType().cast<spirv::CompositeType>(); in verify()
1663 if (cType.isa<spirv::CooperativeMatrixNVType>()) { in verify()
1688 void spirv::CompositeExtractOp::build(OpBuilder &builder, OperationState &state, in build()
1700 ParseResult spirv::CompositeExtractOp::parse(OpAsmParser &parser, in parse()
1724 void spirv::CompositeExtractOp::print(OpAsmPrinter &printer) { in print()
1728 LogicalResult spirv::CompositeExtractOp::verify() { in verify()
1747 void spirv::CompositeInsertOp::build(OpBuilder &builder, OperationState &state, in build()
1754 ParseResult spirv::CompositeInsertOp::parse(OpAsmParser &parser, in parse()
1771 LogicalResult spirv::CompositeInsertOp::verify() { in verify()
1792 void spirv::CompositeInsertOp::print(OpAsmPrinter &printer) { in print()
1801 ParseResult spirv::ConstantOp::parse(OpAsmParser &parser, in parse()
1816 void spirv::ConstantOp::print(OpAsmPrinter &printer) { in print()
1818 if (getType().isa<spirv::ArrayType>()) in print()
1822 static LogicalResult verifyConstantType(spirv::ConstantOp op, Attribute value, in verifyConstantType()
1835 auto arrayType = opType.dyn_cast<spirv::ArrayType>(); in verifyConstantType()
1844 while (auto t = opElemType.dyn_cast<spirv::ArrayType>()) { in verifyConstantType()
1866 auto arrayType = opType.dyn_cast<spirv::ArrayType>(); in verifyConstantType()
1880 LogicalResult spirv::ConstantOp::verify() { in verify()
1887 bool spirv::ConstantOp::isBuildableWith(Type type) { in isBuildableWith()
1889 if (!type.isa<spirv::SPIRVType>()) in isBuildableWith()
1894 return type.isa<spirv::ArrayType>(); in isBuildableWith()
1900 spirv::ConstantOp spirv::ConstantOp::getZero(Type type, Location loc, in getZero()
1905 return builder.create<spirv::ConstantOp>(loc, type, in getZero()
1907 return builder.create<spirv::ConstantOp>( in getZero()
1911 return builder.create<spirv::ConstantOp>( in getZero()
1917 return builder.create<spirv::ConstantOp>( in getZero()
1923 return builder.create<spirv::ConstantOp>( in getZero()
1933 spirv::ConstantOp spirv::ConstantOp::getOne(Type type, Location loc, in getOne()
1938 return builder.create<spirv::ConstantOp>(loc, type, in getOne()
1940 return builder.create<spirv::ConstantOp>( in getOne()
1944 return builder.create<spirv::ConstantOp>( in getOne()
1950 return builder.create<spirv::ConstantOp>( in getOne()
1956 return builder.create<spirv::ConstantOp>( in getOne()
1966 void mlir::spirv::ConstantOp::getAsmResultNames( in getAsmResultNames()
2006 void mlir::spirv::AddressOfOp::getAsmResultNames( in getAsmResultNames()
2018 LogicalResult spirv::ControlBarrierOp::verify() { in verify()
2026 LogicalResult spirv::ConvertFToSOp::verify() { in verify()
2035 LogicalResult spirv::ConvertFToUOp::verify() { in verify()
2044 LogicalResult spirv::ConvertSToFOp::verify() { in verify()
2053 LogicalResult spirv::ConvertUToFOp::verify() { in verify()
2062 void spirv::EntryPointOp::build(OpBuilder &builder, OperationState &state, in build()
2063 spirv::ExecutionModel executionModel, in build()
2064 spirv::FuncOp function, in build()
2067 spirv::ExecutionModelAttr::get(builder.getContext(), executionModel), in build()
2071 ParseResult spirv::EntryPointOp::parse(OpAsmParser &parser, in parse()
2073 spirv::ExecutionModel execModel; in parse()
2102 void spirv::EntryPointOp::print(OpAsmPrinter &printer) { in print()
2112 LogicalResult spirv::EntryPointOp::verify() { in verify()
2122 void spirv::ExecutionModeOp::build(OpBuilder &builder, OperationState &state, in build()
2123 spirv::FuncOp function, in build()
2124 spirv::ExecutionMode executionMode, in build()
2127 spirv::ExecutionModeAttr::get(builder.getContext(), executionMode), in build()
2131 ParseResult spirv::ExecutionModeOp::parse(OpAsmParser &parser, in parse()
2133 spirv::ExecutionMode execMode; in parse()
2155 void spirv::ExecutionModeOp::print(OpAsmPrinter &printer) { in print()
2172 LogicalResult spirv::FConvertOp::verify() { in verify()
2180 LogicalResult spirv::SConvertOp::verify() { in verify()
2188 LogicalResult spirv::UConvertOp::verify() { in verify()
2196 ParseResult spirv::FuncOp::parse(OpAsmParser &parser, OperationState &state) { in parse()
2223 spirv::FunctionControl fnControl; in parse()
2242 void spirv::FuncOp::print(OpAsmPrinter &printer) { in print()
2250 printer << " \"" << spirv::stringifyFunctionControl(function_control()) in print()
2254 {spirv::attributeName<spirv::FunctionControl>()}); in print()
2265 LogicalResult spirv::FuncOp::verifyType() { in verifyType()
2275 LogicalResult spirv::FuncOp::verifyBody() { in verifyBody()
2279 if (auto retOp = dyn_cast<spirv::ReturnOp>(op)) { in verifyBody()
2282 } else if (auto retOp = dyn_cast<spirv::ReturnValueOp>(op)) { in verifyBody()
2303 void spirv::FuncOp::build(OpBuilder &builder, OperationState &state, in build()
2305 spirv::FunctionControl control, in build()
2310 state.addAttribute(spirv::attributeName<spirv::FunctionControl>(), in build()
2317 Region *spirv::FuncOp::getCallableRegion() { in getCallableRegion()
2322 ArrayRef<Type> spirv::FuncOp::getCallableResults() { in getCallableResults()
2330 LogicalResult spirv::FunctionCallOp::verify() { in verify()
2333 auto funcOp = dyn_cast_or_null<spirv::FuncOp>( in verify()
2379 CallInterfaceCallable spirv::FunctionCallOp::getCallableForCallee() { in getCallableForCallee()
2383 Operation::operand_range spirv::FunctionCallOp::getArgOperands() { in getArgOperands()
2391 ParseResult spirv::GLFClampOp::parse(OpAsmParser &parser, in parse()
2395 void spirv::GLFClampOp::print(OpAsmPrinter &p) { printOneResultOp(*this, p); } in print()
2401 ParseResult spirv::GLUClampOp::parse(OpAsmParser &parser, in parse()
2405 void spirv::GLUClampOp::print(OpAsmPrinter &p) { printOneResultOp(*this, p); } in print()
2411 ParseResult spirv::GLSClampOp::parse(OpAsmParser &parser, in parse()
2415 void spirv::GLSClampOp::print(OpAsmPrinter &p) { printOneResultOp(*this, p); } in print()
2421 ParseResult spirv::GLFmaOp::parse(OpAsmParser &parser, OperationState &result) { in parse()
2424 void spirv::GLFmaOp::print(OpAsmPrinter &p) { printOneResultOp(*this, p); } in print()
2430 void spirv::GlobalVariableOp::build(OpBuilder &builder, OperationState &state, in build()
2435 spirv::SPIRVDialect::getAttributeName(spirv::Decoration::DescriptorSet), in build()
2438 spirv::SPIRVDialect::getAttributeName(spirv::Decoration::Binding), in build()
2442 void spirv::GlobalVariableOp::build(OpBuilder &builder, OperationState &state, in build()
2444 spirv::BuiltIn builtin) { in build()
2447 spirv::SPIRVDialect::getAttributeName(spirv::Decoration::BuiltIn), in build()
2448 builder.getStringAttr(spirv::stringifyBuiltIn(builtin))); in build()
2451 ParseResult spirv::GlobalVariableOp::parse(OpAsmParser &parser, in parse()
2479 if (!type.isa<spirv::PointerType>()) { in parse()
2487 void spirv::GlobalVariableOp::print(OpAsmPrinter &printer) { in print()
2489 spirv::attributeName<spirv::StorageClass>()}; in print()
2509 LogicalResult spirv::GlobalVariableOp::verify() { in verify()
2515 if (storageClass == spirv::StorageClass::Generic || in verify()
2516 storageClass == spirv::StorageClass::Function) { in verify()
2529 !isa<spirv::GlobalVariableOp, spirv::SpecConstantOp>(initOp)) { in verify()
2542 LogicalResult spirv::GroupBroadcastOp::verify() { in verify()
2543 spirv::Scope scope = execution_scope(); in verify()
2544 if (scope != spirv::Scope::Workgroup && scope != spirv::Scope::Subgroup) in verify()
2560 LogicalResult spirv::GroupNonUniformBallotOp::verify() { in verify()
2561 spirv::Scope scope = execution_scope(); in verify()
2562 if (scope != spirv::Scope::Workgroup && scope != spirv::Scope::Subgroup) in verify()
2572 LogicalResult spirv::GroupNonUniformBroadcastOp::verify() { in verify()
2573 spirv::Scope scope = execution_scope(); in verify()
2574 if (scope != spirv::Scope::Workgroup && scope != spirv::Scope::Subgroup) in verify()
2579 auto targetEnv = spirv::getDefaultTargetEnv(getContext()); in verify()
2580 if (auto spirvModule = (*this)->getParentOfType<spirv::ModuleOp>()) in verify()
2581 targetEnv = spirv::lookupTargetEnvOrDefault(spirvModule); in verify()
2583 if (targetEnv.getVersion() < spirv::Version::V_1_5) { in verify()
2585 if (!idOp || !isa<spirv::ConstantOp, // for normal constant in verify()
2586 spirv::ReferenceOfOp>(idOp)) // for spec constant in verify()
2597 ParseResult spirv::SubgroupBlockReadINTELOp::parse(OpAsmParser &parser, in parse()
2600 spirv::StorageClass storageClass; in parse()
2608 auto ptrType = spirv::PointerType::get(elementType, storageClass); in parse()
2610 ptrType = spirv::PointerType::get(valVecTy.getElementType(), storageClass); in parse()
2620 void spirv::SubgroupBlockReadINTELOp::print(OpAsmPrinter &printer) { in print()
2624 LogicalResult spirv::SubgroupBlockReadINTELOp::verify() { in verify()
2635 ParseResult spirv::SubgroupBlockWriteINTELOp::parse(OpAsmParser &parser, in parse()
2638 spirv::StorageClass storageClass; in parse()
2648 auto ptrType = spirv::PointerType::get(elementType, storageClass); in parse()
2650 ptrType = spirv::PointerType::get(valVecTy.getElementType(), storageClass); in parse()
2659 void spirv::SubgroupBlockWriteINTELOp::print(OpAsmPrinter &printer) { in print()
2663 LogicalResult spirv::SubgroupBlockWriteINTELOp::verify() { in verify()
2674 LogicalResult spirv::GroupNonUniformElectOp::verify() { in verify()
2675 spirv::Scope scope = execution_scope(); in verify()
2676 if (scope != spirv::Scope::Workgroup && scope != spirv::Scope::Subgroup) in verify()
2686 LogicalResult spirv::GroupNonUniformFAddOp::verify() { in verify()
2690 ParseResult spirv::GroupNonUniformFAddOp::parse(OpAsmParser &parser, in parse()
2694 void spirv::GroupNonUniformFAddOp::print(OpAsmPrinter &p) { in print()
2702 LogicalResult spirv::GroupNonUniformFMaxOp::verify() { in verify()
2706 ParseResult spirv::GroupNonUniformFMaxOp::parse(OpAsmParser &parser, in parse()
2710 void spirv::GroupNonUniformFMaxOp::print(OpAsmPrinter &p) { in print()
2718 LogicalResult spirv::GroupNonUniformFMinOp::verify() { in verify()
2722 ParseResult spirv::GroupNonUniformFMinOp::parse(OpAsmParser &parser, in parse()
2726 void spirv::GroupNonUniformFMinOp::print(OpAsmPrinter &p) { in print()
2734 LogicalResult spirv::GroupNonUniformFMulOp::verify() { in verify()
2738 ParseResult spirv::GroupNonUniformFMulOp::parse(OpAsmParser &parser, in parse()
2742 void spirv::GroupNonUniformFMulOp::print(OpAsmPrinter &p) { in print()
2750 LogicalResult spirv::GroupNonUniformIAddOp::verify() { in verify()
2754 ParseResult spirv::GroupNonUniformIAddOp::parse(OpAsmParser &parser, in parse()
2758 void spirv::GroupNonUniformIAddOp::print(OpAsmPrinter &p) { in print()
2766 LogicalResult spirv::GroupNonUniformIMulOp::verify() { in verify()
2770 ParseResult spirv::GroupNonUniformIMulOp::parse(OpAsmParser &parser, in parse()
2774 void spirv::GroupNonUniformIMulOp::print(OpAsmPrinter &p) { in print()
2782 LogicalResult spirv::GroupNonUniformSMaxOp::verify() { in verify()
2786 ParseResult spirv::GroupNonUniformSMaxOp::parse(OpAsmParser &parser, in parse()
2790 void spirv::GroupNonUniformSMaxOp::print(OpAsmPrinter &p) { in print()
2798 LogicalResult spirv::GroupNonUniformSMinOp::verify() { in verify()
2802 ParseResult spirv::GroupNonUniformSMinOp::parse(OpAsmParser &parser, in parse()
2806 void spirv::GroupNonUniformSMinOp::print(OpAsmPrinter &p) { in print()
2814 LogicalResult spirv::GroupNonUniformUMaxOp::verify() { in verify()
2818 ParseResult spirv::GroupNonUniformUMaxOp::parse(OpAsmParser &parser, in parse()
2822 void spirv::GroupNonUniformUMaxOp::print(OpAsmPrinter &p) { in print()
2830 LogicalResult spirv::GroupNonUniformUMinOp::verify() { in verify()
2834 ParseResult spirv::GroupNonUniformUMinOp::parse(OpAsmParser &parser, in parse()
2838 void spirv::GroupNonUniformUMinOp::print(OpAsmPrinter &p) { in print()
2846 LogicalResult spirv::ISubBorrowOp::verify() { in verify()
2847 auto resultType = getType().cast<spirv::StructType>(); in verify()
2863 ParseResult spirv::ISubBorrowOp::parse(OpAsmParser &parser, in parse()
2875 auto structType = resultType.dyn_cast<spirv::StructType>(); in parse()
2887 void spirv::ISubBorrowOp::print(OpAsmPrinter &printer) { in print()
2898 void spirv::LoadOp::build(OpBuilder &builder, OperationState &state, in build()
2901 auto ptrType = basePtr.getType().cast<spirv::PointerType>(); in build()
2906 ParseResult spirv::LoadOp::parse(OpAsmParser &parser, OperationState &state) { in parse()
2908 spirv::StorageClass storageClass; in parse()
2918 auto ptrType = spirv::PointerType::get(elementType, storageClass); in parse()
2927 void spirv::LoadOp::print(OpAsmPrinter &printer) { in print()
2930 ptr().getType().cast<spirv::PointerType>().getStorageClass()); in print()
2939 LogicalResult spirv::LoadOp::verify() { in verify()
2953 void spirv::LoopOp::build(OpBuilder &builder, OperationState &state) { in build()
2956 static_cast<uint32_t>(spirv::LoopControl::None))); in build()
2960 ParseResult spirv::LoopOp::parse(OpAsmParser &parser, OperationState &state) { in parse()
2961 if (parseControlAttribute<spirv::LoopControl>(parser, state)) in parse()
2967 void spirv::LoopOp::print(OpAsmPrinter &printer) { in print()
2969 if (control != spirv::LoopControl::None) in print()
2970 printer << " control(" << spirv::stringifyLoopControl(control) << ")"; in print()
2983 auto branchOp = dyn_cast<spirv::BranchOp>(srcBlock.back()); in hasOneBranchOpTo()
2987 LogicalResult spirv::LoopOp::verifyRegions() { in verifyRegions()
3072 Block *spirv::LoopOp::getEntryBlock() { in getEntryBlock()
3077 Block *spirv::LoopOp::getHeaderBlock() { in getHeaderBlock()
3083 Block *spirv::LoopOp::getContinueBlock() { in getContinueBlock()
3089 Block *spirv::LoopOp::getMergeBlock() { in getMergeBlock()
3095 void spirv::LoopOp::addEntryAndMergeBlock() { in addEntryAndMergeBlock()
3103 builder.create<spirv::MergeOp>(getLoc()); in addEntryAndMergeBlock()
3110 LogicalResult spirv::MemoryBarrierOp::verify() { in verify()
3118 LogicalResult spirv::MergeOp::verify() { in verify()
3120 if (!parentOp || !isa<spirv::SelectionOp, spirv::LoopOp>(parentOp)) in verify()
3136 void spirv::ModuleOp::build(OpBuilder &builder, OperationState &state, in build()
3146 void spirv::ModuleOp::build(OpBuilder &builder, OperationState &state, in build()
3147 spirv::AddressingModel addressingModel, in build()
3148 spirv::MemoryModel memoryModel, in build()
3165 ParseResult spirv::ModuleOp::parse(OpAsmParser &parser, OperationState &state) { in parse()
3174 spirv::AddressingModel addrModel; in parse()
3175 spirv::MemoryModel memoryModel; in parse()
3181 spirv::VerCapExtAttr vceTriple; in parse()
3183 spirv::ModuleOp::getVCETripleAttrName(), in parse()
3199 void spirv::ModuleOp::print(OpAsmPrinter &printer) { in print()
3207 printer << " " << spirv::stringifyAddressingModel(addressing_model()) << " " in print()
3208 << spirv::stringifyMemoryModel(memory_model()); in print()
3209 auto addressingModelAttrName = spirv::attributeName<spirv::AddressingModel>(); in print()
3210 auto memoryModelAttrName = spirv::attributeName<spirv::MemoryModel>(); in print()
3214 if (Optional<spirv::VerCapExtAttr> triple = vce_triple()) { in print()
3216 elidedAttrs.push_back(spirv::ModuleOp::getVCETripleAttrName()); in print()
3224 LogicalResult spirv::ModuleOp::verifyRegions() { in verifyRegions()
3226 DenseMap<std::pair<spirv::FuncOp, spirv::ExecutionModel>, spirv::EntryPointOp> in verifyRegions()
3237 if (auto entryPointOp = dyn_cast<spirv::EntryPointOp>(op)) { in verifyRegions()
3238 auto funcOp = table.lookup<spirv::FuncOp>(entryPointOp.fn()); in verifyRegions()
3253 table.lookup<spirv::GlobalVariableOp>(varSymRef.getValue()); in verifyRegions()
3262 auto key = std::pair<spirv::FuncOp, spirv::ExecutionModel>( in verifyRegions()
3269 } else if (auto funcOp = dyn_cast<spirv::FuncOp>(op)) { in verifyRegions()
3290 LogicalResult spirv::ReferenceOfOp::verify() { in verify()
3295 auto specConstOp = dyn_cast_or_null<spirv::SpecConstantOp>(specConstSym); in verify()
3300 dyn_cast_or_null<spirv::SpecConstantCompositeOp>(specConstSym); in verify()
3319 LogicalResult spirv::ReturnOp::verify() { in verify()
3328 LogicalResult spirv::ReturnValueOp::verify() { in verify()
3337 LogicalResult spirv::SelectOp::verify() { in verify()
3356 ParseResult spirv::SelectionOp::parse(OpAsmParser &parser, in parse()
3358 if (parseControlAttribute<spirv::SelectionControl>(parser, state)) in parse()
3364 void spirv::SelectionOp::print(OpAsmPrinter &printer) { in print()
3366 if (control != spirv::SelectionControl::None) in print()
3367 printer << " control(" << spirv::stringifySelectionControl(control) << ")"; in print()
3373 LogicalResult spirv::SelectionOp::verifyRegions() { in verifyRegions()
3414 Block *spirv::SelectionOp::getHeaderBlock() { in getHeaderBlock()
3420 Block *spirv::SelectionOp::getMergeBlock() { in getMergeBlock()
3426 void spirv::SelectionOp::addMergeBlock() { in addMergeBlock()
3433 builder.create<spirv::MergeOp>(getLoc()); in addMergeBlock()
3436 spirv::SelectionOp spirv::SelectionOp::createIfThen( in createIfThen()
3440 builder.create<spirv::SelectionOp>(loc, spirv::SelectionControl::None); in createIfThen()
3451 builder.create<spirv::BranchOp>(loc, mergeBlock); in createIfThen()
3458 builder.create<spirv::BranchConditionalOp>( in createIfThen()
3471 ParseResult spirv::SpecConstantOp::parse(OpAsmParser &parser, in parse()
3496 void spirv::SpecConstantOp::print(OpAsmPrinter &printer) { in print()
3504 LogicalResult spirv::SpecConstantOp::verify() { in verify()
3512 if (!value.getType().isa<spirv::SPIRVType>()) in verify()
3524 ParseResult spirv::StoreOp::parse(OpAsmParser &parser, OperationState &state) { in parse()
3526 spirv::StorageClass storageClass; in parse()
3537 auto ptrType = spirv::PointerType::get(elementType, storageClass); in parse()
3545 void spirv::StoreOp::print(OpAsmPrinter &printer) { in print()
3548 ptr().getType().cast<spirv::PointerType>().getStorageClass()); in print()
3557 LogicalResult spirv::StoreOp::verify() { in verify()
3569 LogicalResult spirv::UnreachableOp::verify() { in verify()
3588 ParseResult spirv::VariableOp::parse(OpAsmParser &parser, in parse()
3611 auto ptrType = type.dyn_cast<spirv::PointerType>(); in parse()
3625 state.addAttribute(spirv::attributeName<spirv::StorageClass>(), attr); in parse()
3630 void spirv::VariableOp::print(OpAsmPrinter &printer) { in print()
3632 spirv::attributeName<spirv::StorageClass>()}; in print()
3641 LogicalResult spirv::VariableOp::verify() { in verify()
3645 if (storage_class() != spirv::StorageClass::Function) { in verify()
3651 auto pointerType = pointer().getType().cast<spirv::PointerType>(); in verify()
3660 if (!initOp || !isa<spirv::ConstantOp, // for normal constant in verify()
3661 spirv::ReferenceOfOp, // for spec constant in verify()
3662 spirv::AddressOfOp>(initOp)) in verify()
3670 stringifyDecoration(spirv::Decoration::DescriptorSet)); in verify()
3672 stringifyDecoration(spirv::Decoration::Binding)); in verify()
3674 stringifyDecoration(spirv::Decoration::BuiltIn)); in verify()
3689 LogicalResult spirv::VectorShuffleOp::verify() { in verify()
3718 ParseResult spirv::CooperativeMatrixLoadNVOp::parse(OpAsmParser &parser, in parse()
3740 void spirv::CooperativeMatrixLoadNVOp::print(OpAsmPrinter &printer) { in print()
3750 Type pointeeType = pointer.cast<spirv::PointerType>().getPointeeType(); in verifyPointerAndCoopMatrixType()
3751 if (!pointeeType.isa<spirv::ScalarType>() && !pointeeType.isa<VectorType>()) in verifyPointerAndCoopMatrixType()
3755 spirv::StorageClass storage = in verifyPointerAndCoopMatrixType()
3756 pointer.cast<spirv::PointerType>().getStorageClass(); in verifyPointerAndCoopMatrixType()
3757 if (storage != spirv::StorageClass::Workgroup && in verifyPointerAndCoopMatrixType()
3758 storage != spirv::StorageClass::StorageBuffer && in verifyPointerAndCoopMatrixType()
3759 storage != spirv::StorageClass::PhysicalStorageBuffer) in verifyPointerAndCoopMatrixType()
3767 LogicalResult spirv::CooperativeMatrixLoadNVOp::verify() { in verify()
3776 ParseResult spirv::CooperativeMatrixStoreNVOp::parse(OpAsmParser &parser, in parse()
3798 void spirv::CooperativeMatrixStoreNVOp::print(OpAsmPrinter &printer) { in print()
3807 LogicalResult spirv::CooperativeMatrixStoreNVOp::verify() { in verify()
3817 verifyCoopMatrixMulAdd(spirv::CooperativeMatrixMulAddNVOp op) { in verifyCoopMatrixMulAdd()
3820 auto typeA = op.a().getType().cast<spirv::CooperativeMatrixNVType>(); in verifyCoopMatrixMulAdd()
3821 auto typeB = op.b().getType().cast<spirv::CooperativeMatrixNVType>(); in verifyCoopMatrixMulAdd()
3822 auto typeC = op.c().getType().cast<spirv::CooperativeMatrixNVType>(); in verifyCoopMatrixMulAdd()
3823 auto typeR = op.result().getType().cast<spirv::CooperativeMatrixNVType>(); in verifyCoopMatrixMulAdd()
3838 LogicalResult spirv::CooperativeMatrixMulAddNVOp::verify() { in verify()
3846 LogicalResult spirv::MatrixTimesScalarOp::verify() { in verify()
3850 auto inputMatrix = matrix().getType().cast<spirv::MatrixType>(); in verify()
3851 auto resultMatrix = result().getType().cast<spirv::MatrixType>(); in verify()
3883 void spirv::CopyMemoryOp::print(OpAsmPrinter &printer) { in print()
3887 target().getType().cast<spirv::PointerType>().getStorageClass()); in print()
3891 source().getType().cast<spirv::PointerType>().getStorageClass()); in print()
3902 target().getType().cast<spirv::PointerType>().getPointeeType(); in print()
3906 ParseResult spirv::CopyMemoryOp::parse(OpAsmParser &parser, in parse()
3908 spirv::StorageClass targetStorageClass; in parse()
3911 spirv::StorageClass sourceStorageClass; in parse()
3937 auto targetPtrType = spirv::PointerType::get(elementType, targetStorageClass); in parse()
3938 auto sourcePtrType = spirv::PointerType::get(elementType, sourceStorageClass); in parse()
3948 LogicalResult spirv::CopyMemoryOp::verify() { in verify()
3950 target().getType().cast<spirv::PointerType>().getPointeeType(); in verify()
3953 source().getType().cast<spirv::PointerType>().getPointeeType(); in verify()
3976 LogicalResult spirv::TransposeOp::verify() { in verify()
3977 auto inputMatrix = matrix().getType().cast<spirv::MatrixType>(); in verify()
3978 auto resultMatrix = result().getType().cast<spirv::MatrixType>(); in verify()
4001 LogicalResult spirv::MatrixTimesMatrixOp::verify() { in verify()
4002 auto leftMatrix = leftmatrix().getType().cast<spirv::MatrixType>(); in verify()
4003 auto rightMatrix = rightmatrix().getType().cast<spirv::MatrixType>(); in verify()
4004 auto resultMatrix = result().getType().cast<spirv::MatrixType>(); in verify()
4037 ParseResult spirv::SpecConstantCompositeOp::parse(OpAsmParser &parser, in parse()
4077 void spirv::SpecConstantCompositeOp::print(OpAsmPrinter &printer) { in print()
4089 LogicalResult spirv::SpecConstantCompositeOp::verify() { in verify()
4090 auto cType = type().dyn_cast<spirv::CompositeType>(); in verify()
4097 if (cType.isa<spirv::CooperativeMatrixNVType>()) in verify()
4108 dyn_cast<spirv::SpecConstantOp>(SymbolTable::lookupNearestSymbolFrom( in verify()
4125 ParseResult spirv::SpecConstantOperationOp::parse(OpAsmParser &parser, in parse()
4141 builder.create<spirv::YieldOp>(wrappedOp->getLoc(), wrappedOp->getResult(0)); in parse()
4152 void spirv::SpecConstantOperationOp::print(OpAsmPrinter &printer) { in print()
4157 LogicalResult spirv::SpecConstantOperationOp::verifyRegions() { in verifyRegions()
4165 if (!enclosedOp.hasTrait<OpTrait::spirv::UsableInSpecConstantOp>()) in verifyRegions()
4169 if (!isa<spirv::ConstantOp, spirv::ReferenceOfOp, in verifyRegions()
4170 spirv::SpecConstantOperationOp>(operand.getDefiningOp())) in verifyRegions()
4181 LogicalResult spirv::GLFrexpStructOp::verify() { in verify()
4182 spirv::StructType structTy = result().getType().dyn_cast<spirv::StructType>(); in verify()
4227 LogicalResult spirv::GLLdexpOp::verify() { in verify()
4250 LogicalResult spirv::ImageDrefGatherOp::verify() { in verify()
4253 sampledimage().getType().cast<spirv::SampledImageType>(); in verify()
4254 auto imageType = sampledImageType.getImageType().cast<spirv::ImageType>(); in verify()
4266 spirv::Dim imageDim = imageType.getDim(); in verify()
4267 spirv::ImageSamplingInfo imageMS = imageType.getSamplingInfo(); in verify()
4269 if (imageDim != spirv::Dim::Dim2D && imageDim != spirv::Dim::Cube && in verify()
4270 imageDim != spirv::Dim::Rect) in verify()
4275 if (imageMS != spirv::ImageSamplingInfo::SingleSampled) in verify()
4278 spirv::ImageOperandsAttr attr = imageoperandsAttr(); in verify()
4288 LogicalResult spirv::ShiftLeftLogicalOp::verify() { in verify()
4296 LogicalResult spirv::ShiftRightArithmeticOp::verify() { in verify()
4304 LogicalResult spirv::ShiftRightLogicalOp::verify() { in verify()
4312 LogicalResult spirv::ImageQuerySizeOp::verify() { in verify()
4313 spirv::ImageType imageType = image().getType().cast<spirv::ImageType>(); in verify()
4316 spirv::Dim dim = imageType.getDim(); in verify()
4317 spirv::ImageSamplingInfo samplingInfo = imageType.getSamplingInfo(); in verify()
4318 spirv::ImageSamplerUseInfo samplerInfo = imageType.getSamplerUseInfo(); in verify()
4320 case spirv::Dim::Dim1D: in verify()
4321 case spirv::Dim::Dim2D: in verify()
4322 case spirv::Dim::Dim3D: in verify()
4323 case spirv::Dim::Cube: in verify()
4324 if (samplingInfo != spirv::ImageSamplingInfo::MultiSampled && in verify()
4325 samplerInfo != spirv::ImageSamplerUseInfo::SamplerUnknown && in verify()
4326 samplerInfo != spirv::ImageSamplerUseInfo::NoSampler) in verify()
4331 case spirv::Dim::Buffer: in verify()
4332 case spirv::Dim::Rect: in verify()
4341 case spirv::Dim::Dim1D: in verify()
4342 case spirv::Dim::Buffer: in verify()
4345 case spirv::Dim::Dim2D: in verify()
4346 case spirv::Dim::Cube: in verify()
4347 case spirv::Dim::Rect: in verify()
4350 case spirv::Dim::Dim3D: in verify()
4357 if (imageType.getArrayedInfo() == spirv::ImageArrayedInfo::Arrayed) in verify()
4426 void spirv::InBoundsPtrAccessChainOp::build(OpBuilder &builder, in build()
4435 ParseResult spirv::InBoundsPtrAccessChainOp::parse(OpAsmParser &parser, in parse()
4438 spirv::InBoundsPtrAccessChainOp::getOperationName(), parser, state); in parse()
4441 void spirv::InBoundsPtrAccessChainOp::print(OpAsmPrinter &printer) { in print()
4445 LogicalResult spirv::InBoundsPtrAccessChainOp::verify() { in verify()
4453 void spirv::PtrAccessChainOp::build(OpBuilder &builder, OperationState &state, in build()
4461 ParseResult spirv::PtrAccessChainOp::parse(OpAsmParser &parser, in parse()
4463 return parsePtrAccessChainOpImpl(spirv::PtrAccessChainOp::getOperationName(), in parse()
4467 void spirv::PtrAccessChainOp::print(OpAsmPrinter &printer) { in print()
4471 LogicalResult spirv::PtrAccessChainOp::verify() { in verify()
4479 LogicalResult spirv::VectorTimesScalarOp::verify() { in verify()
4497 namespace spirv { namespace