Skip to content

Commit c872e80

Browse files
committed
[Matrix] Only pass vector arg as overloaded type in MatrixBuilder.
In 2b3c505, the pointer arguments for the matrix load and store intrinsics was changed to always be the element type of the vector argument. This patch updates the MatrixBuilder to not add the pointer type to the overloaded types and adjusts the clang/mlir tests. This should fix a few build failures on GreenDragon, including http://green.lab.llvm.org/green/job/test-suite-verify-machineinstrs-x86_64-O0-g/7891/
1 parent 327c445 commit c872e80

File tree

5 files changed

+39
-35
lines changed

5 files changed

+39
-35
lines changed

clang/test/CodeGen/matrix-type-builtins.c

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
// RUN: %clang_cc1 -fenable-matrix -triple x86_64-apple-darwin %s -emit-llvm -disable-llvm-passes -o - | FileCheck %s
22

3+
// Also check we do not crash when running some middle-end passes. Most
4+
// importantly this includes the IR verifier, to ensure we emit valid IR.
5+
// RUN: %clang_cc1 -fenable-matrix -emit-llvm -triple x86_64-apple-darwin %s -o %t
6+
37
// Tests for the matrix type builtins.
48

59
typedef double dx5x5_t __attribute__((matrix_type(5, 5)));
@@ -100,15 +104,15 @@ void transpose_global() {
100104
void column_major_load_with_const_stride_double(double *Ptr) {
101105
// CHECK-LABEL: define void @column_major_load_with_const_stride_double(double* %Ptr)
102106
// CHECK: [[PTR:%.*]] = load double*, double** %Ptr.addr, align 8
103-
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64.p0f64(double* align 8 [[PTR]], i64 5, i1 false, i32 5, i32 5)
107+
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64(double* align 8 [[PTR]], i64 5, i1 false, i32 5, i32 5)
104108

105109
dx5x5_t m_a1 = __builtin_matrix_column_major_load(Ptr, 5, 5, 5);
106110
}
107111

108112
void column_major_load_with_const_stride2_double(double *Ptr) {
109113
// CHECK-LABEL: define void @column_major_load_with_const_stride2_double(double* %Ptr)
110114
// CHECK: [[PTR:%.*]] = load double*, double** %Ptr.addr, align 8
111-
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64.p0f64(double* align 8 [[PTR]], i64 15, i1 false, i32 5, i32 5)
115+
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64(double* align 8 [[PTR]], i64 15, i1 false, i32 5, i32 5)
112116

113117
dx5x5_t m_a2 = __builtin_matrix_column_major_load(Ptr, 5, 5, 2 * 3 + 9);
114118
}
@@ -117,7 +121,7 @@ void column_major_load_with_variable_stride_ull_float(float *Ptr, unsigned long
117121
// CHECK-LABEL: define void @column_major_load_with_variable_stride_ull_float(float* %Ptr, i64 %S)
118122
// CHECK: [[S:%.*]] = load i64, i64* %S.addr, align 8
119123
// CHECK-NEXT: [[PTR:%.*]] = load float*, float** %Ptr.addr, align 8
120-
// CHECK-NEXT: call <6 x float> @llvm.matrix.column.major.load.v6f32.p0f32(float* align 4 [[PTR]], i64 [[S]], i1 false, i32 2, i32 3)
124+
// CHECK-NEXT: call <6 x float> @llvm.matrix.column.major.load.v6f32(float* align 4 [[PTR]], i64 [[S]], i1 false, i32 2, i32 3)
121125

122126
fx2x3_t m_b = __builtin_matrix_column_major_load(Ptr, 2, 3, S);
123127
}
@@ -128,7 +132,7 @@ void column_major_load_with_stride_math_int(int *Ptr, int S) {
128132
// CHECK-NEXT: [[STRIDE:%.*]] = add nsw i32 [[S]], 32
129133
// CHECK-NEXT: [[STRIDE_EXT:%.*]] = sext i32 [[STRIDE]] to i64
130134
// CHECK-NEXT: [[PTR:%.*]] = load i32*, i32** %Ptr.addr, align 8
131-
// CHECK-NEXT: call <80 x i32> @llvm.matrix.column.major.load.v80i32.p0i32(i32* align 4 [[PTR]], i64 [[STRIDE_EXT]], i1 false, i32 4, i32 20)
135+
// CHECK-NEXT: call <80 x i32> @llvm.matrix.column.major.load.v80i32(i32* align 4 [[PTR]], i64 [[STRIDE_EXT]], i1 false, i32 4, i32 20)
132136

133137
ix4x20_t m_c = __builtin_matrix_column_major_load(Ptr, 4, 20, S + 32);
134138
}
@@ -140,15 +144,15 @@ void column_major_load_with_stride_math_s_int(int *Ptr, short S) {
140144
// CHECK-NEXT: [[STRIDE:%.*]] = add nsw i32 [[S_EXT]], 32
141145
// CHECK-NEXT: [[STRIDE_EXT:%.*]] = sext i32 [[STRIDE]] to i64
142146
// CHECK-NEXT: [[PTR:%.*]] = load i32*, i32** %Ptr.addr, align 8
143-
// CHECK-NEXT: %matrix = call <80 x i32> @llvm.matrix.column.major.load.v80i32.p0i32(i32* align 4 [[PTR]], i64 [[STRIDE_EXT]], i1 false, i32 4, i32 20)
147+
// CHECK-NEXT: %matrix = call <80 x i32> @llvm.matrix.column.major.load.v80i32(i32* align 4 [[PTR]], i64 [[STRIDE_EXT]], i1 false, i32 4, i32 20)
144148

145149
ix4x20_t m_c = __builtin_matrix_column_major_load(Ptr, 4, 20, S + 32);
146150
}
147151

148152
void column_major_load_array1(double Ptr[25]) {
149153
// CHECK-LABEL: define void @column_major_load_array1(double* %Ptr)
150154
// CHECK: [[ADDR:%.*]] = load double*, double** %Ptr.addr, align 8
151-
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64.p0f64(double* align 8 [[ADDR]], i64 5, i1 false, i32 5, i32 5)
155+
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64(double* align 8 [[ADDR]], i64 5, i1 false, i32 5, i32 5)
152156

153157
dx5x5_t m = __builtin_matrix_column_major_load(Ptr, 5, 5, 5);
154158
}
@@ -158,7 +162,7 @@ void column_major_load_array2() {
158162
// CHECK-NEXT: entry:
159163
// CHECK-NEXT: [[PTR:%.*]] = alloca [25 x double], align 16
160164
// CHECK: [[ARRAY_DEC:%.*]] = getelementptr inbounds [25 x double], [25 x double]* [[PTR]], i64 0, i64 0
161-
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64.p0f64(double* align 16 [[ARRAY_DEC]], i64 5, i1 false, i32 5, i32 5)
165+
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64(double* align 16 [[ARRAY_DEC]], i64 5, i1 false, i32 5, i32 5)
162166

163167
double Ptr[25];
164168
dx5x5_t m = __builtin_matrix_column_major_load(Ptr, 5, 5, 5);
@@ -167,15 +171,15 @@ void column_major_load_array2() {
167171
void column_major_load_const(const double *Ptr) {
168172
// CHECK-LABEL: define void @column_major_load_const(double* %Ptr)
169173
// CHECK: [[PTR:%.*]] = load double*, double** %Ptr.addr, align 8
170-
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64.p0f64(double* align 8 [[PTR]], i64 5, i1 false, i32 5, i32 5)
174+
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64(double* align 8 [[PTR]], i64 5, i1 false, i32 5, i32 5)
171175

172176
dx5x5_t m_a1 = __builtin_matrix_column_major_load(Ptr, 5, 5, 5);
173177
}
174178

175179
void column_major_load_volatile(volatile double *Ptr) {
176180
// CHECK-LABEL: define void @column_major_load_volatile(double* %Ptr)
177181
// CHECK: [[PTR:%.*]] = load double*, double** %Ptr.addr, align 8
178-
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64.p0f64(double* align 8 [[PTR]], i64 5, i1 true, i32 5, i32 5)
182+
// CHECK-NEXT: call <25 x double> @llvm.matrix.column.major.load.v25f64(double* align 8 [[PTR]], i64 5, i1 true, i32 5, i32 5)
179183

180184
dx5x5_t m_a1 = __builtin_matrix_column_major_load(Ptr, 5, 5, 5);
181185
}
@@ -184,7 +188,7 @@ void column_major_store_with_const_stride_double(double *Ptr) {
184188
// CHECK-LABEL: define void @column_major_store_with_const_stride_double(double* %Ptr)
185189
// CHECK: [[M:%.*]] = load <25 x double>, <25 x double>* {{.*}}, align 8
186190
// CHECK-NEXT: [[PTR:%.*]] = load double*, double** %Ptr.addr, align 8
187-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v25f64.p0f64(<25 x double> [[M]], double* align 8 [[PTR]], i64 5, i1 false, i32 5, i32 5)
191+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v25f64(<25 x double> [[M]], double* align 8 [[PTR]], i64 5, i1 false, i32 5, i32 5)
188192

189193
dx5x5_t m;
190194
__builtin_matrix_column_major_store(m, Ptr, 5);
@@ -194,7 +198,7 @@ void column_major_store_with_const_stride2_double(double *Ptr) {
194198
// CHECK-LABEL: define void @column_major_store_with_const_stride2_double(double* %Ptr)
195199
// CHECK: [[M:%.*]] = load <25 x double>, <25 x double>* {{.*}}, align 8
196200
// CHECK-NEXT: [[PTR:%.*]] = load double*, double** %Ptr.addr, align 8
197-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v25f64.p0f64(<25 x double> [[M]], double* align 8 [[PTR]], i64 15, i1 false, i32 5, i32 5)
201+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v25f64(<25 x double> [[M]], double* align 8 [[PTR]], i64 15, i1 false, i32 5, i32 5)
198202
//
199203
dx5x5_t m;
200204
__builtin_matrix_column_major_store(m, Ptr, 2 * 3 + 9);
@@ -207,7 +211,7 @@ void column_major_store_with_stride_math_int(int *Ptr, int S) {
207211
// CHECK-NEXT: [[S:%.*]] = load i32, i32* %S.addr, align 4
208212
// CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[S]], 32
209213
// CHECK-NEXT: [[IDX:%.*]] = sext i32 [[ADD]] to i64
210-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v80i32.p0i32(<80 x i32> [[M]], i32* align 4 [[PTR]], i64 [[IDX]], i1 false, i32 4, i32 20)
214+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v80i32(<80 x i32> [[M]], i32* align 4 [[PTR]], i64 [[IDX]], i1 false, i32 4, i32 20)
211215

212216
ix4x20_t m;
213217
__builtin_matrix_column_major_store(m, Ptr, S + 32);
@@ -221,7 +225,7 @@ void column_major_store_with_stride_math_s_int(int *Ptr, short S) {
221225
// CHECK-NEXT: [[EXT:%.*]] = sext i16 [[S]] to i32
222226
// CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[EXT]], 2
223227
// CHECK-NEXT: [[IDX:%.*]] = sext i32 [[ADD]] to i64
224-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v80i32.p0i32(<80 x i32> [[M]], i32* align 4 [[PTR]], i64 [[IDX]], i1 false, i32 4, i32 20)
228+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v80i32(<80 x i32> [[M]], i32* align 4 [[PTR]], i64 [[IDX]], i1 false, i32 4, i32 20)
225229

226230
ix4x20_t m;
227231
__builtin_matrix_column_major_store(m, Ptr, S + 2);
@@ -231,7 +235,7 @@ void column_major_store_array1(double Ptr[25]) {
231235
// CHECK-LABEL: define void @column_major_store_array1(double* %Ptr)
232236
// CHECK: [[M:%.*]] = load <25 x double>, <25 x double>* {{.*}}, align 8
233237
// CHECK-NEXT: [[PTR:%.*]] = load double*, double** %Ptr.addr, align 8
234-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v25f64.p0f64(<25 x double> [[M]], double* align 8 [[PTR]], i64 5, i1 false, i32 5, i32 5)
238+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v25f64(<25 x double> [[M]], double* align 8 [[PTR]], i64 5, i1 false, i32 5, i32 5)
235239

236240
dx5x5_t m;
237241
__builtin_matrix_column_major_store(m, Ptr, 5);
@@ -241,7 +245,7 @@ void column_major_store_array2() {
241245
// CHECK-LABEL: define void @column_major_store_array2()
242246
// CHECK: [[M:%.*]] = load <25 x double>, <25 x double>* {{.*}}, align 8
243247
// CHECK-NEXT: [[PTR:%.*]] = getelementptr inbounds [25 x double], [25 x double]* %Ptr, i64 0, i64 0
244-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v25f64.p0f64(<25 x double> [[M]], double* align 16 [[PTR]], i64 5, i1 false, i32 5, i32 5)
248+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v25f64(<25 x double> [[M]], double* align 16 [[PTR]], i64 5, i1 false, i32 5, i32 5)
245249

246250
double Ptr[25];
247251
dx5x5_t m;
@@ -252,7 +256,7 @@ void column_major_store_volatile(volatile double *Ptr) {
252256
// CHECK-LABEL: define void @column_major_store_volatile(double* %Ptr) #0 {
253257
// CHECK: [[M:%.*]] = load <25 x double>, <25 x double>* {{.*}}, align 8
254258
// CHECK-NEXT: [[PTR:%.*]] = load double*, double** %Ptr.addr, align 8
255-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v25f64.p0f64(<25 x double> [[M]], double* align 8 [[PTR]], i64 5, i1 true, i32 5, i32 5)
259+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v25f64(<25 x double> [[M]], double* align 8 [[PTR]], i64 5, i1 true, i32 5, i32 5)
256260

257261
dx5x5_t m;
258262
__builtin_matrix_column_major_store(m, Ptr, 5);

clang/test/CodeGenCXX/matrix-type-builtins.cpp

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ void test_column_major_load_with_stride_template_double(double *Ptr) {
9494

9595
// CHECK-LABEL: define linkonce_odr <40 x double> @_Z29column_major_load_with_strideIdLj10ELj4ELj15EEU11matrix_typeXT0_EXT1_ET_PS0_(double* %Ptr)
9696
// CHECK: [[PTR:%.*]] = load double*, double** %Ptr.addr, align 8
97-
// CHECK-NEXT: call <40 x double> @llvm.matrix.column.major.load.v40f64.p0f64(double* align 8 [[PTR]], i64 15, i1 false, i32 10, i32 4)
97+
// CHECK-NEXT: call <40 x double> @llvm.matrix.column.major.load.v40f64(double* align 8 [[PTR]], i64 15, i1 false, i32 10, i32 4)
9898

9999
matrix_t<double, 10, 4> M1 = column_major_load_with_stride<double, 10, 4, 15>(Ptr);
100100
}
@@ -106,7 +106,7 @@ void test_column_major_load_with_stride_template_int(int *Ptr) {
106106

107107
// CHECK-LABEL: define linkonce_odr <6 x i32> @_Z29column_major_load_with_strideIiLj3ELj2ELj12EEU11matrix_typeXT0_EXT1_ET_PS0_(i32* %Ptr)
108108
// CHECK: [[PTR:%.*]] = load i32*, i32** %Ptr.addr, align 8
109-
// CHECK-NEXT: call <6 x i32> @llvm.matrix.column.major.load.v6i32.p0i32(i32* align 4 [[PTR]], i64 12, i1 false, i32 3, i32 2)
109+
// CHECK-NEXT: call <6 x i32> @llvm.matrix.column.major.load.v6i32(i32* align 4 [[PTR]], i64 12, i1 false, i32 3, i32 2)
110110

111111
matrix_t<int, 3, 2> M1 = column_major_load_with_stride<int, 3, 2, 12>(Ptr);
112112
}
@@ -124,7 +124,7 @@ void test_column_major_load_stride_wrapper(int *Ptr, UnsignedWrapper &W) {
124124
// CHECK-NEXT: [[STRIDE:%.*]] = call i32 @_ZN15UnsignedWrappercvjEv(%struct.UnsignedWrapper* [[W]])
125125
// CHECK-NEXT: [[STRIDE_EXT:%.*]] = zext i32 [[STRIDE]] to i64
126126
// CHECK-NEXT: [[PTR:%.*]] = load i32*, i32** %Ptr.addr, align 8
127-
// CHECK-NEXT: call <4 x i32> @llvm.matrix.column.major.load.v4i32.p0i32(i32* align 4 [[PTR]], i64 [[STRIDE_EXT]], i1 false, i32 2, i32 2)
127+
// CHECK-NEXT: call <4 x i32> @llvm.matrix.column.major.load.v4i32(i32* align 4 [[PTR]], i64 [[STRIDE_EXT]], i1 false, i32 2, i32 2)
128128
matrix_t<int, 2, 2> M1 = __builtin_matrix_column_major_load(Ptr, 2, 2, W);
129129
}
130130

@@ -133,7 +133,7 @@ constexpr int constexpr3() { return 3; }
133133
void test_column_major_load_constexpr_num_rows(int *Ptr) {
134134
// CHECK-LABEL: define void @_Z41test_column_major_load_constexpr_num_rowsPi(i32* %Ptr)
135135
// CHECK: [[PTR:%.*]] = load i32*, i32** %Ptr.addr, align 8
136-
// CHECK-NEXT: call <6 x i32> @llvm.matrix.column.major.load.v6i32.p0i32(i32* align 4 [[PTR]], i64 3, i1 false, i32 3, i32 2)
136+
// CHECK-NEXT: call <6 x i32> @llvm.matrix.column.major.load.v6i32(i32* align 4 [[PTR]], i64 3, i1 false, i32 3, i32 2)
137137

138138
matrix_t<int, 3, 2> M1 = __builtin_matrix_column_major_load(Ptr, constexpr3(), 2, 3);
139139
}
@@ -143,7 +143,7 @@ constexpr int constexpr1() { return 1; }
143143
void test_column_major_load_constexpr_num_columns(int *Ptr) {
144144
// CHECK-LABEL: define void @_Z44test_column_major_load_constexpr_num_columnsPi(i32* %Ptr)
145145
// CHECK: [[PTR:%.*]] = load i32*, i32** %Ptr.addr, align 8
146-
// CHECK-NEXT: call <2 x i32> @llvm.matrix.column.major.load.v2i32.p0i32(i32* align 4 [[PTR]], i64 3, i1 false, i32 2, i32 1)
146+
// CHECK-NEXT: call <2 x i32> @llvm.matrix.column.major.load.v2i32(i32* align 4 [[PTR]], i64 3, i1 false, i32 2, i32 1)
147147
matrix_t<int, 2, 1> M1 = __builtin_matrix_column_major_load(Ptr, 2, constexpr1(), 3);
148148
}
149149

@@ -153,7 +153,7 @@ constexpr int constexpr_plus1() { return N + 1; }
153153
void test_column_major_load_constexpr_num_columns_temp(int *Ptr) {
154154
// CHECK-LABEL: define void @_Z49test_column_major_load_constexpr_num_columns_tempPi(i32* %Ptr)
155155
// CHECK: [[PTR:%.*]] = load i32*, i32** %Ptr.addr, align 8
156-
// CHECK-NEXT: call <10 x i32> @llvm.matrix.column.major.load.v10i32.p0i32(i32* align 4 [[PTR]], i64 3, i1 false, i32 2, i32 5)
156+
// CHECK-NEXT: call <10 x i32> @llvm.matrix.column.major.load.v10i32(i32* align 4 [[PTR]], i64 3, i1 false, i32 2, i32 5)
157157
matrix_t<int, 2, 5> M1 = __builtin_matrix_column_major_load(Ptr, 2, constexpr_plus1<4>(), 3);
158158
}
159159

@@ -162,7 +162,7 @@ void test_column_major_load_constexpr_stride_constexpr(int *Ptr) {
162162
// CHECK: [[STRIDE:%.*]] = call i32 @_Z10constexpr3v()
163163
// CHECK-NEXT: [[STRIDE_EXT:%.*]] = sext i32 [[STRIDE]] to i64
164164
// CHECK-NEXT: [[PTR:%.*]] = load i32*, i32** %Ptr.addr, align 8
165-
// CHECK-NEXT: call <4 x i32> @llvm.matrix.column.major.load.v4i32.p0i32(i32* align 4 [[PTR]], i64 [[STRIDE_EXT]], i1 false, i32 2, i32 2)
165+
// CHECK-NEXT: call <4 x i32> @llvm.matrix.column.major.load.v4i32(i32* align 4 [[PTR]], i64 [[STRIDE_EXT]], i1 false, i32 2, i32 2)
166166

167167
matrix_t<int, 2, 2> M1 = __builtin_matrix_column_major_load(Ptr, 2, 2, constexpr3());
168168
}
@@ -200,7 +200,7 @@ void test_column_major_store_with_stride_template_double(double *Ptr) {
200200
// CHECK-LABEL: define linkonce_odr void @_Z30column_major_store_with_strideIdLj10ELj4ELj15EEvRU11matrix_typeXT0_EXT1_ET_PS0_([40 x double]* nonnull align 8 dereferenceable(320) %m, double* %Ptr)
201201
// CHECK: [[M:%.*]] = load <40 x double>, <40 x double>* {{.*}}, align 8
202202
// CHECK-NEXT: [[PTR:%.*]] = load double*, double** %Ptr.addr, align 8
203-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v40f64.p0f64(<40 x double> [[M]], double* align 8 [[PTR]], i64 15, i1 false, i32 10, i32 4)
203+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v40f64(<40 x double> [[M]], double* align 8 [[PTR]], i64 15, i1 false, i32 10, i32 4)
204204

205205
matrix_t<double, 10, 4> M1;
206206
column_major_store_with_stride<double, 10, 4, 15>(M1, Ptr);
@@ -214,7 +214,7 @@ void test_column_major_store_with_stride_template_int(int *Ptr) {
214214
// CHECK-LABEL: define linkonce_odr void @_Z30column_major_store_with_strideIiLj3ELj2ELj3EEvRU11matrix_typeXT0_EXT1_ET_PS0_([6 x i32]* nonnull align 4 dereferenceable(24) %m, i32* %Ptr)
215215
// CHECK: [[M:%.*]] = load <6 x i32>, <6 x i32>* {{.*}}, align 4
216216
// CHECK-NEXT: [[PTR:%.*]] = load i32*, i32** %Ptr.addr, align 8
217-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v6i32.p0i32(<6 x i32> [[M]], i32* align 4 [[PTR]], i64 3, i1 false, i32 3, i32 2)
217+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v6i32(<6 x i32> [[M]], i32* align 4 [[PTR]], i64 3, i1 false, i32 3, i32 2)
218218

219219
matrix_t<int, 3, 2> M1;
220220
column_major_store_with_stride<int, 3, 2, 3>(M1, Ptr);
@@ -227,7 +227,7 @@ void test_column_major_store_stride_wrapper(int *Ptr, UnsignedWrapper &W) {
227227
// CHECK-NEXT: [[W:%.*]] = load %struct.UnsignedWrapper*, %struct.UnsignedWrapper** %W.addr, align 8
228228
// CHECK-NEXT: [[IDX:%.*]] = call i32 @_ZN15UnsignedWrappercvjEv(%struct.UnsignedWrapper* [[W]])
229229
// CHECK-NEXT: [[IDX_EXT:%.*]] = zext i32 [[IDX]] to i64
230-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v4i32.p0i32(<4 x i32> [[M]], i32* align 4 [[PTR]], i64 [[IDX_EXT]], i1 false, i32 2, i32 2)
230+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v4i32(<4 x i32> [[M]], i32* align 4 [[PTR]], i64 [[IDX_EXT]], i1 false, i32 2, i32 2)
231231

232232
matrix_t<int, 2, 2> M1;
233233
__builtin_matrix_column_major_store(M1, Ptr, W);
@@ -239,7 +239,7 @@ void test_column_major_store_constexpr_stride_constexpr(int *Ptr) {
239239
// CHECK-NEXT: [[PTR:%.*]] = load i32*, i32** %Ptr.addr, align 8
240240
// CHECK-NEXT: [[IDX:%.*]] = call i32 @_Z10constexpr3v()
241241
// CHECK-NEXT: [[IDX_EXT:%.*]] = sext i32 [[IDX]] to i64
242-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v4i32.p0i32(<4 x i32> [[M]], i32* align 4 [[PTR]], i64 [[IDX_EXT]], i1 false, i32 2, i32 2)
242+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v4i32(<4 x i32> [[M]], i32* align 4 [[PTR]], i64 [[IDX_EXT]], i1 false, i32 2, i32 2)
243243

244244
matrix_t<int, 2, 2> M;
245245
__builtin_matrix_column_major_store(M, Ptr, constexpr3());

clang/test/CodeGenObjC/matrix-type-builtins.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ void test_column_major_load(PtrValue *Ptr, IntValue *Stride) {
5656
// CHECK: [[STRIDE:%.*]] = call i32 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i32 (i8*, i8*)*)
5757
// CHECK-NEXT: [[STRIDE_EXT:%.*]] = sext i32 [[STRIDE]] to i64
5858
// CHECK: [[PTR:%.*]] = call i32* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i32* (i8*, i8*)*)
59-
// CHECK-NEXT: call <12 x i32> @llvm.matrix.column.major.load.v12i32.p0i32(i32* align 4 [[PTR]], i64 [[STRIDE_EXT]], i1 false, i32 3, i32 4)
59+
// CHECK-NEXT: call <12 x i32> @llvm.matrix.column.major.load.v12i32(i32* align 4 [[PTR]], i64 [[STRIDE_EXT]], i1 false, i32 3, i32 4)
6060

6161
u3x4 m = __builtin_matrix_column_major_load(Ptr.value, 3, 4, Stride.value);
6262
}
@@ -67,7 +67,7 @@ void test_column_major_store(UnsignedMatrixValue *M, PtrValue *Ptr, IntValue *St
6767
// CHECK: [[PTR:%.*]] = call i32* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i32* (i8*, i8*)*)
6868
// CHECK: [[IDX:%.*]] = call i32 bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i32 (i8*, i8*)*)
6969
// CHECK-NEXT: [[IDX_EXT:%.*]] = sext i32 [[IDX]] to i64
70-
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v12i32.p0i32(<12 x i32> [[M]], i32* align 4 [[PTR]], i64 [[IDX_EXT]], i1 false, i32 3, i32 4)
70+
// CHECK-NEXT: call void @llvm.matrix.column.major.store.v12i32(<12 x i32> [[M]], i32* align 4 [[PTR]], i64 [[IDX_EXT]], i1 false, i32 3, i32 4)
7171

7272
__builtin_matrix_column_major_store(M.value, Ptr.value, Stride.value);
7373
}

0 commit comments

Comments
 (0)