Skip to content

Commit d1388da

Browse files
authored
1 parent 6d6c28a commit d1388da

File tree

5 files changed

+294
-0
lines changed

5 files changed

+294
-0
lines changed

include/LLVMSPIRVExtensions.inc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,4 @@ EXT(SPV_INTEL_task_sequence)
7676
EXT(SPV_INTEL_maximum_registers)
7777
EXT(SPV_INTEL_bindless_images)
7878
EXT(SPV_INTEL_2d_block_io)
79+
EXT(SPV_INTEL_subgroup_matrix_multiply_accumulate)

lib/SPIRV/libSPIRV/SPIRVInstruction.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4429,5 +4429,23 @@ _SPIRV_OP(Subgroup2DBlockLoadTranspose, false, 11)
44294429
_SPIRV_OP(Subgroup2DBlockLoadTransform, false, 11)
44304430
#undef _SPIRV_OP
44314431

4432+
class SPIRVSubgroupMatrixMultiplyAccumulateINTELInst
4433+
: public SPIRVInstTemplateBase {
4434+
public:
4435+
std::optional<ExtensionID> getRequiredExtension() const override {
4436+
return ExtensionID::SPV_INTEL_subgroup_matrix_multiply_accumulate;
4437+
}
4438+
SPIRVCapVec getRequiredCapability() const override {
4439+
return getVec(CapabilitySubgroupMatrixMultiplyAccumulateINTEL);
4440+
}
4441+
};
4442+
4443+
#define _SPIRV_OP(x, ...) \
4444+
typedef SPIRVInstTemplate<SPIRVSubgroupMatrixMultiplyAccumulateINTELInst, \
4445+
Op##x##INTEL, __VA_ARGS__> \
4446+
SPIRV##x##INTEL;
4447+
_SPIRV_OP(SubgroupMatrixMultiplyAccumulate, true, 7, true, 4)
4448+
#undef _SPIRV_OP
4449+
44324450
} // namespace SPIRV
44334451
#endif // SPIRV_LIBSPIRV_SPIRVINSTRUCTION_H

lib/SPIRV/libSPIRV/SPIRVNameMapEnum.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,8 @@ template <> inline void SPIRVMap<Capability, std::string>::init() {
645645
add(CapabilitySubgroup2DBlockIOINTEL, "Subgroup2DBlockIOINTEL");
646646
add(CapabilitySubgroup2DBlockTransformINTEL, "Subgroup2DBlockTransformINTEL");
647647
add(CapabilitySubgroup2DBlockTransposeINTEL, "Subgroup2DBlockTransposeINTEL");
648+
add(CapabilitySubgroupMatrixMultiplyAccumulateINTEL,
649+
"SubgroupMatrixMultiplyAccumulateINTEL");
648650
// From spirv_internal.hpp
649651
add(internal::CapabilityFastCompositeINTEL, "FastCompositeINTEL");
650652
add(internal::CapabilityTokenTypeINTEL, "TokenTypeINTEL");

lib/SPIRV/libSPIRV/SPIRVOpCodeEnum.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -578,6 +578,7 @@ _SPIRV_OP(Subgroup2DBlockLoadTransformINTEL, 6232)
578578
_SPIRV_OP(Subgroup2DBlockLoadTransposeINTEL, 6233)
579579
_SPIRV_OP(Subgroup2DBlockPrefetchINTEL, 6234)
580580
_SPIRV_OP(Subgroup2DBlockStoreINTEL, 6235)
581+
_SPIRV_OP(SubgroupMatrixMultiplyAccumulateINTEL, 6237)
581582
_SPIRV_OP(GroupIMulKHR, 6401)
582583
_SPIRV_OP(GroupFMulKHR, 6402)
583584
_SPIRV_OP(GroupBitwiseAndKHR, 6403)

0 commit comments

Comments
 (0)