Skip to content

Commit db6f7f8

Browse files
author
iclsrc
committed
Merge from 'main' to 'sycl-web' (47 commits)
2 parents 099a295 + c1add93 commit db6f7f8

File tree

180 files changed

+4499
-1982
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

180 files changed

+4499
-1982
lines changed

.ci/compute_projects_test.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,34 @@ def test_ci(self):
284284
"check-cxx check-cxxabi check-unwind",
285285
)
286286

287+
def test_windows_ci(self):
288+
env_variables = compute_projects.get_env_variables(
289+
[".ci/compute_projects.py"], "Windows"
290+
)
291+
self.assertEqual(
292+
env_variables["projects_to_build"],
293+
"clang;clang-tools-extra;libclc;lld;llvm;mlir;polly",
294+
)
295+
self.assertEqual(
296+
env_variables["project_check_targets"],
297+
"check-clang check-clang-cir check-clang-tools check-lld check-llvm check-mlir check-polly",
298+
)
299+
self.assertEqual(
300+
env_variables["runtimes_to_build"],
301+
"libcxx;libcxxabi;libunwind",
302+
)
303+
self.assertEqual(
304+
env_variables["runtimes_check_targets"],
305+
"",
306+
)
307+
# TODO(boomanaiden154): We should not be emitting these on Windows.
308+
# It does not currently impact anything because we do not build the
309+
# runtimes on Windows though.
310+
self.assertEqual(
311+
env_variables["runtimes_check_targets_needs_reconfig"],
312+
"check-cxx check-cxxabi check-unwind",
313+
)
314+
287315
def test_lldb(self):
288316
env_variables = compute_projects.get_env_variables(
289317
["lldb/CMakeLists.txt"], "Linux"

clang/include/clang/AST/OpenACCClause.h

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -878,23 +878,46 @@ class OpenACCPrivateClause final
878878

879879
class OpenACCFirstPrivateClause final
880880
: public OpenACCClauseWithVarList,
881-
private llvm::TrailingObjects<OpenACCFirstPrivateClause, Expr *> {
881+
private llvm::TrailingObjects<OpenACCFirstPrivateClause, Expr *,
882+
VarDecl *> {
882883
friend TrailingObjects;
883884

884885
OpenACCFirstPrivateClause(SourceLocation BeginLoc, SourceLocation LParenLoc,
885-
ArrayRef<Expr *> VarList, SourceLocation EndLoc)
886+
ArrayRef<Expr *> VarList,
887+
ArrayRef<VarDecl *> InitRecipes,
888+
SourceLocation EndLoc)
886889
: OpenACCClauseWithVarList(OpenACCClauseKind::FirstPrivate, BeginLoc,
887890
LParenLoc, EndLoc) {
888-
setExprs(getTrailingObjects(VarList.size()), VarList);
891+
assert(VarList.size() == InitRecipes.size());
892+
setExprs(getTrailingObjects<Expr *>(VarList.size()), VarList);
893+
llvm::uninitialized_copy(InitRecipes, getTrailingObjects<VarDecl *>());
889894
}
890895

891896
public:
892897
static bool classof(const OpenACCClause *C) {
893898
return C->getClauseKind() == OpenACCClauseKind::FirstPrivate;
894899
}
900+
901+
// Gets a list of 'made up' `VarDecl` objects that can be used by codegen to
902+
// ensure that we properly initialize each of these variables.
903+
ArrayRef<VarDecl *> getInitRecipes() {
904+
return ArrayRef<VarDecl *>{getTrailingObjects<VarDecl *>(),
905+
getExprs().size()};
906+
}
907+
908+
ArrayRef<VarDecl *> getInitRecipes() const {
909+
return ArrayRef<VarDecl *>{getTrailingObjects<VarDecl *>(),
910+
getExprs().size()};
911+
}
912+
895913
static OpenACCFirstPrivateClause *
896914
Create(const ASTContext &C, SourceLocation BeginLoc, SourceLocation LParenLoc,
897-
ArrayRef<Expr *> VarList, SourceLocation EndLoc);
915+
ArrayRef<Expr *> VarList, ArrayRef<VarDecl *> InitRecipes,
916+
SourceLocation EndLoc);
917+
918+
size_t numTrailingObjects(OverloadToken<Expr *>) const {
919+
return getExprs().size();
920+
}
898921
};
899922

900923
class OpenACCDevicePtrClause final

clang/include/clang/Basic/BuiltinsAMDGPU.def

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,16 @@ BUILTIN(__builtin_amdgcn_raw_buffer_load_b64, "V2UiQbiiIi", "n")
163163
BUILTIN(__builtin_amdgcn_raw_buffer_load_b96, "V3UiQbiiIi", "n")
164164
BUILTIN(__builtin_amdgcn_raw_buffer_load_b128, "V4UiQbiiIi", "n")
165165

166+
BUILTIN(__builtin_amdgcn_raw_ptr_buffer_atomic_add_i32, "iiQbiiIi", "t")
167+
168+
TARGET_BUILTIN(__builtin_amdgcn_raw_ptr_buffer_atomic_fadd_f32, "ffQbiiIi", "t", "atomic-fadd-rtn-insts")
169+
TARGET_BUILTIN(__builtin_amdgcn_raw_ptr_buffer_atomic_fadd_v2f16, "V2hV2hQbiiIi", "t", "atomic-buffer-global-pk-add-f16-insts")
170+
171+
TARGET_BUILTIN(__builtin_amdgcn_raw_ptr_buffer_atomic_fmin_f32, "ffQbiiIi", "t", "atomic-fmin-fmax-global-f32")
172+
TARGET_BUILTIN(__builtin_amdgcn_raw_ptr_buffer_atomic_fmax_f32, "ffQbiiIi", "t", "atomic-fmin-fmax-global-f32")
173+
TARGET_BUILTIN(__builtin_amdgcn_raw_ptr_buffer_atomic_fmin_f64, "ddQbiiIi", "t", "atomic-fmin-fmax-global-f64")
174+
TARGET_BUILTIN(__builtin_amdgcn_raw_ptr_buffer_atomic_fmax_f64, "ddQbiiIi", "t", "atomic-fmin-fmax-global-f64")
175+
166176
TARGET_BUILTIN(__builtin_amdgcn_raw_ptr_buffer_load_lds, "vQbv*3IUiiiIiIi", "t", "vmem-to-lds-load-insts")
167177
TARGET_BUILTIN(__builtin_amdgcn_struct_ptr_buffer_load_lds, "vQbv*3IUiiiiIiIi", "t", "vmem-to-lds-load-insts")
168178

clang/include/clang/Sema/SemaOpenACC.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,8 +238,9 @@ class SemaOpenACC : public SemaBase {
238238
ArrayRef<const OpenACCClause *> Clauses);
239239

240240
// Creates a VarDecl with a proper default init for the purposes of a
241-
// `private` clause, so it can be used to generate a recipe later.
242-
VarDecl *CreateInitRecipe(const Expr *VarExpr);
241+
// `private`/'firstprivate'/'reduction' clause, so it can be used to generate
242+
// a recipe later.
243+
VarDecl *CreateInitRecipe(OpenACCClauseKind CK, const Expr *VarExpr);
243244

244245
public:
245246
ComputeConstructInfo &getActiveComputeConstructInfo() {

clang/lib/AST/OpenACCClause.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -329,11 +329,13 @@ OpenACCPrivateClause::Create(const ASTContext &C, SourceLocation BeginLoc,
329329

330330
OpenACCFirstPrivateClause *OpenACCFirstPrivateClause::Create(
331331
const ASTContext &C, SourceLocation BeginLoc, SourceLocation LParenLoc,
332-
ArrayRef<Expr *> VarList, SourceLocation EndLoc) {
333-
void *Mem = C.Allocate(
334-
OpenACCFirstPrivateClause::totalSizeToAlloc<Expr *>(VarList.size()));
335-
return new (Mem)
336-
OpenACCFirstPrivateClause(BeginLoc, LParenLoc, VarList, EndLoc);
332+
ArrayRef<Expr *> VarList, ArrayRef<VarDecl *> InitRecipes,
333+
SourceLocation EndLoc) {
334+
void *Mem =
335+
C.Allocate(OpenACCFirstPrivateClause::totalSizeToAlloc<Expr *, VarDecl *>(
336+
VarList.size(), InitRecipes.size()));
337+
return new (Mem) OpenACCFirstPrivateClause(BeginLoc, LParenLoc, VarList,
338+
InitRecipes, EndLoc);
337339
}
338340

339341
OpenACCAttachClause *OpenACCAttachClause::Create(const ASTContext &C,

clang/lib/AST/StmtProfile.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2671,6 +2671,9 @@ void OpenACCClauseProfiler::VisitPrivateClause(
26712671
void OpenACCClauseProfiler::VisitFirstPrivateClause(
26722672
const OpenACCFirstPrivateClause &Clause) {
26732673
VisitClauseWithVarList(Clause);
2674+
2675+
for (auto *VD : Clause.getInitRecipes())
2676+
Profiler.VisitDecl(VD);
26742677
}
26752678

26762679
void OpenACCClauseProfiler::VisitAttachClause(

clang/lib/CodeGen/TargetBuiltins/AMDGPU.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1497,6 +1497,21 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
14971497
F, {EmitScalarExpr(E->getArg(0)), EmitScalarExpr(E->getArg(1)),
14981498
EmitScalarExpr(E->getArg(2)), EmitScalarExpr(E->getArg(3))});
14991499
}
1500+
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_add_i32:
1501+
return emitBuiltinWithOneOverloadedType<5>(
1502+
*this, E, Intrinsic::amdgcn_raw_ptr_buffer_atomic_add);
1503+
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fadd_f32:
1504+
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fadd_v2f16:
1505+
return emitBuiltinWithOneOverloadedType<5>(
1506+
*this, E, Intrinsic::amdgcn_raw_ptr_buffer_atomic_fadd);
1507+
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fmin_f32:
1508+
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fmin_f64:
1509+
return emitBuiltinWithOneOverloadedType<5>(
1510+
*this, E, Intrinsic::amdgcn_raw_ptr_buffer_atomic_fmin);
1511+
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fmax_f32:
1512+
case AMDGPU::BI__builtin_amdgcn_raw_ptr_buffer_atomic_fmax_f64:
1513+
return emitBuiltinWithOneOverloadedType<5>(
1514+
*this, E, Intrinsic::amdgcn_raw_ptr_buffer_atomic_fmax);
15001515
case AMDGPU::BI__builtin_amdgcn_s_prefetch_data:
15011516
return emitBuiltinWithOneOverloadedType<2>(
15021517
*this, E, Intrinsic::amdgcn_s_prefetch_data);

0 commit comments

Comments
 (0)