Skip to content

Commit b5aec6f

Browse files
committed
[Offload] [clang] Allow passing memory scope to Xteam Reduction APIs.
Clang will pass the system memory scope if -fopenmp-target-multi-device is used for compilation, otherwise device scope will be used.
1 parent b9d0411 commit b5aec6f

File tree

10 files changed

+2377
-279
lines changed

10 files changed

+2377
-279
lines changed

clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2743,9 +2743,19 @@ llvm::Value *CGOpenMPRuntimeGPU::getXteamRedSum(
27432743
? llvm::ConstantInt::get(Int32Ty, 0)
27442744
: llvm::ConstantInt::get(Int64Ty, 0);
27452745

2746-
llvm::Value *Args[] = {Val, SumPtr, DTeamVals,
2747-
DTeamsDonePtr, RfunPair.first, RfunPair.second,
2748-
ZeroVal, ThreadStartIndex, NumTeams};
2746+
llvm::Value *Args[] = {
2747+
Val,
2748+
SumPtr,
2749+
DTeamVals,
2750+
DTeamsDonePtr,
2751+
RfunPair.first,
2752+
RfunPair.second,
2753+
ZeroVal,
2754+
ThreadStartIndex,
2755+
NumTeams,
2756+
CGF.CGM.getLangOpts().OpenMPTargetMultiDevice
2757+
? llvm::ConstantInt::get(Int32Ty, 0) /* __MEMORY_SCOPE_SYSTEM */
2758+
: llvm::ConstantInt::get(Int32Ty, 1) /* __MEMORY_SCOPE_DEVICE */};
27492759

27502760
unsigned WarpSize = CGF.getTarget().getGridValue().GV_Warp_Size;
27512761
assert(WarpSize == 32 || WarpSize == 64);

clang/test/OpenMP/fast_red_codegen.cpp

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

clang/test/OpenMP/multi_device_codegen.cpp

Lines changed: 1974 additions & 0 deletions
Large diffs are not rendered by default.

clang/test/OpenMP/xteam_red_callee.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -896,12 +896,12 @@ int main()
896896
// CHECK-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
897897
// CHECK-NEXT: [[TMP26:%.*]] = add i32 [[TMP24]], [[TMP25]]
898898
// CHECK-NEXT: store i32 [[TMP26]], ptr [[DOTOMP_IV_ASCAST]], align 4
899-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP15:![0-9]+]]
899+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP10:![0-9]+]]
900900
// CHECK: for.end:
901901
// CHECK-NEXT: [[TMP27:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
902902
// CHECK-NEXT: [[TMP28:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
903903
// CHECK-NEXT: [[TMP29:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
904-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP29]], ptr [[TMP2]], ptr [[TMP27]], ptr [[TMP28]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
904+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP29]], ptr [[TMP2]], ptr [[TMP27]], ptr [[TMP28]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
905905
// CHECK-NEXT: ret void
906906
//
907907
//
@@ -2486,11 +2486,11 @@ int main()
24862486
// CHECK-NEXT: [[TMP25:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
24872487
// CHECK-NEXT: [[TMP26:%.*]] = add i32 [[TMP24]], [[TMP25]]
24882488
// CHECK-NEXT: store i32 [[TMP26]], ptr [[DOTOMP_IV_ASCAST]], align 4
2489-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP17:![0-9]+]]
2489+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP12:![0-9]+]]
24902490
// CHECK: for.end:
24912491
// CHECK-NEXT: [[TMP27:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
24922492
// CHECK-NEXT: [[TMP28:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
24932493
// CHECK-NEXT: [[TMP29:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
2494-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP29]], ptr [[TMP2]], ptr [[TMP27]], ptr [[TMP28]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
2494+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP29]], ptr [[TMP2]], ptr [[TMP27]], ptr [[TMP28]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
24952495
// CHECK-NEXT: ret void
24962496
//

clang/test/OpenMP/xteam_red_codegen.cpp

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

clang/test/OpenMP/xteam_red_small_precision.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,12 @@ int main()
128128
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
129129
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
130130
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
131-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP11:![0-9]+]]
131+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP8:![0-9]+]]
132132
// CHECK: for.end:
133133
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
134134
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
135135
// CHECK-NEXT: [[TMP31:%.*]] = load half, ptr addrspace(5) [[TMP5]], align 2
136-
// CHECK-NEXT: call void @__kmpc_xteamr_h_16x64(half [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_h, ptr @__kmpc_rfun_sum_lds_h, half 0xH0000, i64 [[TMP17]], i32 [[TMP16]])
136+
// CHECK-NEXT: call void @__kmpc_xteamr_h_16x64(half [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_h, ptr @__kmpc_rfun_sum_lds_h, half 0xH0000, i64 [[TMP17]], i32 [[TMP16]], i32 1)
137137
// CHECK-NEXT: ret void
138138
//
139139
//
@@ -231,12 +231,12 @@ int main()
231231
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
232232
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
233233
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
234-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP13:![0-9]+]]
234+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP10:![0-9]+]]
235235
// CHECK: for.end:
236236
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
237237
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
238238
// CHECK-NEXT: [[TMP31:%.*]] = load bfloat, ptr addrspace(5) [[TMP5]], align 2
239-
// CHECK-NEXT: call void @__kmpc_xteamr_bf_16x64(bfloat [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_bf, ptr @__kmpc_rfun_sum_lds_bf, bfloat 0xR0000, i64 [[TMP17]], i32 [[TMP16]])
239+
// CHECK-NEXT: call void @__kmpc_xteamr_bf_16x64(bfloat [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_bf, ptr @__kmpc_rfun_sum_lds_bf, bfloat 0xR0000, i64 [[TMP17]], i32 [[TMP16]], i32 1)
240240
// CHECK-NEXT: ret void
241241
//
242242
//
@@ -334,11 +334,11 @@ int main()
334334
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
335335
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
336336
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
337-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP14:![0-9]+]]
337+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP11:![0-9]+]]
338338
// CHECK: for.end:
339339
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
340340
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
341341
// CHECK-NEXT: [[TMP31:%.*]] = load i16, ptr addrspace(5) [[TMP5]], align 2
342-
// CHECK-NEXT: call void @__kmpc_xteamr_s_16x64(i16 [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_s, ptr @__kmpc_rfun_sum_lds_s, i16 0, i64 [[TMP17]], i32 [[TMP16]])
342+
// CHECK-NEXT: call void @__kmpc_xteamr_s_16x64(i16 [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_s, ptr @__kmpc_rfun_sum_lds_s, i16 0, i64 [[TMP17]], i32 [[TMP16]], i32 1)
343343
// CHECK-NEXT: ret void
344344
//

clang/test/OpenMP/xteam_red_split_codegen.cpp

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -193,12 +193,12 @@ int main()
193193
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
194194
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
195195
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
196-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP29:![0-9]+]]
196+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP17:![0-9]+]]
197197
// CHECK: for.end:
198198
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
199199
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
200200
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
201-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
201+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
202202
// CHECK-NEXT: ret void
203203
//
204204
//
@@ -295,12 +295,12 @@ int main()
295295
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
296296
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
297297
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
298-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP31:![0-9]+]]
298+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP19:![0-9]+]]
299299
// CHECK: for.end:
300300
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
301301
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
302302
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
303-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
303+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
304304
// CHECK-NEXT: ret void
305305
//
306306
//
@@ -397,12 +397,12 @@ int main()
397397
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
398398
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
399399
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
400-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP32:![0-9]+]]
400+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP20:![0-9]+]]
401401
// CHECK: for.end:
402402
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
403403
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
404404
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
405-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
405+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
406406
// CHECK-NEXT: ret void
407407
//
408408
//
@@ -499,12 +499,12 @@ int main()
499499
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
500500
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
501501
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
502-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP33:![0-9]+]]
502+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP21:![0-9]+]]
503503
// CHECK: for.end:
504504
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
505505
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
506506
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
507-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
507+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
508508
// CHECK-NEXT: ret void
509509
//
510510
//
@@ -601,12 +601,12 @@ int main()
601601
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
602602
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
603603
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
604-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP34:![0-9]+]]
604+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP22:![0-9]+]]
605605
// CHECK: for.end:
606606
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
607607
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
608608
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
609-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
609+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
610610
// CHECK-NEXT: ret void
611611
//
612612
//
@@ -703,12 +703,12 @@ int main()
703703
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
704704
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
705705
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
706-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP35:![0-9]+]]
706+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP23:![0-9]+]]
707707
// CHECK: for.end:
708708
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
709709
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
710710
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
711-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
711+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
712712
// CHECK-NEXT: ret void
713713
//
714714
//
@@ -805,12 +805,12 @@ int main()
805805
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
806806
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
807807
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
808-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP36:![0-9]+]]
808+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP24:![0-9]+]]
809809
// CHECK: for.end:
810810
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
811811
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
812812
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
813-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
813+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
814814
// CHECK-NEXT: ret void
815815
//
816816
//
@@ -907,12 +907,12 @@ int main()
907907
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
908908
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
909909
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
910-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP37:![0-9]+]]
910+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP25:![0-9]+]]
911911
// CHECK: for.end:
912912
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
913913
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
914914
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
915-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
915+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
916916
// CHECK-NEXT: ret void
917917
//
918918
//
@@ -1009,12 +1009,12 @@ int main()
10091009
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
10101010
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
10111011
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
1012-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP38:![0-9]+]]
1012+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP26:![0-9]+]]
10131013
// CHECK: for.end:
10141014
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
10151015
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
10161016
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
1017-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
1017+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
10181018
// CHECK-NEXT: ret void
10191019
//
10201020
//
@@ -1111,12 +1111,12 @@ int main()
11111111
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
11121112
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
11131113
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
1114-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP39:![0-9]+]]
1114+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP27:![0-9]+]]
11151115
// CHECK: for.end:
11161116
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
11171117
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
11181118
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
1119-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
1119+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
11201120
// CHECK-NEXT: ret void
11211121
//
11221122
//
@@ -1214,12 +1214,12 @@ int main()
12141214
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
12151215
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
12161216
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
1217-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP40:![0-9]+]]
1217+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP28:![0-9]+]]
12181218
// CHECK: for.end:
12191219
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
12201220
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
12211221
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
1222-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
1222+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
12231223
// CHECK-NEXT: ret void
12241224
//
12251225
//
@@ -1317,11 +1317,11 @@ int main()
13171317
// CHECK-NEXT: [[TMP27:%.*]] = load i32, ptr [[DOTOMP_IV_ASCAST]], align 4
13181318
// CHECK-NEXT: [[TMP28:%.*]] = add i32 [[TMP26]], [[TMP27]]
13191319
// CHECK-NEXT: store i32 [[TMP28]], ptr [[DOTOMP_IV_ASCAST]], align 4
1320-
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP41:![0-9]+]]
1320+
// CHECK-NEXT: br label [[FOR_COND]], !llvm.loop [[LOOP29:![0-9]+]]
13211321
// CHECK: for.end:
13221322
// CHECK-NEXT: [[TMP29:%.*]] = load ptr, ptr [[DOTADDR_ASCAST]], align 8
13231323
// CHECK-NEXT: [[TMP30:%.*]] = load ptr, ptr [[DOTADDR1_ASCAST]], align 8
13241324
// CHECK-NEXT: [[TMP31:%.*]] = load double, ptr addrspace(5) [[TMP5]], align 8
1325-
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]])
1325+
// CHECK-NEXT: call void @__kmpc_xteamr_d_16x64(double [[TMP31]], ptr [[TMP2]], ptr [[TMP29]], ptr [[TMP30]], ptr @__kmpc_rfun_sum_d, ptr @__kmpc_rfun_sum_lds_d, double 0.000000e+00, i64 [[TMP17]], i32 [[TMP16]], i32 1)
13261326
// CHECK-NEXT: ret void
13271327
//

0 commit comments

Comments
 (0)