@@ -123,36 +123,15 @@ enum class MatrixUse : uint32_t {
123123 Unnecessary = 3
124124};
125125
126- // TODO: replace the following W/A with a better solution when we have it.
127- // The following structure is used to represent the joint matrix type in the
128- // LLVM IR. The structure has a pointer to a multidimensional array member which
129- // makes the encoding of the matrix type information within the LLVM IR looks
130- // like this:
131- // %struct.__spirv_JointMatrixINTEL = type { [42 x [6 x [2 x [1 x float]]]]* }
132- // Note that an array cannot be of zero size but MatrixLayout and Scope
133- // parameters can; hence '+ 1' is added to the 3rd and 4th dimensions.
134- // In general, representing a matrix type information like this is a bit odd
135- // (especially for MatrixLayout and Scope parameters). But with the current
136- // tools we have in Clang, this is the only way to preserve and communicate this
137- // information to SPIRV translator.
138- // The long term solution would be to introduce a matrix type in Clang and use
139- // it instead of this member.
140126#if (SYCL_EXT_ONEAPI_MATRIX_VERSION > 1)
141127template <typename T, std::size_t R, std::size_t C, MatrixLayout L,
142128 Scope::Flag S = Scope::Flag::Subgroup,
143129 MatrixUse U = MatrixUse::Unnecessary>
144- struct __spirv_JointMatrixINTEL {
145- T (*Value)
146- [R][C][static_cast <size_t >(L) + 1 ][static_cast <size_t >(S) + 1 ]
147- [static_cast <size_t >(U) + 1 ];
148- };
130+ struct __spirv_JointMatrixINTEL ;
149131#else
150132template <typename T, std::size_t R, std::size_t C, MatrixLayout L,
151133 Scope::Flag S = Scope::Flag::Subgroup>
152- struct __spirv_JointMatrixINTEL {
153- T (*Value)
154- [R][C][static_cast <size_t >(L) + 1 ][static_cast <size_t >(S) + 1 ];
155- };
134+ struct __spirv_JointMatrixINTEL ;
156135#endif // SYCL_EXT_ONEAPI_MATRIX_VERSION
157136
158137} // namespace __spv
0 commit comments