Skip to content

Commit dbfe3ea

Browse files
MrSidimspreethi-intel
authored andcommitted
Remove JointMatrixINTEL W/S (intel#1658)
It's not longer needed after intel#6535 Signed-off-by: Sidorov, Dmitry <[email protected]> Original commit: KhronosGroup/SPIRV-LLVM-Translator@7a559fa
1 parent 800bbea commit dbfe3ea

7 files changed

+63
-196
lines changed

llvm-spirv/lib/SPIRV/SPIRVRegularizeLLVM.cpp

-119
Original file line numberDiff line numberDiff line change
@@ -346,122 +346,6 @@ Value *SPIRVRegularizeLLVMBase::extendBitInstBoolArg(Instruction *II) {
346346
}
347347
}
348348

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

636-
for (StructType *ST : M->getIdentifiedStructTypes())
637-
adaptStructTypes(ST);
638-
639520
if (SPIRVDbgSaveRegularizedModule)
640521
saveLLVMModule(M, RegularizedModuleTmpFile);
641522
return true;

llvm-spirv/lib/SPIRV/SPIRVRegularizeLLVM.h

-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ class SPIRVRegularizeLLVMBase {
100100
Value *extendBitInstBoolArg(llvm::Instruction *OldInst);
101101

102102
static std::string lowerLLVMIntrinsicName(llvm::IntrinsicInst *II);
103-
void adaptStructTypes(llvm::StructType *ST);
104103
static char ID;
105104

106105
private:

llvm-spirv/test/transcoding/SPV_INTEL_joint_matrix/joint_matrix.ll

+17-23
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: EntryPoint 6 [[#Kernel:]]
@@ -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)