|
|
|
@ -97,14 +97,14 @@ int bar(int n){
|
|
|
|
|
// CHECK1-NEXT: [[TMP3:%.*]] = load i32, ptr [[TMP2]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i64 0, i64 0
|
|
|
|
|
// CHECK1-NEXT: store ptr [[E1]], ptr [[TMP4]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP5:%.*]] = load ptr, ptr @"_openmp_teams_reductions_buffer_$_$ptr", align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP6:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP3]], ptr [[TMP5]], i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func, ptr @_omp_reduction_inter_warp_copy_func, ptr @_omp_reduction_list_to_global_copy_func, ptr @_omp_reduction_list_to_global_reduce_func, ptr @_omp_reduction_global_to_list_copy_func, ptr @_omp_reduction_global_to_list_reduce_func)
|
|
|
|
|
// CHECK1-NEXT: [[TMP7:%.*]] = icmp eq i32 [[TMP6]], 1
|
|
|
|
|
// CHECK1-NEXT: br i1 [[TMP7]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK1-NEXT: %"_openmp_teams_reductions_buffer_$_$ptr" = call ptr @__kmpc_reduction_get_fixed_buffer()
|
|
|
|
|
// CHECK1-NEXT: [[TMP5:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP3]], ptr %"_openmp_teams_reductions_buffer_$_$ptr", i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func, ptr @_omp_reduction_inter_warp_copy_func, ptr @_omp_reduction_list_to_global_copy_func, ptr @_omp_reduction_list_to_global_reduce_func, ptr @_omp_reduction_global_to_list_copy_func, ptr @_omp_reduction_global_to_list_reduce_func)
|
|
|
|
|
// CHECK1-NEXT: [[TMP6:%.*]] = icmp eq i32 [[TMP5]], 1
|
|
|
|
|
// CHECK1-NEXT: br i1 [[TMP6]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK1: .omp.reduction.then:
|
|
|
|
|
// CHECK1-NEXT: [[TMP8:%.*]] = load double, ptr [[TMP0]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP9:%.*]] = load double, ptr [[E1]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[ADD2:%.*]] = fadd double [[TMP8]], [[TMP9]]
|
|
|
|
|
// CHECK1-NEXT: [[TMP7:%.*]] = load double, ptr [[TMP0]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP8:%.*]] = load double, ptr [[E1]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[ADD2:%.*]] = fadd double [[TMP7]], [[TMP8]]
|
|
|
|
|
// CHECK1-NEXT: store double [[ADD2]], ptr [[TMP0]], align 8
|
|
|
|
|
// CHECK1-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP3]])
|
|
|
|
|
// CHECK1-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
|
|
|
@ -386,21 +386,21 @@ int bar(int n){
|
|
|
|
|
// CHECK1-NEXT: store ptr [[C1]], ptr [[TMP6]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i64 0, i64 1
|
|
|
|
|
// CHECK1-NEXT: store ptr [[D2]], ptr [[TMP7]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP8:%.*]] = load ptr, ptr @"_openmp_teams_reductions_buffer_$_$ptr", align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP9:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr [[TMP8]], i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func1, ptr @_omp_reduction_inter_warp_copy_func2, ptr @_omp_reduction_list_to_global_copy_func3, ptr @_omp_reduction_list_to_global_reduce_func4, ptr @_omp_reduction_global_to_list_copy_func5, ptr @_omp_reduction_global_to_list_reduce_func6)
|
|
|
|
|
// CHECK1-NEXT: [[TMP10:%.*]] = icmp eq i32 [[TMP9]], 1
|
|
|
|
|
// CHECK1-NEXT: br i1 [[TMP10]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK1-NEXT: %"_openmp_teams_reductions_buffer_$_$ptr" = call ptr @__kmpc_reduction_get_fixed_buffer()
|
|
|
|
|
// CHECK1-NEXT: [[TMP8:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr %"_openmp_teams_reductions_buffer_$_$ptr", i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func1, ptr @_omp_reduction_inter_warp_copy_func2, ptr @_omp_reduction_list_to_global_copy_func3, ptr @_omp_reduction_list_to_global_reduce_func4, ptr @_omp_reduction_global_to_list_copy_func5, ptr @_omp_reduction_global_to_list_reduce_func6)
|
|
|
|
|
// CHECK1-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], 1
|
|
|
|
|
// CHECK1-NEXT: br i1 [[TMP9]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK1: .omp.reduction.then:
|
|
|
|
|
// CHECK1-NEXT: [[TMP11:%.*]] = load i8, ptr [[TMP0]], align 1
|
|
|
|
|
// CHECK1-NEXT: [[CONV4:%.*]] = sext i8 [[TMP11]] to i32
|
|
|
|
|
// CHECK1-NEXT: [[TMP12:%.*]] = load i8, ptr [[C1]], align 1
|
|
|
|
|
// CHECK1-NEXT: [[CONV5:%.*]] = sext i8 [[TMP12]] to i32
|
|
|
|
|
// CHECK1-NEXT: [[TMP10:%.*]] = load i8, ptr [[TMP0]], align 1
|
|
|
|
|
// CHECK1-NEXT: [[CONV4:%.*]] = sext i8 [[TMP10]] to i32
|
|
|
|
|
// CHECK1-NEXT: [[TMP11:%.*]] = load i8, ptr [[C1]], align 1
|
|
|
|
|
// CHECK1-NEXT: [[CONV5:%.*]] = sext i8 [[TMP11]] to i32
|
|
|
|
|
// CHECK1-NEXT: [[XOR6:%.*]] = xor i32 [[CONV4]], [[CONV5]]
|
|
|
|
|
// CHECK1-NEXT: [[CONV7:%.*]] = trunc i32 [[XOR6]] to i8
|
|
|
|
|
// CHECK1-NEXT: store i8 [[CONV7]], ptr [[TMP0]], align 1
|
|
|
|
|
// CHECK1-NEXT: [[TMP13:%.*]] = load float, ptr [[TMP1]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[TMP14:%.*]] = load float, ptr [[D2]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[MUL8:%.*]] = fmul float [[TMP13]], [[TMP14]]
|
|
|
|
|
// CHECK1-NEXT: [[TMP12:%.*]] = load float, ptr [[TMP1]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[TMP13:%.*]] = load float, ptr [[D2]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[MUL8:%.*]] = fmul float [[TMP12]], [[TMP13]]
|
|
|
|
|
// CHECK1-NEXT: store float [[MUL8]], ptr [[TMP1]], align 4
|
|
|
|
|
// CHECK1-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP5]])
|
|
|
|
|
// CHECK1-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
|
|
|
@ -727,29 +727,29 @@ int bar(int n){
|
|
|
|
|
// CHECK1-NEXT: store ptr [[A1]], ptr [[TMP6]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i64 0, i64 1
|
|
|
|
|
// CHECK1-NEXT: store ptr [[B2]], ptr [[TMP7]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP8:%.*]] = load ptr, ptr @"_openmp_teams_reductions_buffer_$_$ptr", align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP9:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr [[TMP8]], i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func9, ptr @_omp_reduction_inter_warp_copy_func10, ptr @_omp_reduction_list_to_global_copy_func11, ptr @_omp_reduction_list_to_global_reduce_func12, ptr @_omp_reduction_global_to_list_copy_func13, ptr @_omp_reduction_global_to_list_reduce_func14)
|
|
|
|
|
// CHECK1-NEXT: [[TMP10:%.*]] = icmp eq i32 [[TMP9]], 1
|
|
|
|
|
// CHECK1-NEXT: br i1 [[TMP10]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK1-NEXT: %"_openmp_teams_reductions_buffer_$_$ptr" = call ptr @__kmpc_reduction_get_fixed_buffer()
|
|
|
|
|
// CHECK1-NEXT: [[TMP8:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr %"_openmp_teams_reductions_buffer_$_$ptr", i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func9, ptr @_omp_reduction_inter_warp_copy_func10, ptr @_omp_reduction_list_to_global_copy_func11, ptr @_omp_reduction_list_to_global_reduce_func12, ptr @_omp_reduction_global_to_list_copy_func13, ptr @_omp_reduction_global_to_list_reduce_func14)
|
|
|
|
|
// CHECK1-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], 1
|
|
|
|
|
// CHECK1-NEXT: br i1 [[TMP9]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK1: .omp.reduction.then:
|
|
|
|
|
// CHECK1-NEXT: [[TMP11:%.*]] = load i32, ptr [[TMP0]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[TMP12:%.*]] = load i32, ptr [[A1]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[OR:%.*]] = or i32 [[TMP11]], [[TMP12]]
|
|
|
|
|
// CHECK1-NEXT: [[TMP10:%.*]] = load i32, ptr [[TMP0]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[TMP11:%.*]] = load i32, ptr [[A1]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[OR:%.*]] = or i32 [[TMP10]], [[TMP11]]
|
|
|
|
|
// CHECK1-NEXT: store i32 [[OR]], ptr [[TMP0]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[TMP13:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK1-NEXT: [[CONV:%.*]] = sext i16 [[TMP13]] to i32
|
|
|
|
|
// CHECK1-NEXT: [[TMP14:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK1-NEXT: [[CONV3:%.*]] = sext i16 [[TMP14]] to i32
|
|
|
|
|
// CHECK1-NEXT: [[TMP12:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK1-NEXT: [[CONV:%.*]] = sext i16 [[TMP12]] to i32
|
|
|
|
|
// CHECK1-NEXT: [[TMP13:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK1-NEXT: [[CONV3:%.*]] = sext i16 [[TMP13]] to i32
|
|
|
|
|
// CHECK1-NEXT: [[CMP:%.*]] = icmp sgt i32 [[CONV]], [[CONV3]]
|
|
|
|
|
// CHECK1-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
|
|
|
|
|
// CHECK1: cond.true:
|
|
|
|
|
// CHECK1-NEXT: [[TMP15:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK1-NEXT: [[TMP14:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK1-NEXT: br label [[COND_END:%.*]]
|
|
|
|
|
// CHECK1: cond.false:
|
|
|
|
|
// CHECK1-NEXT: [[TMP16:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK1-NEXT: [[TMP15:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK1-NEXT: br label [[COND_END]]
|
|
|
|
|
// CHECK1: cond.end:
|
|
|
|
|
// CHECK1-NEXT: [[COND:%.*]] = phi i16 [ [[TMP15]], [[COND_TRUE]] ], [ [[TMP16]], [[COND_FALSE]] ]
|
|
|
|
|
// CHECK1-NEXT: [[COND:%.*]] = phi i16 [ [[TMP14]], [[COND_TRUE]] ], [ [[TMP15]], [[COND_FALSE]] ]
|
|
|
|
|
// CHECK1-NEXT: store i16 [[COND]], ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK1-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP5]])
|
|
|
|
|
// CHECK1-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
|
|
|
@ -1157,13 +1157,13 @@ int bar(int n){
|
|
|
|
|
// CHECK1-NEXT: [[TMP5:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[TMP6:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i64 0, i64 0
|
|
|
|
|
// CHECK1-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TMP6]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK1-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK1-NEXT: [[TMP8:%.*]] = getelementptr inbounds [1024 x i32], ptr [[A]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK1-NEXT: store i32 [[TMP9]], ptr [[TMP8]], align 128
|
|
|
|
|
// CHECK1-NEXT: [[TMP10:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i64 0, i64 1
|
|
|
|
|
// CHECK1-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TMP10]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK1-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK1-NEXT: [[TMP12:%.*]] = getelementptr inbounds [1024 x i16], ptr [[B]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK1-NEXT: [[TMP13:%.*]] = load i16, ptr [[TMP11]], align 2
|
|
|
|
|
// CHECK1-NEXT: store i16 [[TMP13]], ptr [[TMP12]], align 128
|
|
|
|
@ -1183,11 +1183,11 @@ int bar(int n){
|
|
|
|
|
// CHECK1-NEXT: [[TMP3:%.*]] = load ptr, ptr [[DOTADDR]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP4:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i64 0, i64 0
|
|
|
|
|
// CHECK1-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK1-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK1-NEXT: [[TMP6:%.*]] = getelementptr inbounds [1024 x i32], ptr [[A]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK1-NEXT: store ptr [[TMP6]], ptr [[TMP5]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i64 0, i64 1
|
|
|
|
|
// CHECK1-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK1-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK1-NEXT: [[TMP8:%.*]] = getelementptr inbounds [1024 x i16], ptr [[B]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK1-NEXT: store ptr [[TMP8]], ptr [[TMP7]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP9:%.*]] = load ptr, ptr [[DOTADDR2]], align 8
|
|
|
|
@ -1209,13 +1209,13 @@ int bar(int n){
|
|
|
|
|
// CHECK1-NEXT: [[TMP5:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[TMP6:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i64 0, i64 0
|
|
|
|
|
// CHECK1-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TMP6]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK1-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK1-NEXT: [[TMP8:%.*]] = getelementptr inbounds [1024 x i32], ptr [[A]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK1-NEXT: [[TMP9:%.*]] = load i32, ptr [[TMP8]], align 128
|
|
|
|
|
// CHECK1-NEXT: store i32 [[TMP9]], ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[TMP10:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i64 0, i64 1
|
|
|
|
|
// CHECK1-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TMP10]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK1-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK1-NEXT: [[TMP12:%.*]] = getelementptr inbounds [1024 x i16], ptr [[B]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK1-NEXT: [[TMP13:%.*]] = load i16, ptr [[TMP12]], align 128
|
|
|
|
|
// CHECK1-NEXT: store i16 [[TMP13]], ptr [[TMP11]], align 2
|
|
|
|
@ -1235,11 +1235,11 @@ int bar(int n){
|
|
|
|
|
// CHECK1-NEXT: [[TMP3:%.*]] = load ptr, ptr [[DOTADDR]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP4:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK1-NEXT: [[TMP5:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i64 0, i64 0
|
|
|
|
|
// CHECK1-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK1-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK1-NEXT: [[TMP6:%.*]] = getelementptr inbounds [1024 x i32], ptr [[A]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK1-NEXT: store ptr [[TMP6]], ptr [[TMP5]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i64 0, i64 1
|
|
|
|
|
// CHECK1-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK1-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK1-NEXT: [[TMP8:%.*]] = getelementptr inbounds [1024 x i16], ptr [[B]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK1-NEXT: store ptr [[TMP8]], ptr [[TMP7]], align 8
|
|
|
|
|
// CHECK1-NEXT: [[TMP9:%.*]] = load ptr, ptr [[DOTADDR2]], align 8
|
|
|
|
@ -1294,14 +1294,14 @@ int bar(int n){
|
|
|
|
|
// CHECK2-NEXT: [[TMP3:%.*]] = load i32, ptr [[TMP2]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: store ptr [[E1]], ptr [[TMP4]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP5:%.*]] = load ptr, ptr @"_openmp_teams_reductions_buffer_$_$ptr", align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP6:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP3]], ptr [[TMP5]], i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func, ptr @_omp_reduction_inter_warp_copy_func, ptr @_omp_reduction_list_to_global_copy_func, ptr @_omp_reduction_list_to_global_reduce_func, ptr @_omp_reduction_global_to_list_copy_func, ptr @_omp_reduction_global_to_list_reduce_func)
|
|
|
|
|
// CHECK2-NEXT: [[TMP7:%.*]] = icmp eq i32 [[TMP6]], 1
|
|
|
|
|
// CHECK2-NEXT: br i1 [[TMP7]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK2-NEXT: %"_openmp_teams_reductions_buffer_$_$ptr" = call ptr @__kmpc_reduction_get_fixed_buffer()
|
|
|
|
|
// CHECK2-NEXT: [[TMP5:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP3]], ptr %"_openmp_teams_reductions_buffer_$_$ptr", i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func, ptr @_omp_reduction_inter_warp_copy_func, ptr @_omp_reduction_list_to_global_copy_func, ptr @_omp_reduction_list_to_global_reduce_func, ptr @_omp_reduction_global_to_list_copy_func, ptr @_omp_reduction_global_to_list_reduce_func)
|
|
|
|
|
// CHECK2-NEXT: [[TMP6:%.*]] = icmp eq i32 [[TMP5]], 1
|
|
|
|
|
// CHECK2-NEXT: br i1 [[TMP6]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK2: .omp.reduction.then:
|
|
|
|
|
// CHECK2-NEXT: [[TMP8:%.*]] = load double, ptr [[TMP0]], align 8
|
|
|
|
|
// CHECK2-NEXT: [[TMP9:%.*]] = load double, ptr [[E1]], align 8
|
|
|
|
|
// CHECK2-NEXT: [[ADD2:%.*]] = fadd double [[TMP8]], [[TMP9]]
|
|
|
|
|
// CHECK2-NEXT: [[TMP7:%.*]] = load double, ptr [[TMP0]], align 8
|
|
|
|
|
// CHECK2-NEXT: [[TMP8:%.*]] = load double, ptr [[E1]], align 8
|
|
|
|
|
// CHECK2-NEXT: [[ADD2:%.*]] = fadd double [[TMP7]], [[TMP8]]
|
|
|
|
|
// CHECK2-NEXT: store double [[ADD2]], ptr [[TMP0]], align 8
|
|
|
|
|
// CHECK2-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP3]])
|
|
|
|
|
// CHECK2-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
|
|
|
@ -1583,21 +1583,21 @@ int bar(int n){
|
|
|
|
|
// CHECK2-NEXT: store ptr [[C1]], ptr [[TMP6]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: store ptr [[D2]], ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP8:%.*]] = load ptr, ptr @"_openmp_teams_reductions_buffer_$_$ptr", align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP9:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr [[TMP8]], i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func1, ptr @_omp_reduction_inter_warp_copy_func2, ptr @_omp_reduction_list_to_global_copy_func3, ptr @_omp_reduction_list_to_global_reduce_func4, ptr @_omp_reduction_global_to_list_copy_func5, ptr @_omp_reduction_global_to_list_reduce_func6)
|
|
|
|
|
// CHECK2-NEXT: [[TMP10:%.*]] = icmp eq i32 [[TMP9]], 1
|
|
|
|
|
// CHECK2-NEXT: br i1 [[TMP10]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK2-NEXT: %"_openmp_teams_reductions_buffer_$_$ptr" = call ptr @__kmpc_reduction_get_fixed_buffer()
|
|
|
|
|
// CHECK2-NEXT: [[TMP8:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr %"_openmp_teams_reductions_buffer_$_$ptr", i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func1, ptr @_omp_reduction_inter_warp_copy_func2, ptr @_omp_reduction_list_to_global_copy_func3, ptr @_omp_reduction_list_to_global_reduce_func4, ptr @_omp_reduction_global_to_list_copy_func5, ptr @_omp_reduction_global_to_list_reduce_func6)
|
|
|
|
|
// CHECK2-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], 1
|
|
|
|
|
// CHECK2-NEXT: br i1 [[TMP9]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK2: .omp.reduction.then:
|
|
|
|
|
// CHECK2-NEXT: [[TMP11:%.*]] = load i8, ptr [[TMP0]], align 1
|
|
|
|
|
// CHECK2-NEXT: [[CONV4:%.*]] = sext i8 [[TMP11]] to i32
|
|
|
|
|
// CHECK2-NEXT: [[TMP12:%.*]] = load i8, ptr [[C1]], align 1
|
|
|
|
|
// CHECK2-NEXT: [[CONV5:%.*]] = sext i8 [[TMP12]] to i32
|
|
|
|
|
// CHECK2-NEXT: [[TMP10:%.*]] = load i8, ptr [[TMP0]], align 1
|
|
|
|
|
// CHECK2-NEXT: [[CONV4:%.*]] = sext i8 [[TMP10]] to i32
|
|
|
|
|
// CHECK2-NEXT: [[TMP11:%.*]] = load i8, ptr [[C1]], align 1
|
|
|
|
|
// CHECK2-NEXT: [[CONV5:%.*]] = sext i8 [[TMP11]] to i32
|
|
|
|
|
// CHECK2-NEXT: [[XOR6:%.*]] = xor i32 [[CONV4]], [[CONV5]]
|
|
|
|
|
// CHECK2-NEXT: [[CONV7:%.*]] = trunc i32 [[XOR6]] to i8
|
|
|
|
|
// CHECK2-NEXT: store i8 [[CONV7]], ptr [[TMP0]], align 1
|
|
|
|
|
// CHECK2-NEXT: [[TMP13:%.*]] = load float, ptr [[TMP1]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP14:%.*]] = load float, ptr [[D2]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[MUL8:%.*]] = fmul float [[TMP13]], [[TMP14]]
|
|
|
|
|
// CHECK2-NEXT: [[TMP12:%.*]] = load float, ptr [[TMP1]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP13:%.*]] = load float, ptr [[D2]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[MUL8:%.*]] = fmul float [[TMP12]], [[TMP13]]
|
|
|
|
|
// CHECK2-NEXT: store float [[MUL8]], ptr [[TMP1]], align 4
|
|
|
|
|
// CHECK2-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP5]])
|
|
|
|
|
// CHECK2-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
|
|
|
@ -1924,29 +1924,29 @@ int bar(int n){
|
|
|
|
|
// CHECK2-NEXT: store ptr [[A1]], ptr [[TMP6]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: store ptr [[B2]], ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP8:%.*]] = load ptr, ptr @"_openmp_teams_reductions_buffer_$_$ptr", align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP9:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr [[TMP8]], i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func9, ptr @_omp_reduction_inter_warp_copy_func10, ptr @_omp_reduction_list_to_global_copy_func11, ptr @_omp_reduction_list_to_global_reduce_func12, ptr @_omp_reduction_global_to_list_copy_func13, ptr @_omp_reduction_global_to_list_reduce_func14)
|
|
|
|
|
// CHECK2-NEXT: [[TMP10:%.*]] = icmp eq i32 [[TMP9]], 1
|
|
|
|
|
// CHECK2-NEXT: br i1 [[TMP10]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK2-NEXT: %"_openmp_teams_reductions_buffer_$_$ptr" = call ptr @__kmpc_reduction_get_fixed_buffer()
|
|
|
|
|
// CHECK2-NEXT: [[TMP8:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr %"_openmp_teams_reductions_buffer_$_$ptr", i32 1024, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func9, ptr @_omp_reduction_inter_warp_copy_func10, ptr @_omp_reduction_list_to_global_copy_func11, ptr @_omp_reduction_list_to_global_reduce_func12, ptr @_omp_reduction_global_to_list_copy_func13, ptr @_omp_reduction_global_to_list_reduce_func14)
|
|
|
|
|
// CHECK2-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], 1
|
|
|
|
|
// CHECK2-NEXT: br i1 [[TMP9]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK2: .omp.reduction.then:
|
|
|
|
|
// CHECK2-NEXT: [[TMP11:%.*]] = load i32, ptr [[TMP0]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP12:%.*]] = load i32, ptr [[A1]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[OR:%.*]] = or i32 [[TMP11]], [[TMP12]]
|
|
|
|
|
// CHECK2-NEXT: [[TMP10:%.*]] = load i32, ptr [[TMP0]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP11:%.*]] = load i32, ptr [[A1]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[OR:%.*]] = or i32 [[TMP10]], [[TMP11]]
|
|
|
|
|
// CHECK2-NEXT: store i32 [[OR]], ptr [[TMP0]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP13:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK2-NEXT: [[CONV:%.*]] = sext i16 [[TMP13]] to i32
|
|
|
|
|
// CHECK2-NEXT: [[TMP14:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK2-NEXT: [[CONV3:%.*]] = sext i16 [[TMP14]] to i32
|
|
|
|
|
// CHECK2-NEXT: [[TMP12:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK2-NEXT: [[CONV:%.*]] = sext i16 [[TMP12]] to i32
|
|
|
|
|
// CHECK2-NEXT: [[TMP13:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK2-NEXT: [[CONV3:%.*]] = sext i16 [[TMP13]] to i32
|
|
|
|
|
// CHECK2-NEXT: [[CMP:%.*]] = icmp sgt i32 [[CONV]], [[CONV3]]
|
|
|
|
|
// CHECK2-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
|
|
|
|
|
// CHECK2: cond.true:
|
|
|
|
|
// CHECK2-NEXT: [[TMP15:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK2-NEXT: [[TMP14:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK2-NEXT: br label [[COND_END:%.*]]
|
|
|
|
|
// CHECK2: cond.false:
|
|
|
|
|
// CHECK2-NEXT: [[TMP16:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK2-NEXT: [[TMP15:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK2-NEXT: br label [[COND_END]]
|
|
|
|
|
// CHECK2: cond.end:
|
|
|
|
|
// CHECK2-NEXT: [[COND:%.*]] = phi i16 [ [[TMP15]], [[COND_TRUE]] ], [ [[TMP16]], [[COND_FALSE]] ]
|
|
|
|
|
// CHECK2-NEXT: [[COND:%.*]] = phi i16 [ [[TMP14]], [[COND_TRUE]] ], [ [[TMP15]], [[COND_FALSE]] ]
|
|
|
|
|
// CHECK2-NEXT: store i16 [[COND]], ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK2-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP5]])
|
|
|
|
|
// CHECK2-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
|
|
|
@ -2354,13 +2354,13 @@ int bar(int n){
|
|
|
|
|
// CHECK2-NEXT: [[TMP5:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP6:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TMP6]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[TMP8:%.*]] = getelementptr inbounds [1024 x i32], ptr [[A]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK2-NEXT: store i32 [[TMP9]], ptr [[TMP8]], align 128
|
|
|
|
|
// CHECK2-NEXT: [[TMP10:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TMP10]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[TMP12:%.*]] = getelementptr inbounds [1024 x i16], ptr [[B]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK2-NEXT: [[TMP13:%.*]] = load i16, ptr [[TMP11]], align 2
|
|
|
|
|
// CHECK2-NEXT: store i16 [[TMP13]], ptr [[TMP12]], align 128
|
|
|
|
@ -2380,11 +2380,11 @@ int bar(int n){
|
|
|
|
|
// CHECK2-NEXT: [[TMP3:%.*]] = load ptr, ptr [[DOTADDR]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP4:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP5:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[TMP6:%.*]] = getelementptr inbounds [1024 x i32], ptr [[A]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK2-NEXT: store ptr [[TMP6]], ptr [[TMP5]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[TMP8:%.*]] = getelementptr inbounds [1024 x i16], ptr [[B]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK2-NEXT: store ptr [[TMP8]], ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP9:%.*]] = load ptr, ptr [[DOTADDR2]], align 4
|
|
|
|
@ -2406,13 +2406,13 @@ int bar(int n){
|
|
|
|
|
// CHECK2-NEXT: [[TMP5:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP6:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TMP6]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[TMP8:%.*]] = getelementptr inbounds [1024 x i32], ptr [[A]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK2-NEXT: [[TMP9:%.*]] = load i32, ptr [[TMP8]], align 128
|
|
|
|
|
// CHECK2-NEXT: store i32 [[TMP9]], ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP10:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TMP10]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[TMP12:%.*]] = getelementptr inbounds [1024 x i16], ptr [[B]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK2-NEXT: [[TMP13:%.*]] = load i16, ptr [[TMP12]], align 128
|
|
|
|
|
// CHECK2-NEXT: store i16 [[TMP13]], ptr [[TMP11]], align 2
|
|
|
|
@ -2432,11 +2432,11 @@ int bar(int n){
|
|
|
|
|
// CHECK2-NEXT: [[TMP3:%.*]] = load ptr, ptr [[DOTADDR]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP4:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP5:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK2-NEXT: [[TMP6:%.*]] = getelementptr inbounds [1024 x i32], ptr [[A]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK2-NEXT: store ptr [[TMP6]], ptr [[TMP5]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK2-NEXT: [[TMP8:%.*]] = getelementptr inbounds [1024 x i16], ptr [[B]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK2-NEXT: store ptr [[TMP8]], ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK2-NEXT: [[TMP9:%.*]] = load ptr, ptr [[DOTADDR2]], align 4
|
|
|
|
@ -2491,14 +2491,14 @@ int bar(int n){
|
|
|
|
|
// CHECK3-NEXT: [[TMP3:%.*]] = load i32, ptr [[TMP2]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP4:%.*]] = getelementptr inbounds [1 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: store ptr [[E1]], ptr [[TMP4]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP5:%.*]] = load ptr, ptr @"_openmp_teams_reductions_buffer_$_$ptr", align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP6:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP3]], ptr [[TMP5]], i32 2048, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func, ptr @_omp_reduction_inter_warp_copy_func, ptr @_omp_reduction_list_to_global_copy_func, ptr @_omp_reduction_list_to_global_reduce_func, ptr @_omp_reduction_global_to_list_copy_func, ptr @_omp_reduction_global_to_list_reduce_func)
|
|
|
|
|
// CHECK3-NEXT: [[TMP7:%.*]] = icmp eq i32 [[TMP6]], 1
|
|
|
|
|
// CHECK3-NEXT: br i1 [[TMP7]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK3-NEXT: %"_openmp_teams_reductions_buffer_$_$ptr" = call ptr @__kmpc_reduction_get_fixed_buffer()
|
|
|
|
|
// CHECK3-NEXT: [[TMP5:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP3]], ptr %"_openmp_teams_reductions_buffer_$_$ptr", i32 2048, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func, ptr @_omp_reduction_inter_warp_copy_func, ptr @_omp_reduction_list_to_global_copy_func, ptr @_omp_reduction_list_to_global_reduce_func, ptr @_omp_reduction_global_to_list_copy_func, ptr @_omp_reduction_global_to_list_reduce_func)
|
|
|
|
|
// CHECK3-NEXT: [[TMP6:%.*]] = icmp eq i32 [[TMP5]], 1
|
|
|
|
|
// CHECK3-NEXT: br i1 [[TMP6]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK3: .omp.reduction.then:
|
|
|
|
|
// CHECK3-NEXT: [[TMP8:%.*]] = load double, ptr [[TMP0]], align 8
|
|
|
|
|
// CHECK3-NEXT: [[TMP9:%.*]] = load double, ptr [[E1]], align 8
|
|
|
|
|
// CHECK3-NEXT: [[ADD2:%.*]] = fadd double [[TMP8]], [[TMP9]]
|
|
|
|
|
// CHECK3-NEXT: [[TMP7:%.*]] = load double, ptr [[TMP0]], align 8
|
|
|
|
|
// CHECK3-NEXT: [[TMP8:%.*]] = load double, ptr [[E1]], align 8
|
|
|
|
|
// CHECK3-NEXT: [[ADD2:%.*]] = fadd double [[TMP7]], [[TMP8]]
|
|
|
|
|
// CHECK3-NEXT: store double [[ADD2]], ptr [[TMP0]], align 8
|
|
|
|
|
// CHECK3-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP3]])
|
|
|
|
|
// CHECK3-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
|
|
|
@ -2780,21 +2780,21 @@ int bar(int n){
|
|
|
|
|
// CHECK3-NEXT: store ptr [[C1]], ptr [[TMP6]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: store ptr [[D2]], ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP8:%.*]] = load ptr, ptr @"_openmp_teams_reductions_buffer_$_$ptr", align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP9:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr [[TMP8]], i32 2048, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func1, ptr @_omp_reduction_inter_warp_copy_func2, ptr @_omp_reduction_list_to_global_copy_func3, ptr @_omp_reduction_list_to_global_reduce_func4, ptr @_omp_reduction_global_to_list_copy_func5, ptr @_omp_reduction_global_to_list_reduce_func6)
|
|
|
|
|
// CHECK3-NEXT: [[TMP10:%.*]] = icmp eq i32 [[TMP9]], 1
|
|
|
|
|
// CHECK3-NEXT: br i1 [[TMP10]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK3-NEXT: %"_openmp_teams_reductions_buffer_$_$ptr" = call ptr @__kmpc_reduction_get_fixed_buffer()
|
|
|
|
|
// CHECK3-NEXT: [[TMP8:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr %"_openmp_teams_reductions_buffer_$_$ptr", i32 2048, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func1, ptr @_omp_reduction_inter_warp_copy_func2, ptr @_omp_reduction_list_to_global_copy_func3, ptr @_omp_reduction_list_to_global_reduce_func4, ptr @_omp_reduction_global_to_list_copy_func5, ptr @_omp_reduction_global_to_list_reduce_func6)
|
|
|
|
|
// CHECK3-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], 1
|
|
|
|
|
// CHECK3-NEXT: br i1 [[TMP9]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK3: .omp.reduction.then:
|
|
|
|
|
// CHECK3-NEXT: [[TMP11:%.*]] = load i8, ptr [[TMP0]], align 1
|
|
|
|
|
// CHECK3-NEXT: [[CONV4:%.*]] = sext i8 [[TMP11]] to i32
|
|
|
|
|
// CHECK3-NEXT: [[TMP12:%.*]] = load i8, ptr [[C1]], align 1
|
|
|
|
|
// CHECK3-NEXT: [[CONV5:%.*]] = sext i8 [[TMP12]] to i32
|
|
|
|
|
// CHECK3-NEXT: [[TMP10:%.*]] = load i8, ptr [[TMP0]], align 1
|
|
|
|
|
// CHECK3-NEXT: [[CONV4:%.*]] = sext i8 [[TMP10]] to i32
|
|
|
|
|
// CHECK3-NEXT: [[TMP11:%.*]] = load i8, ptr [[C1]], align 1
|
|
|
|
|
// CHECK3-NEXT: [[CONV5:%.*]] = sext i8 [[TMP11]] to i32
|
|
|
|
|
// CHECK3-NEXT: [[XOR6:%.*]] = xor i32 [[CONV4]], [[CONV5]]
|
|
|
|
|
// CHECK3-NEXT: [[CONV7:%.*]] = trunc i32 [[XOR6]] to i8
|
|
|
|
|
// CHECK3-NEXT: store i8 [[CONV7]], ptr [[TMP0]], align 1
|
|
|
|
|
// CHECK3-NEXT: [[TMP13:%.*]] = load float, ptr [[TMP1]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP14:%.*]] = load float, ptr [[D2]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[MUL8:%.*]] = fmul float [[TMP13]], [[TMP14]]
|
|
|
|
|
// CHECK3-NEXT: [[TMP12:%.*]] = load float, ptr [[TMP1]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP13:%.*]] = load float, ptr [[D2]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[MUL8:%.*]] = fmul float [[TMP12]], [[TMP13]]
|
|
|
|
|
// CHECK3-NEXT: store float [[MUL8]], ptr [[TMP1]], align 4
|
|
|
|
|
// CHECK3-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP5]])
|
|
|
|
|
// CHECK3-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
|
|
|
@ -3121,29 +3121,29 @@ int bar(int n){
|
|
|
|
|
// CHECK3-NEXT: store ptr [[A1]], ptr [[TMP6]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: store ptr [[B2]], ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP8:%.*]] = load ptr, ptr @"_openmp_teams_reductions_buffer_$_$ptr", align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP9:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr [[TMP8]], i32 2048, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func9, ptr @_omp_reduction_inter_warp_copy_func10, ptr @_omp_reduction_list_to_global_copy_func11, ptr @_omp_reduction_list_to_global_reduce_func12, ptr @_omp_reduction_global_to_list_copy_func13, ptr @_omp_reduction_global_to_list_reduce_func14)
|
|
|
|
|
// CHECK3-NEXT: [[TMP10:%.*]] = icmp eq i32 [[TMP9]], 1
|
|
|
|
|
// CHECK3-NEXT: br i1 [[TMP10]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK3-NEXT: %"_openmp_teams_reductions_buffer_$_$ptr" = call ptr @__kmpc_reduction_get_fixed_buffer()
|
|
|
|
|
// CHECK3-NEXT: [[TMP8:%.*]] = call i32 @__kmpc_nvptx_teams_reduce_nowait_v2(ptr @[[GLOB1]], i32 [[TMP5]], ptr %"_openmp_teams_reductions_buffer_$_$ptr", i32 2048, ptr [[DOTOMP_REDUCTION_RED_LIST]], ptr @_omp_reduction_shuffle_and_reduce_func9, ptr @_omp_reduction_inter_warp_copy_func10, ptr @_omp_reduction_list_to_global_copy_func11, ptr @_omp_reduction_list_to_global_reduce_func12, ptr @_omp_reduction_global_to_list_copy_func13, ptr @_omp_reduction_global_to_list_reduce_func14)
|
|
|
|
|
// CHECK3-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP8]], 1
|
|
|
|
|
// CHECK3-NEXT: br i1 [[TMP9]], label [[DOTOMP_REDUCTION_THEN:%.*]], label [[DOTOMP_REDUCTION_DONE:%.*]]
|
|
|
|
|
// CHECK3: .omp.reduction.then:
|
|
|
|
|
// CHECK3-NEXT: [[TMP11:%.*]] = load i32, ptr [[TMP0]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP12:%.*]] = load i32, ptr [[A1]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[OR:%.*]] = or i32 [[TMP11]], [[TMP12]]
|
|
|
|
|
// CHECK3-NEXT: [[TMP10:%.*]] = load i32, ptr [[TMP0]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP11:%.*]] = load i32, ptr [[A1]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[OR:%.*]] = or i32 [[TMP10]], [[TMP11]]
|
|
|
|
|
// CHECK3-NEXT: store i32 [[OR]], ptr [[TMP0]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP13:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK3-NEXT: [[CONV:%.*]] = sext i16 [[TMP13]] to i32
|
|
|
|
|
// CHECK3-NEXT: [[TMP14:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK3-NEXT: [[CONV3:%.*]] = sext i16 [[TMP14]] to i32
|
|
|
|
|
// CHECK3-NEXT: [[TMP12:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK3-NEXT: [[CONV:%.*]] = sext i16 [[TMP12]] to i32
|
|
|
|
|
// CHECK3-NEXT: [[TMP13:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK3-NEXT: [[CONV3:%.*]] = sext i16 [[TMP13]] to i32
|
|
|
|
|
// CHECK3-NEXT: [[CMP:%.*]] = icmp sgt i32 [[CONV]], [[CONV3]]
|
|
|
|
|
// CHECK3-NEXT: br i1 [[CMP]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]
|
|
|
|
|
// CHECK3: cond.true:
|
|
|
|
|
// CHECK3-NEXT: [[TMP15:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK3-NEXT: [[TMP14:%.*]] = load i16, ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK3-NEXT: br label [[COND_END:%.*]]
|
|
|
|
|
// CHECK3: cond.false:
|
|
|
|
|
// CHECK3-NEXT: [[TMP16:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK3-NEXT: [[TMP15:%.*]] = load i16, ptr [[B2]], align 2
|
|
|
|
|
// CHECK3-NEXT: br label [[COND_END]]
|
|
|
|
|
// CHECK3: cond.end:
|
|
|
|
|
// CHECK3-NEXT: [[COND:%.*]] = phi i16 [ [[TMP15]], [[COND_TRUE]] ], [ [[TMP16]], [[COND_FALSE]] ]
|
|
|
|
|
// CHECK3-NEXT: [[COND:%.*]] = phi i16 [ [[TMP14]], [[COND_TRUE]] ], [ [[TMP15]], [[COND_FALSE]] ]
|
|
|
|
|
// CHECK3-NEXT: store i16 [[COND]], ptr [[TMP1]], align 2
|
|
|
|
|
// CHECK3-NEXT: call void @__kmpc_nvptx_end_reduce_nowait(i32 [[TMP5]])
|
|
|
|
|
// CHECK3-NEXT: br label [[DOTOMP_REDUCTION_DONE]]
|
|
|
|
@ -3551,13 +3551,13 @@ int bar(int n){
|
|
|
|
|
// CHECK3-NEXT: [[TMP5:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP6:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TMP6]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[TMP8:%.*]] = getelementptr inbounds [2048 x i32], ptr [[A]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK3-NEXT: store i32 [[TMP9]], ptr [[TMP8]], align 128
|
|
|
|
|
// CHECK3-NEXT: [[TMP10:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TMP10]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[TMP12:%.*]] = getelementptr inbounds [2048 x i16], ptr [[B]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK3-NEXT: [[TMP13:%.*]] = load i16, ptr [[TMP11]], align 2
|
|
|
|
|
// CHECK3-NEXT: store i16 [[TMP13]], ptr [[TMP12]], align 128
|
|
|
|
@ -3577,11 +3577,11 @@ int bar(int n){
|
|
|
|
|
// CHECK3-NEXT: [[TMP3:%.*]] = load ptr, ptr [[DOTADDR]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP4:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP5:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[TMP6:%.*]] = getelementptr inbounds [2048 x i32], ptr [[A]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK3-NEXT: store ptr [[TMP6]], ptr [[TMP5]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[TMP8:%.*]] = getelementptr inbounds [2048 x i16], ptr [[B]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK3-NEXT: store ptr [[TMP8]], ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP9:%.*]] = load ptr, ptr [[DOTADDR2]], align 4
|
|
|
|
@ -3603,13 +3603,13 @@ int bar(int n){
|
|
|
|
|
// CHECK3-NEXT: [[TMP5:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP6:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[TMP7:%.*]] = load ptr, ptr [[TMP6]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP4]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[TMP8:%.*]] = getelementptr inbounds [2048 x i32], ptr [[A]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK3-NEXT: [[TMP9:%.*]] = load i32, ptr [[TMP8]], align 128
|
|
|
|
|
// CHECK3-NEXT: store i32 [[TMP9]], ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP10:%.*]] = getelementptr inbounds [2 x ptr], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[TMP11:%.*]] = load ptr, ptr [[TMP10]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP4]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[TMP12:%.*]] = getelementptr inbounds [2048 x i16], ptr [[B]], i32 0, i32 [[TMP5]]
|
|
|
|
|
// CHECK3-NEXT: [[TMP13:%.*]] = load i16, ptr [[TMP12]], align 128
|
|
|
|
|
// CHECK3-NEXT: store i16 [[TMP13]], ptr [[TMP11]], align 2
|
|
|
|
@ -3629,11 +3629,11 @@ int bar(int n){
|
|
|
|
|
// CHECK3-NEXT: [[TMP3:%.*]] = load ptr, ptr [[DOTADDR]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP4:%.*]] = load i32, ptr [[DOTADDR1]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP5:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[A:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2:%.*]], ptr [[TMP3]], i32 0, i32 0
|
|
|
|
|
// CHECK3-NEXT: [[TMP6:%.*]] = getelementptr inbounds [2048 x i32], ptr [[A]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK3-NEXT: store ptr [[TMP6]], ptr [[TMP5]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x ptr], ptr [[DOTOMP_REDUCTION_RED_LIST]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_1]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[B:%.*]] = getelementptr inbounds [[STRUCT__GLOBALIZED_LOCALS_TY_2]], ptr [[TMP3]], i32 0, i32 1
|
|
|
|
|
// CHECK3-NEXT: [[TMP8:%.*]] = getelementptr inbounds [2048 x i16], ptr [[B]], i32 0, i32 [[TMP4]]
|
|
|
|
|
// CHECK3-NEXT: store ptr [[TMP8]], ptr [[TMP7]], align 4
|
|
|
|
|
// CHECK3-NEXT: [[TMP9:%.*]] = load ptr, ptr [[DOTADDR2]], align 4
|
|
|
|
|