Skip to content

Commit 29595be

Browse files
MrSidimsmateuszchudyk
authored andcommitted
[Backport to 14] [NFC] Remove JointMatrixINTEL W/S (KhronosGroup#1658)
It's not longer needed after intel/llvm#6535 Signed-off-by: Sidorov, Dmitry <[email protected]>
1 parent 8770b99 commit 29595be

File tree

7 files changed

+63
-192
lines changed

7 files changed

+63
-192
lines changed

lib/SPIRV/SPIRVRegularizeLLVM.cpp

Lines changed: 0 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -352,118 +352,6 @@ Value *SPIRVRegularizeLLVMBase::extendBitInstBoolArg(Instruction *II) {
352352
}
353353
}
354354

355-
void SPIRVRegularizeLLVMBase::adaptStructTypes(StructType *ST) {
356-
if (!ST->hasName())
357-
return;
358-
StringRef STName = ST->getName();
359-
STName.consume_front("struct.");
360-
STName.consume_front("__spv::");
361-
StringRef MangledName = STName.substr(0, STName.find('.'));
362-
363-
// Representation in LLVM IR before the translator is a pointer array wrapped
364-
// in a structure:
365-
// %struct.__spirv_JointMatrixINTEL = type { [R x [C x [L x [S x type]]]]* }
366-
// where R = Rows, C = Columnts, L = Layout + 1, S = Scope + 1
367-
// this '+1' for the Layout and Scope is required because both of them can
368-
// be '0', but array size can not be '0'.
369-
// The result should look like SPIR-V friendly LLVM IR:
370-
// %spirv.JointMatrixINTEL._char_2_2_0_3
371-
// Here we check the structure name yet again. Another option would be to
372-
// check SPIR-V friendly function calls (by their name) and obtain return
373-
// or their parameter types, assuming, that the appropriate types are Matrix
374-
// structure type. But in the near future, we will reuse Composite
375-
// instructions to do, for example, matrix initialization directly on AMX
376-
// register by OpCompositeConstruct. And we can't claim, that the Result type
377-
// of OpCompositeConstruct instruction is always the joint matrix type, it's
378-
// simply not true.
379-
if (MangledName == "__spirv_JointMatrixINTEL" && !ST->isOpaquePointerTy()) {
380-
auto *PtrTy = dyn_cast<PointerType>(ST->getElementType(0));
381-
assert(PtrTy &&
382-
"Expected a pointer to an array to represent joint matrix type");
383-
std::vector<size_t> TypeLayout;
384-
ArrayType *ArrayTy =
385-
dyn_cast<ArrayType>(PtrTy->getNonOpaquePointerElementType());
386-
assert(ArrayTy && "Expected a pointer element type of an array type to "
387-
"represent joint matrix type");
388-
TypeLayout.push_back(ArrayTy->getNumElements());
389-
for (size_t I = 1; I != 4; ++I) {
390-
ArrayTy = dyn_cast<ArrayType>(ArrayTy->getElementType());
391-
assert(ArrayTy &&
392-
"Expected a element type to represent joint matrix type");
393-
TypeLayout.push_back(ArrayTy->getNumElements());
394-
}
395-
// JointMatrixINTEL type can have optional 'Use' parameter, which is encoded
396-
// as another array dimention. In case if it has default 'Unnecessary' (4)
397-
// parameter - ignore it.
398-
if (isa<ArrayType>(ArrayTy->getElementType())) {
399-
ArrayTy = cast<ArrayType>(ArrayTy->getElementType());
400-
uint32_t UseInt = ArrayTy->getNumElements();
401-
assert(UseInt <= 4 && "Use parameter encoded in the array must be < 5 ");
402-
if (UseInt != 4)
403-
TypeLayout.push_back(UseInt);
404-
}
405-
406-
auto *ElemTy = ArrayTy->getElementType();
407-
std::string ElemTyStr;
408-
if (ElemTy->isIntegerTy()) {
409-
auto *IntElemTy = cast<IntegerType>(ElemTy);
410-
switch (IntElemTy->getBitWidth()) {
411-
case 8:
412-
ElemTyStr = "char";
413-
break;
414-
case 16:
415-
ElemTyStr = "short";
416-
break;
417-
case 32:
418-
ElemTyStr = "int";
419-
break;
420-
case 64:
421-
ElemTyStr = "long";
422-
break;
423-
default:
424-
ElemTyStr = "i" + std::to_string(IntElemTy->getBitWidth());
425-
}
426-
}
427-
// Check half type like this as well, but in DPC++ it most likelly will
428-
// be a class
429-
else if (ElemTy->isHalfTy())
430-
ElemTyStr = "half";
431-
else if (ElemTy->isFloatTy())
432-
ElemTyStr = "float";
433-
else if (ElemTy->isDoubleTy())
434-
ElemTyStr = "double";
435-
else {
436-
// Half type is special: in DPC++ we use `class half` instead of `half`
437-
// type natively supported by Clang.
438-
auto *STElemTy = dyn_cast<StructType>(ElemTy);
439-
if (!STElemTy && !STElemTy->hasName())
440-
llvm_unreachable("Unexpected type for matrix!");
441-
if (isSYCLHalfType(ElemTy))
442-
ElemTyStr = "half";
443-
if (isSYCLBfloat16Type(ElemTy))
444-
ElemTyStr = "bfloat16";
445-
if (ElemTyStr.size() == 0)
446-
llvm_unreachable("Unexpected type for matrix!");
447-
}
448-
std::stringstream SPVName;
449-
SPVName << kSPIRVTypeName::PrefixAndDelim
450-
<< kSPIRVTypeName::JointMatrixINTEL << kSPIRVTypeName::Delimiter
451-
<< kSPIRVTypeName::PostfixDelim << ElemTyStr
452-
<< kSPIRVTypeName::PostfixDelim << std::to_string(TypeLayout[0])
453-
<< kSPIRVTypeName::PostfixDelim << std::to_string(TypeLayout[1])
454-
<< kSPIRVTypeName::PostfixDelim << std::to_string(TypeLayout[2] - 1)
455-
<< kSPIRVTypeName::PostfixDelim
456-
<< std::to_string(TypeLayout[3] - 1);
457-
if (TypeLayout.size() == 5)
458-
SPVName << kSPIRVTypeName::PostfixDelim
459-
<< std::to_string(TypeLayout[4] - 1);
460-
// Note, that this structure is not opaque and there is no way to make it
461-
// opaque but to recreate it entirely and replace it everywhere. Lets
462-
// keep the structure as is, dealing with it during SPIR-V generation.
463-
ST->setName(SPVName.str());
464-
}
465-
}
466-
467355
bool SPIRVRegularizeLLVMBase::runRegularizeLLVM(Module &Module) {
468356
M = &Module;
469357
Ctx = &M->getContext();
@@ -626,9 +514,6 @@ bool SPIRVRegularizeLLVMBase::regularize() {
626514
}
627515
}
628516

629-
for (StructType *ST : M->getIdentifiedStructTypes())
630-
adaptStructTypes(ST);
631-
632517
if (SPIRVDbgSaveRegularizedModule)
633518
saveLLVMModule(M, RegularizedModuleTmpFile);
634519
return true;

lib/SPIRV/SPIRVRegularizeLLVM.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ class SPIRVRegularizeLLVMBase {
105105
Value *extendBitInstBoolArg(llvm::Instruction *OldInst);
106106

107107
static std::string lowerLLVMIntrinsicName(llvm::IntrinsicInst *II);
108-
void adaptStructTypes(llvm::StructType *ST);
109108
static char ID;
110109

111110
private:

test/transcoding/SPV_INTEL_joint_matrix/joint_matrix.ll

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,10 @@
11
; RUN: llvm-as < %s -o %t.bc
2-
; RUN: llvm-spirv %t.bc -s -o %t.pre.bc
3-
; RUN: llvm-dis %t.pre.bc -o - | FileCheck %s --check-prefix=CHECK-PRE
42
; RUN: llvm-spirv %t.bc -spirv-ext=+SPV_INTEL_joint_matrix -o %t.spv
53
; RUN: llvm-spirv %t.spv -to-text -o - | FileCheck %s --check-prefix=CHECK-SPIRV
64

75
; RUN: llvm-spirv -r %t.spv -o %t.rev.bc
86
; RUN: llvm-dis %t.rev.bc -o - | FileCheck %s --check-prefix=CHECK-LLVM
97

10-
; CHECK-PRE: %spirv.JointMatrixINTEL._short_2_2_0_3
11-
; CHECK-PRE: %spirv.JointMatrixINTEL._char_2_16_0_3_0
12-
; CHECK-PRE: %spirv.JointMatrixINTEL._char_16_2_3_3
13-
148
; CHECK-SPIRV: Capability JointMatrixINTEL
159
; CHECK-SPIRV: Extension "SPV_INTEL_joint_matrix"
1610
; CHECK-SPIRV: Name [[#Kernel:]] "_ZTSZ4mainE11matrix_test"
@@ -67,9 +61,9 @@ source_filename = "./joint_matrix_test.cpp"
6761
target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64"
6862
target triple = "spir64-unknown-unknown"
6963

70-
%"struct.__spv::__spirv_JointMatrixINTEL" = type { [2 x [2 x [1 x [4 x [4 x i16]]]]]* }
71-
%"struct.__spv::__spirv_JointMatrixINTEL.0" = type { [2 x [16 x [1 x [4 x [1 x i8]]]]]* }
72-
%"struct.__spv::__spirv_JointMatrixINTEL.2" = type { [16 x [2 x [4 x [4 x i8]]]]* }
64+
%spirv.JointMatrixINTEL._short_2_2_0_3 = type { [2 x [2 x [1 x [4 x [4 x i16]]]]]* }
65+
%spirv.JointMatrixINTEL._char_2_16_0_3_0 = type { [2 x [16 x [1 x [4 x [1 x i8]]]]]* }
66+
%spirv.JointMatrixINTEL._char_16_2_3_3 = type { [16 x [2 x [4 x [4 x i8]]]]* }
7367

7468
$_ZTSZ4mainE11matrix_test = comdat any
7569

@@ -99,60 +93,60 @@ entry:
9993
%add.ptr.i51 = getelementptr inbounds i16, i16 addrspace(1)* %_arg_, i64 %mul6.i
10094
%add.ptr7.i52 = getelementptr inbounds i16, i16 addrspace(1)* %add.ptr.i51, i64 %sub5.i
10195
%add.ptr7.i = addrspacecast i16 addrspace(1)* %add.ptr7.i52 to i16 addrspace(4)*
102-
%call8.i = tail call spir_func %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIsLm2ELm2ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i16 addrspace(4)* %add.ptr7.i, i64 %_arg_1, i32 0, i32 3, i32 0) #3
96+
%call8.i = tail call spir_func %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIsLm2ELm2ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i16 addrspace(4)* %add.ptr7.i, i64 %_arg_1, i32 0, i32 3, i32 0) #3
10397
%add.ptr11.i53 = getelementptr inbounds i8, i8 addrspace(1)* %_arg_3, i64 %mul6.i
10498
%add.ptr16.i55 = getelementptr inbounds i8, i8 addrspace(1)* %_arg_5, i64 %sub5.i
10599
br label %for.cond.i
106100

107101
for.cond.i: ; preds = %for.body.i, %entry
108102
%k.0.i = phi i32 [ 0, %entry ], [ %add.i, %for.body.i ]
109-
%C.0.i = phi %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)* [ %call8.i, %entry ], [ %call19.i, %for.body.i ]
103+
%C.0.i = phi %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)* [ %call8.i, %entry ], [ %call19.i, %for.body.i ]
110104
%cmp.i = icmp ult i32 %k.0.i, 32
111105
br i1 %cmp.i, label %for.body.i, label %_ZZ4mainENKUlN2cl4sycl7nd_itemILi2EEEE_clES2_.exit
112106

113107
for.body.i: ; preds = %for.cond.i
114108
%idx.ext.i = zext i32 %k.0.i to i64
115109
%add.ptr12.i54 = getelementptr inbounds i8, i8 addrspace(1)* %add.ptr11.i53, i64 %idx.ext.i
116110
%add.ptr12.i = addrspacecast i8 addrspace(1)* %add.ptr12.i54 to i8 addrspace(4)*
117-
%call13.i = tail call spir_func %"struct.__spv::__spirv_JointMatrixINTEL.0" addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIaLm2ELm16ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i8 addrspace(4)* %add.ptr12.i, i64 %_arg_1, i32 0, i32 3, i32 0) #3
111+
%call13.i = tail call spir_func %spirv.JointMatrixINTEL._char_2_16_0_3_0 addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIaLm2ELm16ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i8 addrspace(4)* %add.ptr12.i, i64 %_arg_1, i32 0, i32 3, i32 0) #3
118112
%mul14.i = shl nuw nsw i32 %k.0.i, 5
119113
%idx.ext15.i = zext i32 %mul14.i to i64
120114
%add.ptr17.i56 = getelementptr inbounds i8, i8 addrspace(1)* %add.ptr16.i55, i64 %idx.ext15.i
121115
%add.ptr17.i = addrspacecast i8 addrspace(1)* %add.ptr17.i56 to i8 addrspace(4)*
122-
%call18.i = tail call spir_func %"struct.__spv::__spirv_JointMatrixINTEL.2" addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIaLm16ELm2ELN5__spv12MatrixLayoutE3ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i8 addrspace(4)* %add.ptr17.i, i64 %_arg_1, i32 0, i32 3, i32 0) #3
123-
%call19.i = tail call spir_func %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)* @_Z27__spirv_JointMatrixMadINTELIasLm2ELm16ELm2ELN5__spv12MatrixLayoutE0ELS1_3ELS1_0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT0_XT1_EXT3_EXT6_EXT7_EEEPNS4_IT_XT1_EXT2_EXT4_EXT7_EEEPNS4_IS8_XT2_EXT3_EXT5_EXT7_EEES7_S3_(%"struct.__spv::__spirv_JointMatrixINTEL.0" addrspace(4)* %call13.i, %"struct.__spv::__spirv_JointMatrixINTEL.2" addrspace(4)* %call18.i, %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)* %C.0.i, i32 3) #3
116+
%call18.i = tail call spir_func %spirv.JointMatrixINTEL._char_16_2_3_3 addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIaLm16ELm2ELN5__spv12MatrixLayoutE3ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i8 addrspace(4)* %add.ptr17.i, i64 %_arg_1, i32 0, i32 3, i32 0) #3
117+
%call19.i = tail call spir_func %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)* @_Z27__spirv_JointMatrixMadINTELIasLm2ELm16ELm2ELN5__spv12MatrixLayoutE0ELS1_3ELS1_0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT0_XT1_EXT3_EXT6_EXT7_EEEPNS4_IT_XT1_EXT2_EXT4_EXT7_EEEPNS4_IS8_XT2_EXT3_EXT5_EXT7_EEES7_S3_(%spirv.JointMatrixINTEL._char_2_16_0_3_0 addrspace(4)* %call13.i, %spirv.JointMatrixINTEL._char_16_2_3_3 addrspace(4)* %call18.i, %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)* %C.0.i, i32 3) #3
124118
%add.i = add nuw nsw i32 %k.0.i, 16
125119
br label %for.cond.i, !llvm.loop !19
126120

127121
_ZZ4mainENKUlN2cl4sycl7nd_itemILi2EEEE_clES2_.exit: ; preds = %for.cond.i
128-
tail call spir_func void @_Z29__spirv_JointMatrixStoreINTELIsLm2ELm2ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEvPT_PNS0_24__spirv_JointMatrixINTELIS4_XT0_EXT1_EXT2_EXT3_EEEmS1_S3_i(i16 addrspace(4)* %add.ptr7.i, %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)* %C.0.i, i64 %_arg_1, i32 0, i32 3, i32 0) #3
129-
%C.0.i.new = call spir_func %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)* @_Z26__spirv_CompositeConstructi(i32 42) #1
122+
tail call spir_func void @_Z29__spirv_JointMatrixStoreINTELIsLm2ELm2ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEvPT_PNS0_24__spirv_JointMatrixINTELIS4_XT0_EXT1_EXT2_EXT3_EEEmS1_S3_i(i16 addrspace(4)* %add.ptr7.i, %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)* %C.0.i, i64 %_arg_1, i32 0, i32 3, i32 0) #3
123+
%C.0.i.new = call spir_func %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)* @_Z26__spirv_CompositeConstructi(i32 42) #1
130124
%ref.tmp = alloca i32, align 4
131125
%ref.tmp.ascast = addrspacecast i32* %ref.tmp to i32 addrspace(4)*
132126
store i32 0, i32 addrspace(4)* %ref.tmp.ascast, align 4
133127
%zero = load i32, i32 addrspace(4)* %ref.tmp.ascast, align 8
134-
%C.0.i.new.load = call spir_func %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)* @_Z26__spirv_CompositeConstructi(i32 %zero) #1
128+
%C.0.i.new.load = call spir_func %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)* @_Z26__spirv_CompositeConstructi(i32 %zero) #1
135129

136130
ret void
137131
}
138132

139133
; Function Attrs: convergent
140-
declare dso_local spir_func %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIsLm2ELm2ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i16 addrspace(4)*, i64, i32, i32, i32) local_unnamed_addr #1
134+
declare dso_local spir_func %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIsLm2ELm2ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i16 addrspace(4)*, i64, i32, i32, i32) local_unnamed_addr #1
141135

142136
; Function Attrs: convergent
143-
declare dso_local spir_func %"struct.__spv::__spirv_JointMatrixINTEL.0" addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIaLm2ELm16ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i8 addrspace(4)*, i64, i32, i32, i32) local_unnamed_addr #1
137+
declare dso_local spir_func %spirv.JointMatrixINTEL._char_2_16_0_3_0 addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIaLm2ELm16ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i8 addrspace(4)*, i64, i32, i32, i32) local_unnamed_addr #1
144138

145139
; Function Attrs: convergent
146-
declare dso_local spir_func %"struct.__spv::__spirv_JointMatrixINTEL.2" addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIaLm16ELm2ELN5__spv12MatrixLayoutE3ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i8 addrspace(4)*, i64, i32, i32, i32) local_unnamed_addr #1
140+
declare dso_local spir_func %spirv.JointMatrixINTEL._char_16_2_3_3 addrspace(4)* @_Z28__spirv_JointMatrixLoadINTELIaLm16ELm2ELN5__spv12MatrixLayoutE3ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT_XT0_EXT1_EXT2_EXT3_EEEPS5_mS1_S3_i(i8 addrspace(4)*, i64, i32, i32, i32) local_unnamed_addr #1
147141

148142
; Function Attrs: convergent
149-
declare dso_local spir_func %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)* @_Z27__spirv_JointMatrixMadINTELIasLm2ELm16ELm2ELN5__spv12MatrixLayoutE0ELS1_3ELS1_0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT0_XT1_EXT3_EXT6_EXT7_EEEPNS4_IT_XT1_EXT2_EXT4_EXT7_EEEPNS4_IS8_XT2_EXT3_EXT5_EXT7_EEES7_S3_(%"struct.__spv::__spirv_JointMatrixINTEL.0" addrspace(4)*, %"struct.__spv::__spirv_JointMatrixINTEL.2" addrspace(4)*, %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)*, i32) local_unnamed_addr #1
143+
declare dso_local spir_func %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)* @_Z27__spirv_JointMatrixMadINTELIasLm2ELm16ELm2ELN5__spv12MatrixLayoutE0ELS1_3ELS1_0ELNS0_5Scope4FlagE3EEPNS0_24__spirv_JointMatrixINTELIT0_XT1_EXT3_EXT6_EXT7_EEEPNS4_IT_XT1_EXT2_EXT4_EXT7_EEEPNS4_IS8_XT2_EXT3_EXT5_EXT7_EEES7_S3_(%spirv.JointMatrixINTEL._char_2_16_0_3_0 addrspace(4)*, %spirv.JointMatrixINTEL._char_16_2_3_3 addrspace(4)*, %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)*, i32) local_unnamed_addr #1
150144

151145
; Function Attrs: convergent
152-
declare dso_local spir_func void @_Z29__spirv_JointMatrixStoreINTELIsLm2ELm2ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEvPT_PNS0_24__spirv_JointMatrixINTELIS4_XT0_EXT1_EXT2_EXT3_EEEmS1_S3_i(i16 addrspace(4)*, %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)*, i64, i32, i32, i32) local_unnamed_addr #1
146+
declare dso_local spir_func void @_Z29__spirv_JointMatrixStoreINTELIsLm2ELm2ELN5__spv12MatrixLayoutE0ELNS0_5Scope4FlagE3EEvPT_PNS0_24__spirv_JointMatrixINTELIS4_XT0_EXT1_EXT2_EXT3_EEEmS1_S3_i(i16 addrspace(4)*, %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)*, i64, i32, i32, i32) local_unnamed_addr #1
153147

154148
; Function Attrs: convergent
155-
declare dso_local spir_func %"struct.__spv::__spirv_JointMatrixINTEL" addrspace(4)* @_Z26__spirv_CompositeConstructi(i32) #1
149+
declare dso_local spir_func %spirv.JointMatrixINTEL._short_2_2_0_3 addrspace(4)* @_Z26__spirv_CompositeConstructi(i32) #1
156150

157151
; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn
158152
declare void @llvm.assume(i1 noundef) #2

0 commit comments

Comments
 (0)