Skip to content

Commit 0e919ee

Browse files
committed
[AIEX] store promotion - Intrinsics always return
1 parent 8379dda commit 0e919ee

File tree

9 files changed

+556
-559
lines changed

9 files changed

+556
-559
lines changed

clang/test/CodeGen/aie/aie-intrinsics.cpp

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ extern void foo(v8acc48);
279279
// CHECK-LABEL: @_Z12call_v8acc48v(
280280
// CHECK-NEXT: entry:
281281
// CHECK-NEXT: [[TMP0:%.*]] = tail call noundef <8 x i48> @llvm.aie.v8i48undef()
282-
// CHECK-NEXT: tail call void @_Z3fooDv8_u7__acc48(<8 x i48> noundef [[TMP0]])
282+
// CHECK-NEXT: tail call void @_Z3fooDv8_u7__acc48(<8 x i48> noundef [[TMP0]]) #[[ATTR10:[0-9]+]]
283283
// CHECK-NEXT: ret void
284284
//
285285
void call_v8acc48()
@@ -291,7 +291,7 @@ extern void bar(v8acc80);
291291
// CHECK-LABEL: @_Z12call_v8acc80v(
292292
// CHECK-NEXT: entry:
293293
// CHECK-NEXT: [[TMP0:%.*]] = tail call noundef <16 x i48> @llvm.aie.v16i48undef()
294-
// CHECK-NEXT: tail call void @_Z3barDv16_u7__acc48(<16 x i48> noundef [[TMP0]])
294+
// CHECK-NEXT: tail call void @_Z3barDv16_u7__acc48(<16 x i48> noundef [[TMP0]]) #[[ATTR10]]
295295
// CHECK-NEXT: ret void
296296
//
297297
void call_v8acc80()
@@ -303,7 +303,7 @@ extern void foo_v4acc80(v4acc80);
303303
// CHECK-LABEL: @_Z12call_v4acc80v(
304304
// CHECK-NEXT: entry:
305305
// CHECK-NEXT: [[TMP0:%.*]] = tail call noundef <8 x i48> @llvm.aie.v8i48undef()
306-
// CHECK-NEXT: tail call void @_Z11foo_v4acc80Dv8_u7__acc48(<8 x i48> noundef [[TMP0]])
306+
// CHECK-NEXT: tail call void @_Z11foo_v4acc80Dv8_u7__acc48(<8 x i48> noundef [[TMP0]]) #[[ATTR10]]
307307
// CHECK-NEXT: ret void
308308
//
309309
void call_v4acc80()
@@ -315,7 +315,7 @@ extern void foo_v16acc48(v16acc48);
315315
// CHECK-LABEL: @_Z13call_v16acc48v(
316316
// CHECK-NEXT: entry:
317317
// CHECK-NEXT: [[TMP0:%.*]] = tail call noundef <16 x i48> @llvm.aie.v16i48undef()
318-
// CHECK-NEXT: tail call void @_Z12foo_v16acc48Dv16_u7__acc48(<16 x i48> noundef [[TMP0]])
318+
// CHECK-NEXT: tail call void @_Z12foo_v16acc48Dv16_u7__acc48(<16 x i48> noundef [[TMP0]]) #[[ATTR10]]
319319
// CHECK-NEXT: ret void
320320
//
321321
void call_v16acc48()
@@ -361,9 +361,8 @@ void bsrs_st_test()
361361
}
362362
// CHECK-LABEL: @_Z9mac16_symDv16_u7__acc48Dv64_sDv8_i(
363363
// CHECK-NEXT: entry:
364-
// CHECK-NEXT: [[TMP0:%.*]] = tail call noundef <2 x i32> @llvm.aie.v2i32undef()
365-
// CHECK-NEXT: [[TMP1:%.*]] = tail call noundef <16 x i48> @llvm.aie.mac16.v64int16(<64 x i16> [[LBUFF:%.*]], <8 x i32> [[RBUFF:%.*]], <16 x i48> [[ACC:%.*]], i32 2, i32 2, i32 12, <2 x i32> <i32 50462976, i32 8464>, <2 x i32> <i32 117835012, i32 4609>, <2 x i32> <i32 32768, i32 0>)
366-
// CHECK-NEXT: ret <16 x i48> [[TMP1]]
364+
// CHECK-NEXT: [[TMP0:%.*]] = tail call noundef <16 x i48> @llvm.aie.mac16.v64int16(<64 x i16> [[LBUFF:%.*]], <8 x i32> [[RBUFF:%.*]], <16 x i48> [[ACC:%.*]], i32 2, i32 2, i32 12, <2 x i32> <i32 50462976, i32 8464>, <2 x i32> <i32 117835012, i32 4609>, <2 x i32> <i32 32768, i32 0>)
365+
// CHECK-NEXT: ret <16 x i48> [[TMP0]]
367366
//
368367
v16acc48 mac16_sym(v16acc48 acc, v64int16 lbuff, v8int32 rbuff) {
369368
return mac16_sym(acc, lbuff, 2, 0x03020100, 0x2110, 2, rbuff, 12, 0x07060504, 0x1201);
@@ -381,9 +380,8 @@ v16acc48 msc16(v16acc48 acc, v128int8 xbuff, v32int8 zbuff) {
381380
}
382381
// CHECK-LABEL: @_Z13mul16_antisymDv32_iDv16_s(
383382
// CHECK-NEXT: entry:
384-
// CHECK-NEXT: [[TMP0:%.*]] = tail call noundef <2 x i32> @llvm.aie.v2i32undef()
385-
// CHECK-NEXT: [[TMP1:%.*]] = tail call noundef <16 x i48> @llvm.aie.mul16.v32int32(<32 x i32> [[XBUFF:%.*]], <16 x i16> [[ZBUFF:%.*]], i32 0, i32 16, i32 0, <2 x i32> <i32 286265616, i32 12576>, <2 x i32> <i32 -2004353024, i32 12816>, <2 x i32> <i32 98304, i32 0>)
386-
// CHECK-NEXT: ret <16 x i48> [[TMP1]]
383+
// CHECK-NEXT: [[TMP0:%.*]] = tail call noundef <16 x i48> @llvm.aie.mul16.v32int32(<32 x i32> [[XBUFF:%.*]], <16 x i16> [[ZBUFF:%.*]], i32 0, i32 16, i32 0, <2 x i32> <i32 286265616, i32 12576>, <2 x i32> <i32 -2004353024, i32 12816>, <2 x i32> <i32 98304, i32 0>)
384+
// CHECK-NEXT: ret <16 x i48> [[TMP0]]
387385
//
388386
v16acc48 mul16_antisym(v32int32 xbuff, v16int16 zbuff) {
389387
return mul16_antisym(xbuff, 0, 0x11101110, 0x3120, 16, zbuff, 0, 0x88880000, 0x3210);

clang/test/CodeGen/aie/aie-srs-intrinsics.cpp

Lines changed: 48 additions & 49 deletions
Large diffs are not rendered by default.

clang/test/CodeGen/aie/aie2/aie2-upd-ext-intrinsic.cpp

Lines changed: 67 additions & 69 deletions
Large diffs are not rendered by default.

clang/test/CodeGen/aie/aie2/aiev2-srs-intrinsics.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ v16int32 test_srs_to_int32(v16acc64 acc, int shft, int sign) {
2626
// CHECK-NEXT: [[TMP1:%.*]] = tail call noundef i32 @llvm.aie2.get.ctrl.reg(i32 6)
2727
// CHECK-NEXT: tail call void @llvm.aie2.set.ctrl.reg(i32 9, i32 [[SAT:%.*]])
2828
// CHECK-NEXT: tail call void @llvm.aie2.set.ctrl.reg(i32 6, i32 [[RND:%.*]])
29-
// CHECK-NEXT: [[TMP2:%.*]] = tail call <16 x i32> @llvm.aie2.I512.v16.acc64.srs(<16 x i64> [[ACC:%.*]], i32 [[SHFT:%.*]], i32 [[SIGN:%.*]])
29+
// CHECK-NEXT: [[TMP2:%.*]] = tail call noundef <16 x i32> @llvm.aie2.I512.v16.acc64.srs(<16 x i64> [[ACC:%.*]], i32 [[SHFT:%.*]], i32 [[SIGN:%.*]])
3030
// CHECK-NEXT: tail call void @llvm.aie2.set.ctrl.reg(i32 9, i32 [[TMP0]])
3131
// CHECK-NEXT: tail call void @llvm.aie2.set.ctrl.reg(i32 6, i32 [[TMP1]])
3232
// CHECK-NEXT: ret <16 x i32> [[TMP2]]
@@ -50,7 +50,7 @@ v16uint32 test_srs_to_uint32(v16acc64 acc, int shft, int sign) {
5050
// CHECK-NEXT: [[TMP1:%.*]] = tail call noundef i32 @llvm.aie2.get.ctrl.reg(i32 6)
5151
// CHECK-NEXT: tail call void @llvm.aie2.set.ctrl.reg(i32 9, i32 [[SAT:%.*]])
5252
// CHECK-NEXT: tail call void @llvm.aie2.set.ctrl.reg(i32 6, i32 [[RND:%.*]])
53-
// CHECK-NEXT: [[TMP2:%.*]] = tail call <16 x i32> @llvm.aie2.I512.v16.acc64.srs(<16 x i64> [[ACC:%.*]], i32 [[SHFT:%.*]], i32 [[SIGN:%.*]])
53+
// CHECK-NEXT: [[TMP2:%.*]] = tail call noundef <16 x i32> @llvm.aie2.I512.v16.acc64.srs(<16 x i64> [[ACC:%.*]], i32 [[SHFT:%.*]], i32 [[SIGN:%.*]])
5454
// CHECK-NEXT: tail call void @llvm.aie2.set.ctrl.reg(i32 9, i32 [[TMP0]])
5555
// CHECK-NEXT: tail call void @llvm.aie2.set.ctrl.reg(i32 6, i32 [[TMP1]])
5656
// CHECK-NEXT: ret <16 x i32> [[TMP2]]

clang/test/CodeGen/aie/aie2p/aie2p-bank-annotation.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ v128uint4 test_intrinsic_annotated_pointer_reference_fill_pop(v64bfp16ebs8_unali
185185
}
186186

187187
// CHECK-LABEL: define dso_local void @_Z47test_intrinsic_annotated_pointer_reference_loopRPU3AS522v64bfp16ebs8_unaligned12v64bfp16ebs8i(
188-
// CHECK-SAME: ptr nocapture nonnull align 4 dereferenceable(4) [[P:%.*]], [[STRUCT_V64BFP16EBS8:%.*]] [[V_COERCE:%.*]], i32 noundef [[NUM:%.*]]) local_unnamed_addr #[[ATTR2]] {
188+
// CHECK-SAME: ptr nocapture nonnull align 4 dereferenceable(4) [[P:%.*]], [[STRUCT_V64BFP16EBS8:%.*]] [[V_COERCE:%.*]], i32 noundef [[NUM:%.*]]) local_unnamed_addr #[[ATTR4:[0-9]+]] {
189189
// CHECK-NEXT: entry:
190190
// CHECK-NEXT: [[CMP6:%.*]] = icmp sgt i32 [[NUM]], 0
191191
// CHECK-NEXT: br i1 [[CMP6]], label [[FOR_BODY_LR_PH:%.*]], label [[FOR_COND_CLEANUP:%.*]]
@@ -212,7 +212,7 @@ v128uint4 test_intrinsic_annotated_pointer_reference_fill_pop(v64bfp16ebs8_unali
212212
// CHECK-NEXT: store ptr addrspace(5) [[TMP8]], ptr [[P]], align 4
213213
// CHECK-NEXT: [[INC]] = add nuw nsw i32 [[I_09]], 1
214214
// CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i32 [[INC]], [[NUM]]
215-
// CHECK-NEXT: br i1 [[EXITCOND_NOT]], label [[FOR_COND_CLEANUP]], label [[FOR_BODY]], !llvm.loop [[LOOP9:![0-9]+]]
215+
// CHECK-NEXT: br i1 [[EXITCOND_NOT]], label [[FOR_COND_CLEANUP]], label [[FOR_BODY]], !llvm.loop [[LOOP10:![0-9]+]]
216216
//
217217
void test_intrinsic_annotated_pointer_reference_loop(
218218
v64bfp16ebs8_unaligned __aie_dm_resource_a *&p, v64bfp16ebs8 v, int num) {
@@ -225,7 +225,7 @@ void test_intrinsic_annotated_pointer_reference_loop(
225225
}
226226

227227
// CHECK-LABEL: define dso_local void @_Z45test_intrinsic_default_pointer_reference_loopRP22v64bfp16ebs8_unaligned12v64bfp16ebs8i(
228-
// CHECK-SAME: ptr nocapture nonnull align 4 dereferenceable(4) [[P:%.*]], [[STRUCT_V64BFP16EBS8:%.*]] [[V_COERCE:%.*]], i32 noundef [[NUM:%.*]]) local_unnamed_addr #[[ATTR2]] {
228+
// CHECK-SAME: ptr nocapture nonnull align 4 dereferenceable(4) [[P:%.*]], [[STRUCT_V64BFP16EBS8:%.*]] [[V_COERCE:%.*]], i32 noundef [[NUM:%.*]]) local_unnamed_addr #[[ATTR4]] {
229229
// CHECK-NEXT: entry:
230230
// CHECK-NEXT: [[CMP6:%.*]] = icmp sgt i32 [[NUM]], 0
231231
// CHECK-NEXT: br i1 [[CMP6]], label [[FOR_BODY_LR_PH:%.*]], label [[FOR_COND_CLEANUP:%.*]]
@@ -252,7 +252,7 @@ void test_intrinsic_annotated_pointer_reference_loop(
252252
// CHECK-NEXT: store ptr [[TMP8]], ptr [[P]], align 4
253253
// CHECK-NEXT: [[INC]] = add nuw nsw i32 [[I_09]], 1
254254
// CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i32 [[INC]], [[NUM]]
255-
// CHECK-NEXT: br i1 [[EXITCOND_NOT]], label [[FOR_COND_CLEANUP]], label [[FOR_BODY]], !llvm.loop [[LOOP12:![0-9]+]]
255+
// CHECK-NEXT: br i1 [[EXITCOND_NOT]], label [[FOR_COND_CLEANUP]], label [[FOR_BODY]], !llvm.loop [[LOOP13:![0-9]+]]
256256
//
257257
void test_intrinsic_default_pointer_reference_loop(
258258
v64bfp16ebs8_unaligned *&p, v64bfp16ebs8 v, int num) {
@@ -272,8 +272,8 @@ void test_intrinsic_default_pointer_reference_loop(
272272
// CHECK: [[TBAA7]] = !{[[META8:![0-9]+]], [[META8]], i64 0}
273273
// CHECK: [[META8]] = !{!"p1 void", [[META9:![0-9]+]], i64 0}
274274
// CHECK: [[META9]] = !{!"any pointer", [[META3]], i64 0}
275-
// CHECK: [[LOOP9]] = distinct !{[[LOOP9]], [[META10:![0-9]+]], [[META11:![0-9]+]]}
276-
// CHECK: [[META10]] = !{!"llvm.loop.mustprogress"}
277-
// CHECK: [[META11]] = !{!"llvm.loop.unroll.disable"}
278-
// CHECK: [[LOOP12]] = distinct !{[[LOOP12]], [[META10]], [[META11]]}
275+
// CHECK: [[LOOP10]] = distinct !{[[LOOP10]], [[META11:![0-9]+]], [[META12:![0-9]+]]}
276+
// CHECK: [[META11]] = !{!"llvm.loop.mustprogress"}
277+
// CHECK: [[META12]] = !{!"llvm.loop.unroll.disable"}
278+
// CHECK: [[LOOP13]] = distinct !{[[LOOP13]], [[META11]], [[META12]]}
279279
//.

0 commit comments

Comments
 (0)