Skip to content

Commit 0fc0a20

Browse files
committed
Merge remote-tracking branch 'intel_llvm/sycl' into ww08
2 parents 64d56bc + 4ad9e79 commit 0fc0a20

27 files changed

+286
-139
lines changed

buildbot/dependency.conf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ ocl_cpu_rt_ver=2020.11.11.0.04
44
# https://github.com/intel/llvm/releases/download/2020-WW45/win-oclcpuexp-2020.11.11.0.04_rel.zip
55
ocl_cpu_rt_ver_win=2020.11.11.0.04
66
# Same GPU driver supports Level Zero and OpenCL
7-
# https://github.com/intel/compute-runtime/releases/tag/21.04.18912
8-
ocl_gpu_rt_ver=21.04.18912
7+
# https://github.com/intel/compute-runtime/releases/tag/21.07.19042
8+
ocl_gpu_rt_ver=21.07.19042
99
# Same GPU driver supports Level Zero and OpenCL
1010
# https://downloadmirror.intel.com/30148/a08/igfx_win10_100.9168.zip
1111
ocl_gpu_rt_ver_win=27.20.100.9168
@@ -30,7 +30,7 @@ ocloc_ver_win=27.20.100.9168
3030
[DRIVER VERSIONS]
3131
cpu_driver_lin=2020.11.11.0.04
3232
cpu_driver_win=2020.11.11.0.04
33-
gpu_driver_lin=21.04.18912
33+
gpu_driver_lin=21.07.19042
3434
gpu_driver_win=27.20.100.9168
3535
fpga_driver_lin=2020.11.11.0.04
3636
fpga_driver_win=2020.11.11.0.04

buildbot/dependency.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,18 @@ def do_dependency(args):
4949
# fetch OpenCL headers
5050
ocl_header_dir = os.path.join(args.obj_dir, "OpenCL-Headers")
5151
if not os.path.isdir(ocl_header_dir):
52-
clone_cmd = ["git", "clone", "https://github.com/KhronosGroup/OpenCL-Headers", "OpenCL-Headers"]
52+
clone_cmd = ["git", "clone", "https://github.com/KhronosGroup/OpenCL-Headers",
53+
"OpenCL-Headers", "-b", "v2020.06.16"]
5354
subprocess.check_call(clone_cmd, cwd=args.obj_dir)
5455
else:
5556
fetch_cmd = ["git", "pull", "--ff", "--ff-only", "origin"]
5657
subprocess.check_call(fetch_cmd, cwd=ocl_header_dir)
5758

59+
# Workaround to unblock CI until KhronosGroup/OpenCL-ICD-Loader/pull/124
60+
# is submitted
61+
checkout_cmd = ["git", "checkout", "d1b936b72b9610626ecab8a991cec18348fba047"]
62+
subprocess.check_call(checkout_cmd, cwd=ocl_header_dir)
63+
5864
# fetch and build OpenCL ICD loader
5965
icd_loader_dir = os.path.join(args.obj_dir, "OpenCL-ICD-Loader")
6066
if not os.path.isdir(icd_loader_dir):

clang/include/clang/Basic/Attr.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1395,7 +1395,7 @@ def IntelReqdSubGroupSize: InheritableAttr {
13951395
let Spellings = [GNU<"intel_reqd_sub_group_size">,
13961396
CXX11<"intel", "reqd_sub_group_size">];
13971397
let Args = [ExprArgument<"Value">];
1398-
let Subjects = SubjectList<[Function, CXXMethod], ErrorDiag>;
1398+
let Subjects = SubjectList<[Function], ErrorDiag>;
13991399
let Documentation = [IntelReqdSubGroupSizeDocs];
14001400
let LangOpts = [OpenCL, SYCLIsDevice, SYCLIsHost];
14011401
}

clang/include/clang/Sema/Sema.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10213,6 +10213,16 @@ class Sema final {
1021310213
template <typename AttrType>
1021410214
void addIntelTripleArgAttr(Decl *D, const AttributeCommonInfo &CI,
1021510215
Expr *XDimExpr, Expr *YDimExpr, Expr *ZDimExpr);
10216+
void AddIntelReqdSubGroupSize(Decl *D, const AttributeCommonInfo &CI,
10217+
Expr *E);
10218+
IntelReqdSubGroupSizeAttr *
10219+
MergeIntelReqdSubGroupSizeAttr(Decl *D, const IntelReqdSubGroupSizeAttr &A);
10220+
void AddSYCLIntelNumSimdWorkItemsAttr(Decl *D, const AttributeCommonInfo &CI,
10221+
Expr *E);
10222+
SYCLIntelNumSimdWorkItemsAttr *
10223+
MergeSYCLIntelNumSimdWorkItemsAttr(Decl *D,
10224+
const SYCLIntelNumSimdWorkItemsAttr &A);
10225+
1021610226
/// AddAlignedAttr - Adds an aligned attribute to a particular declaration.
1021710227
void AddAlignedAttr(Decl *D, const AttributeCommonInfo &CI, Expr *E,
1021810228
bool IsPackExpansion);
@@ -13071,16 +13081,14 @@ void Sema::addIntelSingleArgAttr(Decl *D, const AttributeCommonInfo &CI,
1307113081
return;
1307213082
E = ICE.get();
1307313083
int32_t ArgInt = ArgVal.getSExtValue();
13074-
if (CI.getParsedKind() == ParsedAttr::AT_IntelReqdSubGroupSize ||
13075-
CI.getParsedKind() == ParsedAttr::AT_IntelFPGAMaxReplicates) {
13084+
if (CI.getParsedKind() == ParsedAttr::AT_IntelFPGAMaxReplicates) {
1307613085
if (ArgInt <= 0) {
1307713086
Diag(E->getExprLoc(), diag::err_attribute_requires_positive_integer)
1307813087
<< CI << /*positive*/ 0;
1307913088
return;
1308013089
}
1308113090
}
13082-
if (CI.getParsedKind() == ParsedAttr::AT_SYCLIntelMaxGlobalWorkDim ||
13083-
CI.getParsedKind() == ParsedAttr::AT_SYCLIntelNumSimdWorkItems) {
13091+
if (CI.getParsedKind() == ParsedAttr::AT_SYCLIntelMaxGlobalWorkDim) {
1308413092
if (ArgInt < 0) {
1308513093
Diag(E->getExprLoc(), diag::err_attribute_requires_positive_integer)
1308613094
<< CI << /*non-negative*/ 1;

clang/lib/CodeGen/BackendUtil.cpp

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
#include "llvm/CodeGen/RegAllocRegistry.h"
2929
#include "llvm/CodeGen/SchedulerRegistry.h"
3030
#include "llvm/CodeGen/TargetSubtargetInfo.h"
31-
#include "llvm/GenXIntrinsics/GenXSPIRVWriterAdaptor.h"
3231
#include "llvm/IR/DataLayout.h"
3332
#include "llvm/IR/IRPrintingPasses.h"
3433
#include "llvm/IR/LegacyPassManager.h"
@@ -42,7 +41,6 @@
4241
#include "llvm/Passes/PassBuilder.h"
4342
#include "llvm/Passes/PassPlugin.h"
4443
#include "llvm/Passes/StandardInstrumentations.h"
45-
#include "llvm/SYCLLowerIR/LowerESIMD.h"
4644
#include "llvm/Support/BuryPointer.h"
4745
#include "llvm/Support/CommandLine.h"
4846
#include "llvm/Support/MemoryBuffer.h"
@@ -840,25 +838,6 @@ void EmitAssemblyHelper::CreatePasses(legacy::PassManager &MPM,
840838

841839
PMBuilder.populateFunctionPassManager(FPM);
842840
PMBuilder.populateModulePassManager(MPM);
843-
844-
// Customize the tail of the module passes list for the ESIMD extension.
845-
if (LangOpts.SYCLIsDevice && LangOpts.SYCLExplicitSIMD &&
846-
CodeGenOpts.OptimizationLevel != 0) {
847-
MPM.add(createESIMDLowerVecArgPass());
848-
MPM.add(createESIMDLowerLoadStorePass());
849-
MPM.add(createSROAPass());
850-
MPM.add(createEarlyCSEPass(true));
851-
MPM.add(createInstructionCombiningPass());
852-
MPM.add(createDeadCodeEliminationPass());
853-
MPM.add(createFunctionInliningPass(
854-
CodeGenOpts.OptimizationLevel, CodeGenOpts.OptimizeSize,
855-
(!CodeGenOpts.SampleProfileFile.empty() &&
856-
CodeGenOpts.PrepareForThinLTO)));
857-
MPM.add(createSROAPass());
858-
MPM.add(createEarlyCSEPass(true));
859-
MPM.add(createInstructionCombiningPass());
860-
MPM.add(createDeadCodeEliminationPass());
861-
}
862841
}
863842

864843
static void setCommandLineOpts(const CodeGenOptions &CodeGenOpts) {
@@ -955,11 +934,6 @@ void EmitAssemblyHelper::EmitAssembly(BackendAction Action,
955934
PerFunctionPasses.add(
956935
createTargetTransformInfoWrapperPass(getTargetIRAnalysis()));
957936

958-
// ESIMD extension always requires lowering of certain IR constructs, such as
959-
// ESIMD C++ intrinsics, as the last FE step.
960-
if (LangOpts.SYCLIsDevice && LangOpts.SYCLExplicitSIMD)
961-
PerModulePasses.add(createSYCLLowerESIMDPass());
962-
963937
CreatePasses(PerModulePasses, PerFunctionPasses);
964938

965939
legacy::PassManager CodeGenPasses;
@@ -977,9 +951,6 @@ void EmitAssemblyHelper::EmitAssembly(BackendAction Action,
977951
!LangOpts.SYCLExplicitSIMD && LangOpts.EnableDAEInSpirKernels)
978952
PerModulePasses.add(createDeadArgEliminationSYCLPass());
979953

980-
if (LangOpts.SYCLIsDevice && LangOpts.SYCLExplicitSIMD)
981-
PerModulePasses.add(createGenXSPIRVWriterAdaptorPass());
982-
983954
switch (Action) {
984955
case Backend_EmitNothing:
985956
break;

clang/lib/CodeGen/CMakeLists.txt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,6 @@ set(LLVM_LINK_COMPONENTS
2727
TransformUtils
2828
)
2929

30-
31-
get_property(LLVMGenXIntrinsics_SOURCE_DIR GLOBAL PROPERTY LLVMGenXIntrinsics_SOURCE_PROP)
32-
get_property(LLVMGenXIntrinsics_BINARY_DIR GLOBAL PROPERTY LLVMGenXIntrinsics_BINARY_PROP)
33-
34-
include_directories(
35-
${LLVMGenXIntrinsics_SOURCE_DIR}/GenXIntrinsics/include
36-
${LLVMGenXIntrinsics_BINARY_DIR}/GenXIntrinsics/include)
37-
3830
add_clang_library(clangCodeGen
3931
BackendUtil.cpp
4032
CGAtomic.cpp
@@ -96,14 +88,9 @@ add_clang_library(clangCodeGen
9688
TargetInfo.cpp
9789
VarBypassDetector.cpp
9890

99-
ADDITIONAL_HEADER_DIRS
100-
${LLVMGenXIntrinsics_SOURCE_DIR}/GenXIntrinsics/include
101-
${LLVMGenXIntrinsics_BINARY_DIR}/GenXIntrinsics/include
102-
10391
DEPENDS
10492
${codegen_deps}
10593
intrinsics_gen
106-
LLVMGenXIntrinsics
10794

10895
LINK_LIBS
10996
clangAnalysis
@@ -112,5 +99,4 @@ add_clang_library(clangCodeGen
11299
clangFrontend
113100
clangLex
114101
clangSerialization
115-
LLVMGenXIntrinsics
116102
)

clang/lib/CodeGen/CodeGenModule.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1627,7 +1627,9 @@ void CodeGenModule::GenOpenCLArgMetadata(llvm::Function *Fn,
16271627
CGF->Builder.getInt1(parm->hasAttr<SYCLSimdAccessorPtrAttr>())));
16281628
}
16291629

1630-
if (LangOpts.SYCLIsDevice && !LangOpts.SYCLExplicitSIMD)
1630+
bool IsEsimdFunction = FD && FD->hasAttr<SYCLSimdAttr>();
1631+
1632+
if (LangOpts.SYCLIsDevice && !IsEsimdFunction)
16311633
Fn->setMetadata("kernel_arg_buffer_location",
16321634
llvm::MDNode::get(VMContext, argSYCLBufferLocationAttr));
16331635
else {
@@ -1641,7 +1643,7 @@ void CodeGenModule::GenOpenCLArgMetadata(llvm::Function *Fn,
16411643
llvm::MDNode::get(VMContext, argBaseTypeNames));
16421644
Fn->setMetadata("kernel_arg_type_qual",
16431645
llvm::MDNode::get(VMContext, argTypeQuals));
1644-
if (FD && FD->hasAttr<SYCLSimdAttr>())
1646+
if (IsEsimdFunction)
16451647
Fn->setMetadata("kernel_arg_accessor_ptr",
16461648
llvm::MDNode::get(VMContext, argESIMDAccPtrs));
16471649
if (getCodeGenOpts().EmitOpenCLArgMetadata)

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8367,7 +8367,7 @@ void SYCLPostLink::ConstructJob(Compilation &C, const JobAction &JA,
83678367
options::OPT_fno_sycl_device_code_split_esimd, true))
83688368
addArgs(CmdArgs, TCArgs, {"-split-esimd"});
83698369
if (TCArgs.hasFlag(options::OPT_fsycl_device_code_lower_esimd,
8370-
options::OPT_fno_sycl_device_code_lower_esimd, false))
8370+
options::OPT_fno_sycl_device_code_lower_esimd, true))
83718371
addArgs(CmdArgs, TCArgs, {"-lower-esimd"});
83728372
}
83738373
addArgs(CmdArgs, TCArgs,

clang/lib/Sema/SemaDecl.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2618,6 +2618,10 @@ static bool mergeDeclAttribute(Sema &S, NamedDecl *D,
26182618
NewAttr = S.mergeEnforceTCBAttr(D, *TCBA);
26192619
else if (const auto *TCBLA = dyn_cast<EnforceTCBLeafAttr>(Attr))
26202620
NewAttr = S.mergeEnforceTCBLeafAttr(D, *TCBLA);
2621+
else if (const auto *A = dyn_cast<IntelReqdSubGroupSizeAttr>(Attr))
2622+
NewAttr = S.MergeIntelReqdSubGroupSizeAttr(D, *A);
2623+
else if (const auto *A = dyn_cast<SYCLIntelNumSimdWorkItemsAttr>(Attr))
2624+
NewAttr = S.MergeSYCLIntelNumSimdWorkItemsAttr(D, *A);
26212625
else if (Attr->shouldInheritEvenIfAlreadyPresent() || !DeclHasAttr(D, Attr))
26222626
NewAttr = cast<InheritableAttr>(Attr->clone(S.Context));
26232627

0 commit comments

Comments
 (0)