Skip to content

Commit b1c9f02

Browse files
committed
Merge from 'sycl' to 'sycl-web' (3 commits)
CONFLICT (content): Merge conflict in clang/include/clang/Basic/LangOptions.def CONFLICT (content): Merge conflict in clang/lib/Headers/__clang_spirv_builtins.h CONFLICT (content): Merge conflict in clang/test/Headers/spirv_ids.cpp CONFLICT (content): Merge conflict in llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp CONFLICT (content): Merge conflict in llvm/test/CodeGen/AMDGPU/llc-pipeline-npm.ll CONFLICT (content): Merge conflict in llvm/test/CodeGen/NVPTX/i8x4-instructions.ll CONFLICT (add/add): Merge conflict in llvm/test/CodeGen/NVPTX/pr126337.ll CONFLICT (content): Merge conflict in llvm/test/CodeGen/NVPTX/reduction-intrinsics.ll
2 parents 2d5f08a + 4946b5d commit b1c9f02

File tree

23 files changed

+708
-792
lines changed

23 files changed

+708
-792
lines changed

clang/include/clang/Basic/LangOptions.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ LANGOPT(SYCLCUDACompat, 1, 0,
281281
ENUM_LANGOPT(SYCLRangeRounding, SYCLRangeRoundingPreference, 2,
282282
SYCLRangeRoundingPreference::On, NotCompatible,
283283
"Preference for SYCL parallel_for range rounding")
284+
284285
LANGOPT(SYCLExperimentalRangeRounding, 1, 0, NotCompatible, "Use experimental parallel for range rounding")
285286
LANGOPT(SYCLEnableIntHeaderDiags, 1, 0, NotCompatible, "Enable diagnostics that require the SYCL integration header")
286287
LANGOPT(SYCLRTCMode, 1, 0, NotCompatible, "Compile in RTC mode")

libclc/libspirv/include/libspirv/generic/math/floatn.inc

Lines changed: 0 additions & 97 deletions
This file was deleted.

libclc/libspirv/include/libspirv/generic/math/minmag.inc

Lines changed: 0 additions & 26 deletions
This file was deleted.

libclc/libspirv/lib/generic/geometric/fast_normalize.cl

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#include <clc/geometric/clc_fast_normalize.h>
910
#include <libspirv/spirv.h>
1011

11-
_CLC_OVERLOAD _CLC_DEF float __spirv_ocl_fast_normalize(float p) {
12-
return __spirv_ocl_normalize(p);
13-
}
14-
15-
#define __CLC_BODY <fast_normalize.inc>
12+
#define FUNCTION __spirv_ocl_fast_normalize
13+
#define __IMPL_FUNCTION(x) __clc_fast_normalize
14+
#define __CLC_GEOMETRIC_RET_GENTYPE
15+
#define __CLC_BODY <clc/geometric/unary_def.inc>
1616
#define __FLOAT_ONLY
17-
#include <libspirv/generic/math/floatn.inc>
18-
#undef __FLOAT_ONLY
17+
#include <clc/math/gentype.inc>

libclc/libspirv/lib/generic/geometric/fast_normalize.inc

Lines changed: 0 additions & 17 deletions
This file was deleted.

libclc/libspirv/lib/generic/geometric/normalize.cl

Lines changed: 6 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -6,86 +6,12 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#include <clc/clc_convert.h>
10-
#include <clc/relational/clc_all.h>
9+
#include <clc/geometric/clc_normalize.h>
1110
#include <libspirv/spirv.h>
1211

13-
#define HALF_MAX_SQRT 0x1.0p+8h
14-
#define HALF_MIN_SQRT 0x1.0p-8h
12+
#define FUNCTION __spirv_ocl_normalize
13+
#define __IMPL_FUNCTION(x) __clc_normalize
14+
#define __CLC_GEOMETRIC_RET_GENTYPE
15+
#define __CLC_BODY <clc/geometric/unary_def.inc>
1516

16-
#define _CLC_SPIRV_NORMALIZE_IMPL(FP_TYPE, FLOAT_MARK, INT_TYPE, VLEN, \
17-
MAX_SQRT, MIN_SQRT) \
18-
_CLC_OVERLOAD _CLC_DEF FP_TYPE##VLEN __spirv_ocl_normalize( \
19-
FP_TYPE##VLEN p) { \
20-
if (__clc_all(p == (FP_TYPE##VLEN)0.0##FLOAT_MARK)) \
21-
return p; \
22-
FP_TYPE l2 = __spirv_Dot(p, p); \
23-
if (l2 < FLT_MIN) { \
24-
p *= MAX_SQRT; \
25-
l2 = __spirv_Dot(p, p); \
26-
} else if (l2 == INFINITY) { \
27-
p *= MIN_SQRT; \
28-
l2 = __spirv_Dot(p, p); \
29-
if (l2 == INFINITY) { \
30-
p = __spirv_ocl_copysign( \
31-
__spirv_ocl_select( \
32-
(FP_TYPE##VLEN)0.0##FLOAT_MARK, \
33-
(FP_TYPE##VLEN)1.0##FLOAT_MARK, \
34-
__clc_convert_##INT_TYPE##VLEN(__spirv_IsInf(p))), \
35-
p); \
36-
l2 = __spirv_Dot(p, p); \
37-
} \
38-
} \
39-
return p * __spirv_ocl_rsqrt(l2); \
40-
}
41-
42-
#define _CLC_SPIRV_NORMALIZE(VLEN) \
43-
_CLC_SPIRV_NORMALIZE_IMPL(float, f, int, VLEN, 0x1.0p+86F, 0x1.0p-65f)
44-
45-
_CLC_OVERLOAD _CLC_DEF float __spirv_ocl_normalize(float p) {
46-
return __spirv_ocl_sign(p);
47-
}
48-
49-
_CLC_SPIRV_NORMALIZE(2)
50-
_CLC_SPIRV_NORMALIZE(3)
51-
_CLC_SPIRV_NORMALIZE(4)
52-
53-
#undef _CLC_SPIRV_NORMALIZE
54-
55-
#ifdef cl_khr_fp64
56-
57-
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
58-
59-
#define _CLC_SPIRV_NORMALIZE(VLEN) \
60-
_CLC_SPIRV_NORMALIZE_IMPL(double, , long, VLEN, 0x1.0p+563, 0x1.0p-513)
61-
62-
_CLC_OVERLOAD _CLC_DEF double __spirv_ocl_normalize(double p) {
63-
return __spirv_ocl_sign(p);
64-
}
65-
66-
_CLC_SPIRV_NORMALIZE(2)
67-
_CLC_SPIRV_NORMALIZE(3)
68-
_CLC_SPIRV_NORMALIZE(4)
69-
70-
#undef _CLC_SPIRV_NORMALIZE
71-
72-
#endif
73-
74-
#ifdef cl_khr_fp16
75-
76-
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
77-
78-
#define _CLC_SPIRV_NORMALIZE(VLEN) \
79-
_CLC_SPIRV_NORMALIZE_IMPL(half, h, short, VLEN, HALF_MAX_SQRT, HALF_MIN_SQRT)
80-
81-
_CLC_OVERLOAD _CLC_DEF half __spirv_ocl_normalize(half p) {
82-
return __spirv_ocl_sign(p);
83-
}
84-
85-
_CLC_SPIRV_NORMALIZE(2)
86-
_CLC_SPIRV_NORMALIZE(3)
87-
_CLC_SPIRV_NORMALIZE(4)
88-
89-
#undef _CLC_SPIRV_NORMALIZE
90-
91-
#endif
17+
#include <clc/math/gentype.inc>

llvm-spirv/.clang-tidy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Checks: |
99
-misc-no-recursion,
1010
-misc-non-private-member-variables-in-classes,
1111
-misc-unused-parameters,
12+
-misc-use-anonymous-namespace,
1213
readability-identifier-naming
1314
WarningsAsErrors: |
1415
llvm-*,
@@ -19,6 +20,7 @@ WarningsAsErrors: |
1920
-misc-no-recursion,
2021
-misc-non-private-member-variables-in-classes,
2122
-misc-unused-parameters,
23+
-misc-use-anonymous-namespace,
2224
readability-identifier-naming
2325
CheckOptions:
2426
- key: readability-identifier-naming.ClassCase

llvm-spirv/lib/SPIRV/SPIRVToOCL.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,22 @@ SPIRVToOCLBase::mutateCallImageOperands(CallInst *CI, StringRef NewFuncName,
761761
return Mutator;
762762
}
763763

764+
static bool isOCLDepthImage(Type *Ty) {
765+
if (auto *TET = dyn_cast<TargetExtType>(Ty)) {
766+
if (TET->getName() != "spirv.Image")
767+
return false;
768+
assert(TET->getNumIntParameters() > 2 &&
769+
"unexpected image TargetExtType parameter count");
770+
return TET->getIntParameter(1);
771+
}
772+
773+
StringRef ImageTypeName;
774+
if (isOCLImageType(Ty, &ImageTypeName))
775+
return ImageTypeName.contains("_depth_");
776+
777+
return false;
778+
}
779+
764780
void SPIRVToOCLBase::visitCallSPIRVImageSampleExplicitLodBuiltIn(CallInst *CI,
765781
Op OC) {
766782
Type *T = CI->getType();
@@ -772,12 +788,8 @@ void SPIRVToOCLBase::visitCallSPIRVImageSampleExplicitLodBuiltIn(CallInst *CI,
772788
CallInst *CallSampledImg = cast<CallInst>(CI->getArgOperand(0));
773789
auto Img = getCallValue(CallSampledImg, 0);
774790
auto Sampler = getCallValue(CallSampledImg, 1);
775-
bool IsDepthImage = false;
791+
const bool IsDepthImage = isOCLDepthImage(Img.second);
776792
Mutator.mapArg(0, [&](Value *SampledImg) {
777-
StringRef ImageTypeName;
778-
if (isOCLImageType(Img.second, &ImageTypeName))
779-
IsDepthImage = ImageTypeName.contains("_depth_");
780-
781793
if (CallSampledImg->hasOneUse()) {
782794
CallSampledImg->replaceAllUsesWith(
783795
PoisonValue::get(CallSampledImg->getType()));

llvm-spirv/lib/SPIRV/SPIRVUtil.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1887,8 +1887,10 @@ bool checkTypeForSPIRVExtendedInstLowering(IntrinsicInst *II, SPIRVModule *BM) {
18871887
case Intrinsic::log:
18881888
case Intrinsic::log10:
18891889
case Intrinsic::log2:
1890+
case Intrinsic::maximumnum:
18901891
case Intrinsic::maximum:
18911892
case Intrinsic::maxnum:
1893+
case Intrinsic::minimumnum:
18921894
case Intrinsic::minimum:
18931895
case Intrinsic::minnum:
18941896
case Intrinsic::nearbyint:

llvm-spirv/lib/SPIRV/SPIRVWriter.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3937,10 +3937,12 @@ bool LLVMToSPIRVBase::isKnownIntrinsic(Intrinsic::ID Id) {
39373937
case Intrinsic::log:
39383938
case Intrinsic::log10:
39393939
case Intrinsic::log2:
3940+
case Intrinsic::maximumnum:
39403941
case Intrinsic::maximum:
39413942
case Intrinsic::maxnum:
39423943
case Intrinsic::smax:
39433944
case Intrinsic::umax:
3945+
case Intrinsic::minimumnum:
39443946
case Intrinsic::minimum:
39453947
case Intrinsic::minnum:
39463948
case Intrinsic::smin:
@@ -4079,12 +4081,12 @@ static SPIRVWord getBuiltinIdForIntrinsic(Intrinsic::ID IID) {
40794081
return OpenCLLIB::Log10;
40804082
case Intrinsic::log2:
40814083
return OpenCLLIB::Log2;
4084+
case Intrinsic::maximumnum:
40824085
case Intrinsic::maximum:
4083-
return OpenCLLIB::Fmax;
40844086
case Intrinsic::maxnum:
40854087
return OpenCLLIB::Fmax;
4088+
case Intrinsic::minimumnum:
40864089
case Intrinsic::minimum:
4087-
return OpenCLLIB::Fmin;
40884090
case Intrinsic::minnum:
40894091
return OpenCLLIB::Fmin;
40904092
case Intrinsic::nearbyint:
@@ -4359,8 +4361,10 @@ SPIRVValue *LLVMToSPIRVBase::transIntrinsicInst(IntrinsicInst *II,
43594361
case Intrinsic::copysign:
43604362
case Intrinsic::pow:
43614363
case Intrinsic::powi:
4364+
case Intrinsic::maximumnum:
43624365
case Intrinsic::maximum:
43634366
case Intrinsic::maxnum:
4367+
case Intrinsic::minimumnum:
43644368
case Intrinsic::minimum:
43654369
case Intrinsic::minnum: {
43664370
if (!checkTypeForSPIRVExtendedInstLowering(II, BM))
@@ -7177,7 +7181,7 @@ bool runSpirvBackend(Module *M, std::string &Result, std::string &ErrMsg,
71777181
TargetTriple.setTriple(DefaultTriple);
71787182
TargetTriple.setArch(TargetTriple.getArch(),
71797183
spirvVersionToSubArch(TranslatorOpts.getMaxVersion()));
7180-
M->setTargetTriple(TargetTriple);
7184+
M->setTargetTriple(std::move(TargetTriple));
71817185
}
71827186

71837187
// Translate the Module into SPIR-V

0 commit comments

Comments
 (0)