Skip to content

Commit 269fa4b

Browse files
committed
Merge branch 'sycl' into cperkins-deprecation-of-1.2.1-device_selectors
2 parents 1521dbb + 54655a2 commit 269fa4b

Some content is hidden

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

52 files changed

+1424
-791
lines changed

buildbot/dependency.conf

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[VERSIONS]
2-
# https://github.com/intel/llvm/releases/download/2022-WW13/oclcpuexp-2022.13.3.0.16_rel.tar.gz
3-
ocl_cpu_rt_ver=2022.13.3.0.16
4-
# https://github.com/intel/llvm/releases/download/2022-WW13/win-oclcpuexp-2022.13.3.0.16_rel.zip
5-
ocl_cpu_rt_ver_win=2022.13.3.0.16
2+
# https://github.com/intel/llvm/releases/download/2022-WW33/oclcpuexp-2022.14.8.0.04_rel.tar.gz
3+
ocl_cpu_rt_ver=2022.14.8.0.04
4+
# https://github.com/intel/llvm/releases/download/2022-WW33/win-oclcpuexp-2022.14.8.0.04_rel.zip
5+
ocl_cpu_rt_ver_win=2022.14.8.0.04
66
# Same GPU driver supports Level Zero and OpenCL
77
# https://github.com/intel/compute-runtime/releases/tag/22.31.23852
88
ocl_gpu_rt_ver=22.31.23852
@@ -14,27 +14,27 @@ intel_sycl_ver=build
1414
# TBB binaries can be built from sources following instructions under
1515
# https://github.com/oneapi-src/oneTBB/blob/master/cmake/README.md
1616
# or downloaded using links below:
17-
# https://github.com/oneapi-src/oneTBB/releases/download/v2021.5.0/oneapi-tbb-2021.5.0-lin.tgz
18-
tbb_ver=2021.6.0.755
19-
# https://github.com/oneapi-src/oneTBB/releases/download/v2021.5.0/oneapi-tbb-2021.5.0-win.zip
20-
tbb_ver_win=2021.6.0.755
17+
# https://github.com/oneapi-src/oneTBB/releases
18+
tbb_ver=2021.7.0.3128
19+
# https://github.com/oneapi-src/oneTBB/releases
20+
tbb_ver_win=2021.7.0_2943
2121

22-
# https://github.com/intel/llvm/releases/download/2022-WW13/fpgaemu-2022.13.3.0.16_rel.tar.gz
23-
ocl_fpga_emu_ver=2022.13.3.0.16
24-
# https://github.com/intel/llvm/releases/download/2022-WW13/win-fpgaemu-2022.13.3.0.16_rel.zip
25-
ocl_fpga_emu_ver_win=2022.13.3.0.16
26-
fpga_ver=20220120_000001
27-
fpga_ver_win=20220120_000001
22+
# https://github.com/intel/llvm/releases/download/2022-WW33/fpgaemu-2022.14.8.0.04_rel.tar.gz
23+
ocl_fpga_emu_ver=2022.14.8.0.04
24+
# https://github.com/intel/llvm/releases/download/2022-WW33/win-fpgaemu-2022.14.8.0.04_rel.zip
25+
ocl_fpga_emu_ver_win=2022.14.8.0.04
26+
fpga_ver=20220710_000003
27+
fpga_ver_win=20220710_000003
2828
# https://downloadmirror.intel.com/723911/igfx_win_101.1404.zip
2929
ocloc_ver_win=101.1404
3030

3131
[DRIVER VERSIONS]
32-
cpu_driver_lin=2022.13.3.0.16
33-
cpu_driver_win=2022.13.3.0.16
32+
cpu_driver_lin=2022.14.8.0.04
33+
cpu_driver_win=2022.14.8.0.04
3434
gpu_driver_lin=22.31.23852
3535
gpu_driver_win=101.1404
36-
fpga_driver_lin=2022.13.3.0.16
37-
fpga_driver_win=2022.13.3.0.16
36+
fpga_driver_lin=2022.14.8.0.04
37+
fpga_driver_win=2022.14.8.0.04
3838
# NVidia CUDA driver
3939
# TODO provide URL for CUDA driver
4040
nvidia_gpu_driver_lin=435.21

clang/include/clang/Basic/DiagnosticGroups.td

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,11 @@ def ImplicitIntFloatConversion : DiagGroup<"implicit-int-float-conversion",
109109
[ImplicitConstIntFloatConversion]>;
110110
def ObjCSignedCharBoolImplicitFloatConversion :
111111
DiagGroup<"objc-signed-char-bool-implicit-float-conversion">;
112+
def ImplicitFloatSizeConversion :
113+
DiagGroup<"implicit-float-size-conversion">;
112114
def ImplicitFloatConversion : DiagGroup<"implicit-float-conversion",
113115
[ImplicitIntFloatConversion,
114-
ObjCSignedCharBoolImplicitFloatConversion]>;
116+
ObjCSignedCharBoolImplicitFloatConversion, ImplicitFloatSizeConversion]>;
115117
def ImplicitFixedPointConversion : DiagGroup<"implicit-fixed-point-conversion">;
116118

117119
def FloatOverflowConversion : DiagGroup<"float-overflow-conversion">;

clang/include/clang/Basic/DiagnosticSemaKinds.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ def warn_float_compare_literal : Warning<
125125
def warn_double_const_requires_fp64 : Warning<
126126
"double precision constant requires %select{cl_khr_fp64|cl_khr_fp64 and __opencl_c_fp64}0, "
127127
"casting to single precision">;
128+
def warn_imp_float_size_conversion : Warning<
129+
"implicit conversion between floating point types of different sizes">,
130+
InGroup<ImplicitFloatSizeConversion>, DefaultIgnore;
128131
def err_half_const_requires_fp16 : Error<
129132
"half precision constant requires cl_khr_fp16">;
130133

clang/lib/Sema/SemaChecking.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13879,15 +13879,31 @@ static void CheckImplicitConversion(Sema &S, Expr *E, QualType T,
1387913879
Expr::EvalResult result;
1388013880
if (E->EvaluateAsRValue(result, S.Context)) {
1388113881
// Value might be a float, a float vector, or a float complex.
13882-
if (IsSameFloatAfterCast(result.Val,
13883-
S.Context.getFloatTypeSemantics(QualType(TargetBT, 0)),
13884-
S.Context.getFloatTypeSemantics(QualType(SourceBT, 0))))
13882+
if (IsSameFloatAfterCast(
13883+
result.Val,
13884+
S.Context.getFloatTypeSemantics(QualType(TargetBT, 0)),
13885+
S.Context.getFloatTypeSemantics(QualType(SourceBT, 0)))) {
13886+
if (S.getLangOpts().SYCLIsDevice)
13887+
S.SYCLDiagIfDeviceCode(CC, diag::warn_imp_float_size_conversion);
13888+
else
13889+
DiagnoseImpCast(S, E, T, CC,
13890+
diag::warn_imp_float_size_conversion);
1388513891
return;
13892+
}
1388613893
}
1388713894

1388813895
if (S.SourceMgr.isInSystemMacro(CC))
1388913896
return;
13890-
13897+
// If there is a precision conversion between floating point types when
13898+
// -Wimplicit-float-size-conversion is passed but
13899+
// -Wimplicit-float-conversion is not, make sure we emit at least a size
13900+
// warning.
13901+
if (S.Diags.isIgnored(diag::warn_impcast_float_precision, CC)) {
13902+
if (S.getLangOpts().SYCLIsDevice)
13903+
S.SYCLDiagIfDeviceCode(CC, diag::warn_imp_float_size_conversion);
13904+
else
13905+
DiagnoseImpCast(S, E, T, CC, diag::warn_imp_float_size_conversion);
13906+
}
1389113907
DiagnoseImpCast(S, E, T, CC, diag::warn_impcast_float_precision);
1389213908
}
1389313909
// ... or possibly if we're increasing rank, too

clang/test/Sema/conversion.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ void test13(long double v) {
288288
takes_int(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
289289
takes_long(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
290290
takes_longlong(v); // expected-warning {{implicit conversion turns floating-point number into integer}}
291-
takes_float(v); // expected-warning {{implicit conversion loses floating-point precision}}
291+
takes_float(v); // expected-warning {{implicit conversion loses floating-point precision}}
292292
takes_double(v); // expected-warning {{implicit conversion loses floating-point precision}}
293293
takes_longdouble(v);
294294
}
@@ -430,7 +430,6 @@ void test27(ushort16 constants) {
430430
ushort16 brBias = pairedConstants.s6; // expected-warning {{implicit conversion loses integer precision: 'uint32_t' (aka 'unsigned int') to 'ushort16'}}
431431
}
432432

433-
434433
float double2float_test1(double a) {
435434
return a; // expected-warning {{implicit conversion loses floating-point precision: 'double' to 'float'}}
436435
}
@@ -448,3 +447,4 @@ float double2float_test4(double a, float b) {
448447
b -= a; // expected-warning {{implicit conversion when assigning computation result loses floating-point precision: 'double' to 'float'}}
449448
return b;
450449
}
450+
float f = 1.0 / 2.0; // expected-warning {{implicit conversion between floating point types of different sizes}}

clang/test/Sema/ext_vector_casts.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ static void splats(int i, long l, __uint128_t t, float f, double d) {
116116

117117
vf = 1 + vf;
118118
vf = l + vf; // expected-warning {{implicit conversion from 'long' to 'float2' (vector of 2 'float' values) may lose precision}}
119-
vf = 2.0 + vf;
119+
vf = 2.0 + vf; // expected-warning {{implicit conversion between floating point types of different sizes}}
120120
vf = d + vf; // expected-warning {{implicit conversion loses floating-point precision}}
121121
vf = vf + 0xffffffff; // expected-warning {{implicit conversion from 'unsigned int' to 'float2' (vector of 2 'float' values) changes value from 4294967295 to 4294967296}}
122122
vf = vf + 2.1; // expected-warning {{implicit conversion loses floating-point precision}}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// RUN: %clang_cc1 -fsyntax-only -verify=precision-loss,precision-gain,size-change -Wimplicit-float-conversion -Wdouble-promotion -Wimplicit-float-size-conversion \
2+
// RUN: -triple x86_64-apple-darwin %s
3+
4+
// RUN: %clang_cc1 -fsyntax-only -verify=size-only,precision-gain,size-change -Wdouble-promotion -Wimplicit-float-size-conversion \
5+
// RUN: -triple x86_64-apple-darwin %s
6+
7+
// RUN: %clang_cc1 -fsyntax-only -verify=precision-increase -Wdouble-promotion \
8+
// RUN: -triple x86_64-apple-darwin %s
9+
10+
// RUN: %clang_cc1 -fsyntax-only -verify=precision-loss,size-change -Wimplicit-float-conversion \
11+
// RUN: -triple x86_64-apple-darwin %s
12+
13+
// RUN: %clang_cc1 -fsyntax-only -verify \
14+
// RUN: -triple x86_64-apple-darwin %s
15+
16+
// This test checks that floating point conversion warnings are emitted correctly when used in conjunction.
17+
18+
// expected-no-diagnostics
19+
// size-only-warning@+2 {{implicit conversion between floating point types of different sizes}}
20+
// precision-loss-warning@+1 {{implicit conversion loses floating-point precision: 'double' to 'float'}}
21+
float PrecisionLoss = 1.1;
22+
// precision-increase-warning@+2 {{implicit conversion increases floating-point precision: 'float' to 'double'}}
23+
// precision-gain-warning@+1 {{implicit conversion increases floating-point precision: 'float' to 'double'}}
24+
double PrecisionIncrease = 2.1f;
25+
// size-change-warning@+1 {{implicit conversion between floating point types of different sizes}}
26+
float SizeChange = 3.0;
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// RUN: %clang_cc1 -fsycl-is-device -triple spir64 -internal-isystem %S/Inputs -fsyntax-only -sycl-std=2020 -Wimplicit-float-size-conversion -verify=size-only,always-size %s
2+
// RUN: %clang_cc1 -fsycl-is-device -triple spir64 -internal-isystem %S/Inputs -fsyntax-only -sycl-std=2020 -Wimplicit-float-conversion -verify=always-size,precision-only %s
3+
// RUN: %clang_cc1 -fsycl-is-device -triple spir64 -internal-isystem %S/Inputs -fsyntax-only -sycl-std=2020 -Wimplicit-float-conversion -Wno-implicit-float-size-conversion -verify=prefer-precision %s
4+
// RUN: %clang_cc1 -fsycl-is-device -triple spir64 -internal-isystem %S/Inputs -fsyntax-only -sycl-std=2020 -Wno-implicit-float-conversion -verify %s
5+
6+
// This test checks that floating point conversion warnings are emitted correctly when used in conjunction.
7+
8+
#include "sycl.hpp"
9+
class kernelA;
10+
11+
using namespace sycl;
12+
13+
int main() {
14+
queue q;
15+
// expected-no-diagnostics
16+
// always-size-note@#KernelSingleTaskKernelFuncCall {{called by 'kernel_single_task<kernelA, (lambda}}
17+
q.submit([&](handler &h) {
18+
h.single_task<class kernelA>([=]() {
19+
float s = 1.0; // always-size-warning {{implicit conversion between floating point types of different sizes}}
20+
// prefer-precision-warning@+2 {{implicit conversion loses floating-point precision: 'double' to 'float'}}
21+
// precision-only-warning@+1 {{implicit conversion loses floating-point precision: 'double' to 'float'}}
22+
float d = 2.1; // size-only-warning {{implicit conversion between floating point types of different sizes}}
23+
});
24+
});
25+
return 0;
26+
}

devops/dependencies.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@
2525
"root": "{DEPS_ROOT}/tbb/lin"
2626
},
2727
"oclcpu": {
28-
"github_tag": "2022-WW13",
29-
"version": "2022.13.3.0.16",
30-
"url": "https://github.com/intel/llvm/releases/download/2022-WW13/oclcpuexp-2022.13.3.0.16_rel.tar.gz",
28+
"github_tag": "2022-WW33",
29+
"version": "2022.14.8.0.04",
30+
"url": "https://github.com/intel/llvm/releases/download/2022-WW33/oclcpuexp-2022.14.8.0.04_rel.tar.gz",
3131
"root": "{DEPS_ROOT}/opencl/runtime/linux/oclcpu"
3232
},
3333
"fpgaemu": {
34-
"github_tag": "2022-WW13",
35-
"version": "2022.13.3.0.16",
36-
"url": "https://github.com/intel/llvm/releases/download/2022-WW13/fpgaemu-2022.13.3.0.16_rel.tar.gz",
34+
"github_tag": "2022-WW33",
35+
"version": "2022.14.8.0.04",
36+
"url": "https://github.com/intel/llvm/releases/download/2022-WW33/fpgaemu-2022.14.8.0.04_rel.tar.gz",
3737
"root": "{DEPS_ROOT}/opencl/runtime/linux/oclfpgaemu"
3838
},
3939
"fpga": {
@@ -94,19 +94,19 @@
9494
"root": "{DEPS_ROOT}/tbb/win"
9595
},
9696
"oclcpu": {
97-
"github_tag": "2022-WW13",
98-
"version": "2022.13.3.0.16",
99-
"url": "https://github.com/intel/llvm/releases/download/2022-WW13/oclcpuexp-2022.13.3.0.16_rel.tar.gz",
97+
"github_tag": "2022-WW33",
98+
"version": "2022.14.8.0.04",
99+
"url": "https://github.com/intel/llvm/releases/download/2022-WW33/win-oclcpuexp-2022.14.8.0.04_rel.zip",
100100
"root": "{DEPS_ROOT}/opencl/runtime/linux/oclcpu"
101101
},
102102
"fpgaemu": {
103-
"github_tag": "2022-WW13",
104-
"version": "2022.13.3.0.16",
105-
"url": "https://github.com/intel/llvm/releases/download/2022-WW13/fpgaemu-2022.13.3.0.16_rel.tar.gz",
103+
"github_tag": "2022-WW33",
104+
"version": "2022.14.8.0.04",
105+
"url": "https://github.com/intel/llvm/releases/download/2022-WW33/win-fpgaemu-2022.14.8.0.04_rel.zip",
106106
"root": "{DEPS_ROOT}/opencl/runtime/linux/oclfpgaemu"
107107
},
108108
"fpga": {
109109
"root": "{ARCHIVE_ROOT}/comp/oclfpga/win"
110110
}
111111
}
112-
}
112+
}

llvm/include/llvm/SYCLLowerIR/LowerInvokeSimd.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,8 @@ class SYCLLowerInvokeSimdPass : public PassInfoMixin<SYCLLowerInvokeSimdPass> {
2424

2525
ModulePass *createSYCLLowerInvokeSimdPass();
2626
void initializeSYCLLowerInvokeSimdLegacyPassPass(PassRegistry &);
27+
28+
// Attribute added to functions which are known to be invoke_simd targets.
29+
constexpr char INVOKE_SIMD_DIRECT_TARGET_ATTR[] = "__invoke_simd_target";
30+
2731
} // namespace llvm

0 commit comments

Comments
 (0)