Skip to content

Commit

Permalink
Merge branch 'sycl' into counter-based-2
Browse files Browse the repository at this point in the history
  • Loading branch information
winstonzhang-intel authored Jul 24, 2024
2 parents b711e85 + 450683b commit ab429fa
Show file tree
Hide file tree
Showing 140 changed files with 2,488 additions and 1,201 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/sycl-linux-matrix-e2e-on-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
runner: '["Linux", "gen12"]'
image: ghcr.io/intel/llvm/sycl_ubuntu2204_nightly:latest
image_options: -u 1001 --device=/dev/dri --privileged --cap-add SYS_ADMIN
target_devices: ext_oneapi_level_zero:gpu
target_devices: level_zero:gpu
reset_gpu: true

- name: Intel OCL GPU
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/sycl-linux-precommit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,15 +90,15 @@ jobs:
runner: '["Linux", "gen12"]'
image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
image_options: -u 1001 --device=/dev/dri --privileged --cap-add SYS_ADMIN
target_devices: ext_oneapi_level_zero:gpu;opencl:gpu;opencl:cpu
target_devices: level_zero:gpu;opencl:gpu;opencl:cpu
reset_gpu: true
install_drivers: ${{ contains(needs.detect_changes.outputs.filters, 'drivers') }}
extra_lit_opts: --param gpu-intel-gen12=True
- name: E2E tests on Intel Arc A-Series Graphics
runner: '["Linux", "arc"]'
image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
image_options: -u 1001 --device=/dev/dri --privileged --cap-add SYS_ADMIN
target_devices: ext_oneapi_level_zero:gpu;opencl:gpu
target_devices: level_zero:gpu;opencl:gpu
reset_gpu: true
install_drivers: ${{ contains(needs.detect_changes.outputs.filters, 'drivers') }}
extra_lit_opts: --param matrix-xmx8=True --param gpu-intel-dg2=True
Expand All @@ -107,7 +107,7 @@ jobs:
runner: '["Linux", "arc"]'
image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:${{ contains(github.event.pull_request.labels.*.name, 'ci-no-devigc') && 'latest' || 'devigc' }}
image_options: -u 1001 --device=/dev/dri --privileged --cap-add SYS_ADMIN
target_devices: ext_oneapi_level_zero:gpu;opencl:gpu
target_devices: level_zero:gpu;opencl:gpu
reset_gpu: true
install_drivers: >-
${{ contains(needs.detect_changes.outputs.filters, 'drivers') ||
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/sycl-linux-run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ on:
- 'opencl:cpu'
- 'opencl:gpu'
- 'opencl:fpga'
- 'ext_oneapi_level_zero:gpu'
- 'level_zero:gpu'
- 'ext_oneapi_hip:gpu'
tests_selector:
type: choice
Expand Down Expand Up @@ -318,7 +318,6 @@ jobs:
-DSYCL_CTS_ENABLE_OPENCL_INTEROP_TESTS=OFF \
-DSYCL_CTS_MEASURE_BUILD_TIMES=ON \
-DDPCPP_INSTALL_DIR="$(dirname $(which clang++))/.." \
-DCMAKE_CXX_FLAGS="-Wno-missing-template-arg-list-after-template-kw" \
$CMAKE_EXTRA_ARGS
# Ignore errors so that if one category build fails others still have a
# chance to finish and be executed at the run stage. Note that
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sycl-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
runner: '["Linux", "gen12"]'
image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
image_options: -u 1001 --device=/dev/dri --privileged --cap-add SYS_ADMIN
target_devices: ext_oneapi_level_zero:gpu
target_devices: level_zero:gpu
reset_gpu: true
tests_selector: e2e
extra_lit_opts: --param gpu-intel-gen12=True
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/sycl-post-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
- name: Intel GEN12 Graphics with Level Zero
runner: '["Linux", "gen12"]'
extra_lit_opts: --param gpu-intel-gen12=True
target_devices: ext_oneapi_level_zero:gpu;opencl:fpga
target_devices: level_zero:gpu;opencl:fpga
- name: Intel Arc A-Series Graphics with Level Zero
runner: '["Linux", "arc"]'
extra_lit_opts: --param matrix-xmx8=True --param gpu-intel-dg2=True
Expand All @@ -78,7 +78,7 @@ jobs:
runner: ${{ matrix. runner }}
image: ghcr.io/intel/llvm/ubuntu2204_intel_drivers:latest
image_options: -u 1001 --device=/dev/dri --privileged --cap-add SYS_ADMIN
target_devices: ${{ matrix.target_devices || 'ext_oneapi_level_zero:gpu' }}
target_devices: ${{ matrix.target_devices || 'level_zero:gpu' }}
reset_gpu: true

extra_lit_opts: ${{ matrix.extra_lit_opts }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/sycl-windows-run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ jobs:
shell: cmd
run: |
mkdir build-e2e
cmake -GNinja -B build-e2e -S.\llvm\sycl\test-e2e -DSYCL_TEST_E2E_TARGETS="ext_oneapi_level_zero:gpu" -DCMAKE_CXX_COMPILER="clang++" -DLEVEL_ZERO_LIBS_DIR="D:\github\level-zero_win-sdk\lib" -DLEVEL_ZERO_INCLUDE="D:\github\level-zero_win-sdk\include" -DLLVM_LIT="..\llvm\llvm\utils\lit\lit.py"
cmake -GNinja -B build-e2e -S.\llvm\sycl\test-e2e -DSYCL_TEST_E2E_TARGETS="level_zero:gpu" -DCMAKE_CXX_COMPILER="clang++" -DLEVEL_ZERO_LIBS_DIR="D:\github\level-zero_win-sdk\lib" -DLEVEL_ZERO_INCLUDE="D:\github\level-zero_win-sdk\include" -DLLVM_LIT="..\llvm\llvm\utils\lit\lit.py"
- name: Run End-to-End tests
shell: bash
run: |
Expand Down
6 changes: 0 additions & 6 deletions clang/include/clang/Driver/Options.td
Original file line number Diff line number Diff line change
Expand Up @@ -4041,12 +4041,6 @@ def flink_huge_device_code : Flag<["-"], "flink-huge-device-code">,
def fno_link_huge_device_code : Flag<["-"], "fno-link-huge-device-code">,
Group<Link_Group>, HelpText<"Do not generate or use a custom linker script"
" for huge device code sections (default)">;
def fsycl_link_huge_device_code : Flag<["-"], "fsycl-link-huge-device-code">,
Group<sycl_Group>, Alias<flink_huge_device_code>, HelpText<"Generate and use a custom linker script for huge"
" device code sections (deprecated)">, Flags<[Deprecated]>;
def fno_sycl_link_huge_device_code : Flag<["-"], "fno-sycl-link-huge-device-code">,
Group<sycl_Group>, Alias<fno_link_huge_device_code>, HelpText<"Do not generate or use a custom linker script"
" for huge device code sections (default) (deprecated)">, Flags<[Deprecated]>;
defm sycl_id_queries_fit_in_int: BoolFOption<"sycl-id-queries-fit-in-int",
LangOpts<"SYCLValueFitInMaxInt">, DefaultTrue,
PosFlag<SetTrue, [], [ClangOption], "Assume">, NegFlag<SetFalse, [], [ClangOption], "Do not assume">,
Expand Down
3 changes: 3 additions & 0 deletions clang/lib/Basic/Targets/NVPTX.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,9 @@ void NVPTXTargetInfo::getTargetDefines(const LangOptions &Opts,
MacroBuilder &Builder) const {
Builder.defineMacro("__PTX__");
Builder.defineMacro("__NVPTX__");
// PTXVersion is the value as parsed so 70 if +ptx70 is given.
// For symmetry with __CUDA_ARCH__, make it in the Major * 100 + Minor * 10.
Builder.defineMacro("__PTX_VERSION__", Twine(PTXVersion*10));

// Skip setting architecture dependent macros if undefined.
if (GPU == CudaArch::UNUSED && !HostTarget)
Expand Down
11 changes: 8 additions & 3 deletions clang/lib/Driver/Driver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -806,8 +806,10 @@ Driver::OpenMPRuntimeKind Driver::getOpenMPRuntime(const ArgList &Args) const {
}

static bool isValidSYCLTriple(llvm::Triple T) {
// NVPTX is valid for SYCL.
if (T.isNVPTX())
// 'nvptx64-nvidia-cuda' is the valid SYCL triple for NVidia GPUs.
if (T.getArch() == llvm::Triple::nvptx64 &&
T.getVendor() == llvm::Triple::NVIDIA &&
T.getOS() == llvm::Triple::CUDA && !T.hasEnvironment())
return true;

// AMDGCN is valid for SYCL
Expand Down Expand Up @@ -2407,11 +2409,14 @@ void Driver::PrintHelp(bool ShowHidden) const {
llvm::Triple Driver::MakeSYCLDeviceTriple(StringRef TargetArch) const {
SmallVector<StringRef, 5> SYCLAlias = {
"spir", "spir64", "spir64_fpga", "spir64_x86_64",
"spir64_gen", "spirv32", "spirv64"};
"spir64_gen", "spirv32", "spirv64", "nvptx64"};
if (std::find(SYCLAlias.begin(), SYCLAlias.end(), TargetArch) !=
SYCLAlias.end()) {
llvm::Triple TT;
TT.setArchName(TargetArch);
// Return the full SYCL target triple string for NVidia GPU targets.
if (TT.getArch() == llvm::Triple::nvptx64)
return llvm::Triple("nvptx64-nvidia-cuda");
TT.setVendor(llvm::Triple::UnknownVendor);
TT.setOS(llvm::Triple::UnknownOS);
return TT;
Expand Down
2 changes: 2 additions & 0 deletions clang/lib/Driver/ToolChains/Clang.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10842,6 +10842,8 @@ void SYCLPostLink::ConstructJob(Compilation &C, const JobAction &JA,
std::string OutputArg = Output.getFilename();
if (T.getSubArch() == llvm::Triple::SPIRSubArch_gen && Device.data())
OutputArg = ("intel_gpu_" + Device + "," + OutputArg).str();
else if (T.getSubArch() == llvm::Triple::SPIRSubArch_x86_64)
OutputArg = "spir64_x86_64," + OutputArg;

const toolchains::SYCLToolChain &TC =
static_cast<const toolchains::SYCLToolChain &>(getToolChain());
Expand Down
84 changes: 0 additions & 84 deletions clang/lib/Sema/SemaDeclAttr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8322,90 +8322,6 @@ static void handleSYCLAddIRAnnotationsMemberAttr(Sema &S, Decl *D,
S.AddSYCLAddIRAnnotationsMemberAttr(D, A, Args);
}

namespace {
struct IntrinToName {
uint32_t Id;
int32_t FullName;
int32_t ShortName;
};
} // unnamed namespace

static bool ArmBuiltinAliasValid(unsigned BuiltinID, StringRef AliasName,
ArrayRef<IntrinToName> Map,
const char *IntrinNames) {
AliasName.consume_front("__arm_");
const IntrinToName *It =
llvm::lower_bound(Map, BuiltinID, [](const IntrinToName &L, unsigned Id) {
return L.Id < Id;
});
if (It == Map.end() || It->Id != BuiltinID)
return false;
StringRef FullName(&IntrinNames[It->FullName]);
if (AliasName == FullName)
return true;
if (It->ShortName == -1)
return false;
StringRef ShortName(&IntrinNames[It->ShortName]);
return AliasName == ShortName;
}

static bool ArmMveAliasValid(unsigned BuiltinID, StringRef AliasName) {
#include "clang/Basic/arm_mve_builtin_aliases.inc"
// The included file defines:
// - ArrayRef<IntrinToName> Map
// - const char IntrinNames[]
return ArmBuiltinAliasValid(BuiltinID, AliasName, Map, IntrinNames);
}

static bool ArmCdeAliasValid(unsigned BuiltinID, StringRef AliasName) {
#include "clang/Basic/arm_cde_builtin_aliases.inc"
return ArmBuiltinAliasValid(BuiltinID, AliasName, Map, IntrinNames);
}

static bool ArmSveAliasValid(ASTContext &Context, unsigned BuiltinID,
StringRef AliasName) {
if (Context.BuiltinInfo.isAuxBuiltinID(BuiltinID))
BuiltinID = Context.BuiltinInfo.getAuxBuiltinID(BuiltinID);
return BuiltinID >= AArch64::FirstSVEBuiltin &&
BuiltinID <= AArch64::LastSVEBuiltin;
}

static bool ArmSmeAliasValid(ASTContext &Context, unsigned BuiltinID,
StringRef AliasName) {
if (Context.BuiltinInfo.isAuxBuiltinID(BuiltinID))
BuiltinID = Context.BuiltinInfo.getAuxBuiltinID(BuiltinID);
return BuiltinID >= AArch64::FirstSMEBuiltin &&
BuiltinID <= AArch64::LastSMEBuiltin;
}

static void handleArmBuiltinAliasAttr(Sema &S, Decl *D, const ParsedAttr &AL) {
if (!AL.isArgIdent(0)) {
S.Diag(AL.getLoc(), diag::err_attribute_argument_n_type)
<< AL << 1 << AANT_ArgumentIdentifier;
return;
}

IdentifierInfo *Ident = AL.getArgAsIdent(0)->Ident;
unsigned BuiltinID = Ident->getBuiltinID();
StringRef AliasName = cast<FunctionDecl>(D)->getIdentifier()->getName();

bool IsAArch64 = S.Context.getTargetInfo().getTriple().isAArch64();
if ((IsAArch64 && !ArmSveAliasValid(S.Context, BuiltinID, AliasName) &&
!ArmSmeAliasValid(S.Context, BuiltinID, AliasName)) ||
(!IsAArch64 && !ArmMveAliasValid(BuiltinID, AliasName) &&
!ArmCdeAliasValid(BuiltinID, AliasName))) {
S.Diag(AL.getLoc(), diag::err_attribute_arm_builtin_alias);
return;
}

D->addAttr(::new (S.Context) ArmBuiltinAliasAttr(S.Context, AL, Ident));
}

static bool RISCVAliasValid(unsigned BuiltinID, StringRef AliasName) {
return BuiltinID >= RISCV::FirstRVVBuiltin &&
BuiltinID <= RISCV::LastRVVBuiltin;
}

static bool SYCLAliasValid(ASTContext &Context, unsigned BuiltinID) {
constexpr llvm::StringLiteral Prefix = "__builtin_intel_sycl";
return Context.BuiltinInfo.getName(BuiltinID).starts_with(Prefix);
Expand Down
Loading

0 comments on commit ab429fa

Please sign in to comment.