r331053 - Test commit removing trailing whitespace
Author: stuart.brady Date: Fri Apr 27 09:11:56 2018 New Revision: 331053 URL: http://llvm.org/viewvc/llvm-project?rev=331053&view=rev Log: Test commit removing trailing whitespace Modified: cfe/trunk/lib/Sema/SemaDecl.cpp Modified: cfe/trunk/lib/Sema/SemaDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=331053&r1=331052&r2=331053&view=diff == --- cfe/trunk/lib/Sema/SemaDecl.cpp (original) +++ cfe/trunk/lib/Sema/SemaDecl.cpp Fri Apr 27 09:11:56 2018 @@ -6979,7 +6979,7 @@ NamedDecl *Sema::getShadowedDeclaration( // Don't warn if typedef declaration is part of a class if (D->getDeclContext()->isRecord()) return nullptr; - + if (!shouldWarnIfShadowedDecl(Diags, R)) return nullptr; ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 26db178 - [OpenCL][NFC] Refactor vloada_half and vstorea_half decls
Author: Stuart Brady Date: 2021-09-29T17:22:39+01:00 New Revision: 26db178cc2b39167a2fd69acfc8ba7ea564f3746 URL: https://github.com/llvm/llvm-project/commit/26db178cc2b39167a2fd69acfc8ba7ea564f3746 DIFF: https://github.com/llvm/llvm-project/commit/26db178cc2b39167a2fd69acfc8ba7ea564f3746.diff LOG: [OpenCL][NFC] Refactor vloada_half and vstorea_half decls Group them together with the vload_half and vstore_half decls for simplicity. Reviewed By: svenvh Differential Revision: https://reviews.llvm.org/D110636 Added: Modified: clang/lib/Sema/OpenCLBuiltins.td Removed: diff --git a/clang/lib/Sema/OpenCLBuiltins.td b/clang/lib/Sema/OpenCLBuiltins.td index 5d75c2bb1a84..2501e50b8968 100644 --- a/clang/lib/Sema/OpenCLBuiltins.td +++ b/clang/lib/Sema/OpenCLBuiltins.td @@ -808,9 +808,6 @@ multiclass VloadVstore addrspaces, bit defStores> { def : Builtin, Size, PointerType, AS>]>; def : Builtin, Size, PointerType, AS>]>; } - foreach name = ["vloada_half" # VSize] in { -def : Builtin, Size, PointerType, AS>]>; - } if defStores then { foreach name = ["vstore" # VSize] in { def : Builtin, Size, PointerType]>; @@ -825,12 +822,6 @@ multiclass VloadVstore addrspaces, bit defStores> { def : Builtin, Size, PointerType]>; def : Builtin, Size, PointerType]>; } -foreach rnd = ["", "_rte", "_rtz", "_rtp", "_rtn"] in { - foreach name = ["vstorea_half" # VSize # rnd] in { -def : Builtin, Size, PointerType]>; -def : Builtin, Size, PointerType]>; - } -} } } } @@ -849,7 +840,7 @@ multiclass VloadVstoreHalf addrspaces, bit defStores> { foreach AS = addrspaces in { def : Builtin<"vload_half", [Float, Size, PointerType, AS>]>; foreach VSize = [2, 3, 4, 8, 16] in { - foreach name = ["vload_half" # VSize] in { + foreach name = ["vload_half" # VSize, "vloada_half" # VSize] in { def : Builtin, Size, PointerType, AS>]>; } } @@ -860,7 +851,7 @@ multiclass VloadVstoreHalf addrspaces, bit defStores> { def : Builtin]>; } foreach VSize = [2, 3, 4, 8, 16] in { - foreach name = ["vstore_half" # VSize # rnd] in { + foreach name = ["vstore_half" # VSize # rnd, "vstorea_half" # VSize # rnd] in { def : Builtin, Size, PointerType]>; def : Builtin, Size, PointerType]>; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 86c2449 - [OpenCL][NFC] Test commit: tidy up whitespace in comment
Author: Stuart Brady Date: 2021-06-04T14:44:12+01:00 New Revision: 86c24493ea666a0ef91b7af884d616b0a181e849 URL: https://github.com/llvm/llvm-project/commit/86c24493ea666a0ef91b7af884d616b0a181e849 DIFF: https://github.com/llvm/llvm-project/commit/86c24493ea666a0ef91b7af884d616b0a181e849.diff LOG: [OpenCL][NFC] Test commit: tidy up whitespace in comment Added: Modified: clang/lib/Headers/opencl-c.h Removed: diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h index dcd325528f38b..9531e534a61bc 100644 --- a/clang/lib/Headers/opencl-c.h +++ b/clang/lib/Headers/opencl-c.h @@ -6400,8 +6400,7 @@ size_t __ovld __cnfn get_local_id(uint dimindx); * Returns the number of work-groups that will execute a * kernel for dimension identified by dimindx. * Valid values of dimindx are 0 to get_work_dim() - 1. - * For other values of dimindx, get_num_groups () returns - * 1. + * For other values of dimindx, get_num_groups() returns 1. * For clEnqueueTask, this always returns 1. */ size_t __ovld __cnfn get_num_groups(uint dimindx); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 333987b - [OpenCL] Add DWARF address spaces mapping for SPIR
Author: Jason Zheng Date: 2021-06-04T18:10:54+01:00 New Revision: 333987b0458926332e9a1f96869ef47da25fa9b1 URL: https://github.com/llvm/llvm-project/commit/333987b0458926332e9a1f96869ef47da25fa9b1 DIFF: https://github.com/llvm/llvm-project/commit/333987b0458926332e9a1f96869ef47da25fa9b1.diff LOG: [OpenCL] Add DWARF address spaces mapping for SPIR Extend debug info handling by adding DWARF address space mapping for SPIR, with corresponding test case. Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D103097 Added: clang/test/CodeGenOpenCL/spir-debug-info-pointer-address-space.cl Modified: clang/lib/Basic/Targets/SPIR.h Removed: diff --git a/clang/lib/Basic/Targets/SPIR.h b/clang/lib/Basic/Targets/SPIR.h index 638071d0cdce0..c429b27709ecb 100644 --- a/clang/lib/Basic/Targets/SPIR.h +++ b/clang/lib/Basic/Targets/SPIR.h @@ -117,6 +117,11 @@ class LLVM_LIBRARY_VISIBILITY SPIRTargetInfo : public TargetInfo { return TargetInfo::VoidPtrBuiltinVaList; } + Optional + getDWARFAddressSpace(unsigned AddressSpace) const override { +return AddressSpace; + } + CallingConvCheckResult checkCallingConvention(CallingConv CC) const override { return (CC == CC_SpirFunction || CC == CC_OpenCLKernel) ? CCCR_OK : CCCR_Warning; diff --git a/clang/test/CodeGenOpenCL/spir-debug-info-pointer-address-space.cl b/clang/test/CodeGenOpenCL/spir-debug-info-pointer-address-space.cl new file mode 100644 index 0..28b6c674c8ffd --- /dev/null +++ b/clang/test/CodeGenOpenCL/spir-debug-info-pointer-address-space.cl @@ -0,0 +1,23 @@ +// RUN: %clang_cc1 -cl-std=CL2.0 -debug-info-kind=limited -dwarf-version=5 -emit-llvm -O0 -triple spir-unknown-unknown -o - %s | FileCheck %s +// RUN: %clang_cc1 -cl-std=CL2.0 -debug-info-kind=limited -dwarf-version=5 -emit-llvm -O0 -triple spir64-unknown-unknown -o - %s | FileCheck %s + +// CHECK-DAG: ![[DWARF_ADDRESS_SPACE_GLOBAL:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}}, dwarfAddressSpace: 1) +// CHECK-DAG: ![[DWARF_ADDRESS_SPACE_CONSTANT:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}}, dwarfAddressSpace: 2) +// CHECK-DAG: ![[DWARF_ADDRESS_SPACE_LOCAL:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}}, dwarfAddressSpace: 3) +// CHECK-DAG: ![[DWARF_ADDRESS_SPACE_PRIVATE:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}}, dwarfAddressSpace: 0) +// CHECK-DAG: ![[DWARF_ADDRESS_SPACE_GENERIC:[0-9]+]] = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !{{[0-9]+}}, size: {{[0-9]+}}, dwarfAddressSpace: 4) + +// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar0", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_GLOBAL]], isLocal: false, isDefinition: true) +global int *FileVar0; + +// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar1", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_CONSTANT]], isLocal: false, isDefinition: true) +constant int *FileVar1; + +// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar2", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_LOCAL]], isLocal: false, isDefinition: true) +local int *FileVar2; + +// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar3", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_PRIVATE]], isLocal: false, isDefinition: true) +private int *FileVar3; + +// CHECK-DAG: distinct !DIGlobalVariable(name: "FileVar4", scope: !{{[0-9]+}}, file: !{{[0-9]+}}, line: {{[0-9]+}}, type: ![[DWARF_ADDRESS_SPACE_GENERIC]], isLocal: false, isDefinition: true) +int *FileVar4; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 9b14670 - [OpenCL] Add const attribute to ctz() builtins
Author: Stuart Brady Date: 2021-06-07T11:41:52+01:00 New Revision: 9b14670f3ca287ce949c4157e0f673c84da255a3 URL: https://github.com/llvm/llvm-project/commit/9b14670f3ca287ce949c4157e0f673c84da255a3 DIFF: https://github.com/llvm/llvm-project/commit/9b14670f3ca287ce949c4157e0f673c84da255a3.diff LOG: [OpenCL] Add const attribute to ctz() builtins Reviewed By: svenvh Differential Revision: https://reviews.llvm.org/D97725 Added: Modified: clang/lib/Headers/opencl-c.h clang/lib/Sema/OpenCLBuiltins.td Removed: diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h index 9531e534a61bc..bfdd9b84dcede 100644 --- a/clang/lib/Headers/opencl-c.h +++ b/clang/lib/Headers/opencl-c.h @@ -9354,54 +9354,54 @@ ulong16 __ovld __cnfn clz(ulong16 x); * component type of x, if x is a vector. */ #if defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) -char __ovld ctz(char x); -uchar __ovld ctz(uchar x); -char2 __ovld ctz(char2 x); -uchar2 __ovld ctz(uchar2 x); -char3 __ovld ctz(char3 x); -uchar3 __ovld ctz(uchar3 x); -char4 __ovld ctz(char4 x); -uchar4 __ovld ctz(uchar4 x); -char8 __ovld ctz(char8 x); -uchar8 __ovld ctz(uchar8 x); -char16 __ovld ctz(char16 x); -uchar16 __ovld ctz(uchar16 x); -short __ovld ctz(short x); -ushort __ovld ctz(ushort x); -short2 __ovld ctz(short2 x); -ushort2 __ovld ctz(ushort2 x); -short3 __ovld ctz(short3 x); -ushort3 __ovld ctz(ushort3 x); -short4 __ovld ctz(short4 x); -ushort4 __ovld ctz(ushort4 x); -short8 __ovld ctz(short8 x); -ushort8 __ovld ctz(ushort8 x); -short16 __ovld ctz(short16 x); -ushort16 __ovld ctz(ushort16 x); -int __ovld ctz(int x); -uint __ovld ctz(uint x); -int2 __ovld ctz(int2 x); -uint2 __ovld ctz(uint2 x); -int3 __ovld ctz(int3 x); -uint3 __ovld ctz(uint3 x); -int4 __ovld ctz(int4 x); -uint4 __ovld ctz(uint4 x); -int8 __ovld ctz(int8 x); -uint8 __ovld ctz(uint8 x); -int16 __ovld ctz(int16 x); -uint16 __ovld ctz(uint16 x); -long __ovld ctz(long x); -ulong __ovld ctz(ulong x); -long2 __ovld ctz(long2 x); -ulong2 __ovld ctz(ulong2 x); -long3 __ovld ctz(long3 x); -ulong3 __ovld ctz(ulong3 x); -long4 __ovld ctz(long4 x); -ulong4 __ovld ctz(ulong4 x); -long8 __ovld ctz(long8 x); -ulong8 __ovld ctz(ulong8 x); -long16 __ovld ctz(long16 x); -ulong16 __ovld ctz(ulong16 x); +char __ovld __cnfn ctz(char x); +uchar __ovld __cnfn ctz(uchar x); +char2 __ovld __cnfn ctz(char2 x); +uchar2 __ovld __cnfn ctz(uchar2 x); +char3 __ovld __cnfn ctz(char3 x); +uchar3 __ovld __cnfn ctz(uchar3 x); +char4 __ovld __cnfn ctz(char4 x); +uchar4 __ovld __cnfn ctz(uchar4 x); +char8 __ovld __cnfn ctz(char8 x); +uchar8 __ovld __cnfn ctz(uchar8 x); +char16 __ovld __cnfn ctz(char16 x); +uchar16 __ovld __cnfn ctz(uchar16 x); +short __ovld __cnfn ctz(short x); +ushort __ovld __cnfn ctz(ushort x); +short2 __ovld __cnfn ctz(short2 x); +ushort2 __ovld __cnfn ctz(ushort2 x); +short3 __ovld __cnfn ctz(short3 x); +ushort3 __ovld __cnfn ctz(ushort3 x); +short4 __ovld __cnfn ctz(short4 x); +ushort4 __ovld __cnfn ctz(ushort4 x); +short8 __ovld __cnfn ctz(short8 x); +ushort8 __ovld __cnfn ctz(ushort8 x); +short16 __ovld __cnfn ctz(short16 x); +ushort16 __ovld __cnfn ctz(ushort16 x); +int __ovld __cnfn ctz(int x); +uint __ovld __cnfn ctz(uint x); +int2 __ovld __cnfn ctz(int2 x); +uint2 __ovld __cnfn ctz(uint2 x); +int3 __ovld __cnfn ctz(int3 x); +uint3 __ovld __cnfn ctz(uint3 x); +int4 __ovld __cnfn ctz(int4 x); +uint4 __ovld __cnfn ctz(uint4 x); +int8 __ovld __cnfn ctz(int8 x); +uint8 __ovld __cnfn ctz(uint8 x); +int16 __ovld __cnfn ctz(int16 x); +uint16 __ovld __cnfn ctz(uint16 x); +long __ovld __cnfn ctz(long x); +ulong __ovld __cnfn ctz(ulong x); +long2 __ovld __cnfn ctz(long2 x); +ulong2 __ovld __cnfn ctz(ulong2 x); +long3 __ovld __cnfn ctz(long3 x); +ulong3 __ovld __cnfn ctz(ulong3 x); +long4 __ovld __cnfn ctz(long4 x); +ulong4 __ovld __cnfn ctz(ulong4 x); +long8 __ovld __cnfn ctz(long8 x); +ulong8 __ovld __cnfn ctz(ulong8 x); +long16 __ovld __cnfn ctz(long16 x); +ulong16 __ovld __cnfn ctz(ulong16 x); #endif //defined(__OPENCL_CPP_VERSION__) || (__OPENCL_C_VERSION__ >= CL_VERSION_2_0) /** diff --git a/clang/lib/Sema/OpenCLBuiltins.td b/clang/lib/Sema/OpenCLBuiltins.td index efb540cd19679..2cd41b6c2bd32 100644 --- a/clang/lib/Sema/OpenCLBuiltins.td +++ b/clang/lib/Sema/OpenCLBuiltins.td @@ -606,7 +606,7 @@ let MinVersion = CL12 in { } let MinVersion = CL20 in { foreach name = ["ctz"] in { -def : Builtin; +def : Builtin; } } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] e47027d - [OpenCL] Use DW_LANG_OpenCL language tag for OpenCL C
Author: Stuart Brady Date: 2021-06-25T11:48:42+01:00 New Revision: e47027d091deb4a0774eab911411a27092a60916 URL: https://github.com/llvm/llvm-project/commit/e47027d091deb4a0774eab911411a27092a60916 DIFF: https://github.com/llvm/llvm-project/commit/e47027d091deb4a0774eab911411a27092a60916.diff LOG: [OpenCL] Use DW_LANG_OpenCL language tag for OpenCL C Note regarding C++ for OpenCL: When compiling C++ for OpenCL, DW_LANG_C_plus_plus* is emitted. There is no DWARF language code defined for C++ for OpenCL as of yet, but DWARF issue 210514.1 has been raised to request one. In the mean time, continuing to emit DW_LANG_C_plus_plus* for C++ for OpenCL allows the potential to distinguish between C++ for OpenCL and OpenCL C in !DICompileUnit nodes, whereas using DW_LANG_OpenCL for C++ for OpenCL would prevent this. This change therefore leaves C++ for OpenCL as-is. Reviewed By: shchenz, Anastasia Differential Revision: https://reviews.llvm.org/D104118 Added: clang/test/CodeGenOpenCL/debug-info-programming-language.cl Modified: clang/lib/CodeGen/CGDebugInfo.cpp Removed: diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index 08d15bef93800..8a5b246275b15 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -578,6 +578,9 @@ void CGDebugInfo::CreateCompileUnit() { LangTag = llvm::dwarf::DW_LANG_C_plus_plus; } else if (LO.ObjC) { LangTag = llvm::dwarf::DW_LANG_ObjC; + } else if (LO.OpenCL && (!CGM.getCodeGenOpts().DebugStrictDwarf || + CGM.getCodeGenOpts().DwarfVersion >= 5)) { +LangTag = llvm::dwarf::DW_LANG_OpenCL; } else if (LO.RenderScript) { LangTag = llvm::dwarf::DW_LANG_GOOGLE_RenderScript; } else if (LO.C99) { diff --git a/clang/test/CodeGenOpenCL/debug-info-programming-language.cl b/clang/test/CodeGenOpenCL/debug-info-programming-language.cl new file mode 100644 index 0..fc57a41e5a299 --- /dev/null +++ b/clang/test/CodeGenOpenCL/debug-info-programming-language.cl @@ -0,0 +1,17 @@ +// RUN: %clang_cc1 -dwarf-version=5 -emit-llvm -triple %itanium_abi_triple %s -o - \ +// RUN: -x cl -O0 -disable-llvm-passes -debug-info-kind=limited \ +// RUN: | FileCheck --check-prefix=CHECK-OPENCL %s +// RUN: %clang_cc1 -dwarf-version=3 -emit-llvm -triple %itanium_abi_triple %s -o - \ +// RUN: -x cl -O0 -disable-llvm-passes -debug-info-kind=limited \ +// RUN: | FileCheck --check-prefix=CHECK-OPENCL %s +// RUN: %clang_cc1 -dwarf-version=3 -gstrict-dwarf -emit-llvm -triple %itanium_abi_triple %s -o - \ +// RUN: -x cl -O0 -disable-llvm-passes -debug-info-kind=limited \ +// RUN: | FileCheck --check-prefix=CHECK-C99 %s +// RUN: %clang_cc1 -dwarf-version=5 -gstrict-dwarf -emit-llvm -triple %itanium_abi_triple %s -o - \ +// RUN: -x cl -O0 -disable-llvm-passes -debug-info-kind=limited \ +// RUN: | FileCheck --check-prefix=CHECK-OPENCL %s + +kernel void empty() {} + +// CHECK-OPENCL: distinct !DICompileUnit(language: DW_LANG_OpenCL, +// CHECK-C99: distinct !DICompileUnit(language: DW_LANG_C99, ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 1a376bc - [OpenCL] Add pure attribute to vload builtins
Author: Stuart Brady Date: 2021-12-16T14:55:31Z New Revision: 1a376bc285358037a5edc48b0d125f91bf5a69ca URL: https://github.com/llvm/llvm-project/commit/1a376bc285358037a5edc48b0d125f91bf5a69ca DIFF: https://github.com/llvm/llvm-project/commit/1a376bc285358037a5edc48b0d125f91bf5a69ca.diff LOG: [OpenCL] Add pure attribute to vload builtins Use the "pure" attribute (or "readonly") for the vload, vload_half and vloada_half builtins. Reviewed By: svenvh Differential Revision: https://reviews.llvm.org/D110742 Added: Modified: clang/lib/Headers/opencl-c.h clang/lib/Sema/OpenCLBuiltins.td Removed: diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h index 32af848a94c4f..77a7a8b9bb3a1 100644 --- a/clang/lib/Headers/opencl-c.h +++ b/clang/lib/Headers/opencl-c.h @@ -11190,305 +11190,305 @@ half16 __ovld __cnfn select(half16 a, half16 b, ushort16 c); * 64-bit aligned if gentype is long, ulong, double. */ -char2 __ovld vload2(size_t offset, const __constant char *p); -uchar2 __ovld vload2(size_t offset, const __constant uchar *p); -short2 __ovld vload2(size_t offset, const __constant short *p); -ushort2 __ovld vload2(size_t offset, const __constant ushort *p); -int2 __ovld vload2(size_t offset, const __constant int *p); -uint2 __ovld vload2(size_t offset, const __constant uint *p); -long2 __ovld vload2(size_t offset, const __constant long *p); -ulong2 __ovld vload2(size_t offset, const __constant ulong *p); -float2 __ovld vload2(size_t offset, const __constant float *p); -char3 __ovld vload3(size_t offset, const __constant char *p); -uchar3 __ovld vload3(size_t offset, const __constant uchar *p); -short3 __ovld vload3(size_t offset, const __constant short *p); -ushort3 __ovld vload3(size_t offset, const __constant ushort *p); -int3 __ovld vload3(size_t offset, const __constant int *p); -uint3 __ovld vload3(size_t offset, const __constant uint *p); -long3 __ovld vload3(size_t offset, const __constant long *p); -ulong3 __ovld vload3(size_t offset, const __constant ulong *p); -float3 __ovld vload3(size_t offset, const __constant float *p); -char4 __ovld vload4(size_t offset, const __constant char *p); -uchar4 __ovld vload4(size_t offset, const __constant uchar *p); -short4 __ovld vload4(size_t offset, const __constant short *p); -ushort4 __ovld vload4(size_t offset, const __constant ushort *p); -int4 __ovld vload4(size_t offset, const __constant int *p); -uint4 __ovld vload4(size_t offset, const __constant uint *p); -long4 __ovld vload4(size_t offset, const __constant long *p); -ulong4 __ovld vload4(size_t offset, const __constant ulong *p); -float4 __ovld vload4(size_t offset, const __constant float *p); -char8 __ovld vload8(size_t offset, const __constant char *p); -uchar8 __ovld vload8(size_t offset, const __constant uchar *p); -short8 __ovld vload8(size_t offset, const __constant short *p); -ushort8 __ovld vload8(size_t offset, const __constant ushort *p); -int8 __ovld vload8(size_t offset, const __constant int *p); -uint8 __ovld vload8(size_t offset, const __constant uint *p); -long8 __ovld vload8(size_t offset, const __constant long *p); -ulong8 __ovld vload8(size_t offset, const __constant ulong *p); -float8 __ovld vload8(size_t offset, const __constant float *p); -char16 __ovld vload16(size_t offset, const __constant char *p); -uchar16 __ovld vload16(size_t offset, const __constant uchar *p); -short16 __ovld vload16(size_t offset, const __constant short *p); -ushort16 __ovld vload16(size_t offset, const __constant ushort *p); -int16 __ovld vload16(size_t offset, const __constant int *p); -uint16 __ovld vload16(size_t offset, const __constant uint *p); -long16 __ovld vload16(size_t offset, const __constant long *p); -ulong16 __ovld vload16(size_t offset, const __constant ulong *p); -float16 __ovld vload16(size_t offset, const __constant float *p); +char2 __ovld __purefn vload2(size_t offset, const __constant char *p); +uchar2 __ovld __purefn vload2(size_t offset, const __constant uchar *p); +short2 __ovld __purefn vload2(size_t offset, const __constant short *p); +ushort2 __ovld __purefn vload2(size_t offset, const __constant ushort *p); +int2 __ovld __purefn vload2(size_t offset, const __constant int *p); +uint2 __ovld __purefn vload2(size_t offset, const __constant uint *p); +long2 __ovld __purefn vload2(size_t offset, const __constant long *p); +ulong2 __ovld __purefn vload2(size_t offset, const __constant ulong *p); +float2 __ovld __purefn vload2(size_t offset, const __constant float *p); +char3 __ovld __purefn vload3(size_t offset, const __constant char *p); +uchar3 __ovld __purefn vload3(size_t offset, const __constant uchar *p); +short3 __ovld __purefn vload3(size_t offset, const __constant short *p); +ushort3 __ovld __purefn vload3(size_t offset, const __constant ushort *p); +int3 __ovld __purefn vload3(size_t offset, const __constant int *p); +uint3 __ovld __purefn
[clang] 5aefb1d - Revert "[OpenCL] Add pure attribute to vload builtins"
Author: Stuart Brady Date: 2021-12-16T15:16:41Z New Revision: 5aefb1dc1eabd9286da9511b5227aa83443091b9 URL: https://github.com/llvm/llvm-project/commit/5aefb1dc1eabd9286da9511b5227aa83443091b9 DIFF: https://github.com/llvm/llvm-project/commit/5aefb1dc1eabd9286da9511b5227aa83443091b9.diff LOG: Revert "[OpenCL] Add pure attribute to vload builtins" This reverts commit 1a376bc285358037a5edc48b0d125f91bf5a69ca. This broke clang/test/SemaOpenCL/fdeclare-opencl-builtins.cl Added: Modified: clang/lib/Headers/opencl-c.h clang/lib/Sema/OpenCLBuiltins.td Removed: diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h index 77a7a8b9bb3a1..32af848a94c4f 100644 --- a/clang/lib/Headers/opencl-c.h +++ b/clang/lib/Headers/opencl-c.h @@ -11190,305 +11190,305 @@ half16 __ovld __cnfn select(half16 a, half16 b, ushort16 c); * 64-bit aligned if gentype is long, ulong, double. */ -char2 __ovld __purefn vload2(size_t offset, const __constant char *p); -uchar2 __ovld __purefn vload2(size_t offset, const __constant uchar *p); -short2 __ovld __purefn vload2(size_t offset, const __constant short *p); -ushort2 __ovld __purefn vload2(size_t offset, const __constant ushort *p); -int2 __ovld __purefn vload2(size_t offset, const __constant int *p); -uint2 __ovld __purefn vload2(size_t offset, const __constant uint *p); -long2 __ovld __purefn vload2(size_t offset, const __constant long *p); -ulong2 __ovld __purefn vload2(size_t offset, const __constant ulong *p); -float2 __ovld __purefn vload2(size_t offset, const __constant float *p); -char3 __ovld __purefn vload3(size_t offset, const __constant char *p); -uchar3 __ovld __purefn vload3(size_t offset, const __constant uchar *p); -short3 __ovld __purefn vload3(size_t offset, const __constant short *p); -ushort3 __ovld __purefn vload3(size_t offset, const __constant ushort *p); -int3 __ovld __purefn vload3(size_t offset, const __constant int *p); -uint3 __ovld __purefn vload3(size_t offset, const __constant uint *p); -long3 __ovld __purefn vload3(size_t offset, const __constant long *p); -ulong3 __ovld __purefn vload3(size_t offset, const __constant ulong *p); -float3 __ovld __purefn vload3(size_t offset, const __constant float *p); -char4 __ovld __purefn vload4(size_t offset, const __constant char *p); -uchar4 __ovld __purefn vload4(size_t offset, const __constant uchar *p); -short4 __ovld __purefn vload4(size_t offset, const __constant short *p); -ushort4 __ovld __purefn vload4(size_t offset, const __constant ushort *p); -int4 __ovld __purefn vload4(size_t offset, const __constant int *p); -uint4 __ovld __purefn vload4(size_t offset, const __constant uint *p); -long4 __ovld __purefn vload4(size_t offset, const __constant long *p); -ulong4 __ovld __purefn vload4(size_t offset, const __constant ulong *p); -float4 __ovld __purefn vload4(size_t offset, const __constant float *p); -char8 __ovld __purefn vload8(size_t offset, const __constant char *p); -uchar8 __ovld __purefn vload8(size_t offset, const __constant uchar *p); -short8 __ovld __purefn vload8(size_t offset, const __constant short *p); -ushort8 __ovld __purefn vload8(size_t offset, const __constant ushort *p); -int8 __ovld __purefn vload8(size_t offset, const __constant int *p); -uint8 __ovld __purefn vload8(size_t offset, const __constant uint *p); -long8 __ovld __purefn vload8(size_t offset, const __constant long *p); -ulong8 __ovld __purefn vload8(size_t offset, const __constant ulong *p); -float8 __ovld __purefn vload8(size_t offset, const __constant float *p); -char16 __ovld __purefn vload16(size_t offset, const __constant char *p); -uchar16 __ovld __purefn vload16(size_t offset, const __constant uchar *p); -short16 __ovld __purefn vload16(size_t offset, const __constant short *p); -ushort16 __ovld __purefn vload16(size_t offset, const __constant ushort *p); -int16 __ovld __purefn vload16(size_t offset, const __constant int *p); -uint16 __ovld __purefn vload16(size_t offset, const __constant uint *p); -long16 __ovld __purefn vload16(size_t offset, const __constant long *p); -ulong16 __ovld __purefn vload16(size_t offset, const __constant ulong *p); -float16 __ovld __purefn vload16(size_t offset, const __constant float *p); +char2 __ovld vload2(size_t offset, const __constant char *p); +uchar2 __ovld vload2(size_t offset, const __constant uchar *p); +short2 __ovld vload2(size_t offset, const __constant short *p); +ushort2 __ovld vload2(size_t offset, const __constant ushort *p); +int2 __ovld vload2(size_t offset, const __constant int *p); +uint2 __ovld vload2(size_t offset, const __constant uint *p); +long2 __ovld vload2(size_t offset, const __constant long *p); +ulong2 __ovld vload2(size_t offset, const __constant ulong *p); +float2 __ovld vload2(size_t offset, const __constant float *p); +char3 __ovld vload3(size_t offset, const __constant char *p); +uchar3 __ovld vload3(size_t offset, con
[clang] ceb8055 - [OpenCL] Add pure attribute to vload builtins
Author: Stuart Brady Date: 2021-12-16T18:30:58Z New Revision: ceb80557e523f1894799ebadd5d985e11ee80461 URL: https://github.com/llvm/llvm-project/commit/ceb80557e523f1894799ebadd5d985e11ee80461 DIFF: https://github.com/llvm/llvm-project/commit/ceb80557e523f1894799ebadd5d985e11ee80461.diff LOG: [OpenCL] Add pure attribute to vload builtins Use the "pure" attribute (or "readonly") for the vload, vload_half and vloada_half builtins. Includes test changes to SemaOpenCL/fdeclare-opencl-builtins.cl to avoid triggering unused-result warnings. Reviewed By: svenvh Differential Revision: https://reviews.llvm.org/D110742 Added: Modified: clang/lib/Headers/opencl-c.h clang/lib/Sema/OpenCLBuiltins.td clang/test/SemaOpenCL/fdeclare-opencl-builtins.cl Removed: diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h index 32af848a94c4f..77a7a8b9bb3a1 100644 --- a/clang/lib/Headers/opencl-c.h +++ b/clang/lib/Headers/opencl-c.h @@ -11190,305 +11190,305 @@ half16 __ovld __cnfn select(half16 a, half16 b, ushort16 c); * 64-bit aligned if gentype is long, ulong, double. */ -char2 __ovld vload2(size_t offset, const __constant char *p); -uchar2 __ovld vload2(size_t offset, const __constant uchar *p); -short2 __ovld vload2(size_t offset, const __constant short *p); -ushort2 __ovld vload2(size_t offset, const __constant ushort *p); -int2 __ovld vload2(size_t offset, const __constant int *p); -uint2 __ovld vload2(size_t offset, const __constant uint *p); -long2 __ovld vload2(size_t offset, const __constant long *p); -ulong2 __ovld vload2(size_t offset, const __constant ulong *p); -float2 __ovld vload2(size_t offset, const __constant float *p); -char3 __ovld vload3(size_t offset, const __constant char *p); -uchar3 __ovld vload3(size_t offset, const __constant uchar *p); -short3 __ovld vload3(size_t offset, const __constant short *p); -ushort3 __ovld vload3(size_t offset, const __constant ushort *p); -int3 __ovld vload3(size_t offset, const __constant int *p); -uint3 __ovld vload3(size_t offset, const __constant uint *p); -long3 __ovld vload3(size_t offset, const __constant long *p); -ulong3 __ovld vload3(size_t offset, const __constant ulong *p); -float3 __ovld vload3(size_t offset, const __constant float *p); -char4 __ovld vload4(size_t offset, const __constant char *p); -uchar4 __ovld vload4(size_t offset, const __constant uchar *p); -short4 __ovld vload4(size_t offset, const __constant short *p); -ushort4 __ovld vload4(size_t offset, const __constant ushort *p); -int4 __ovld vload4(size_t offset, const __constant int *p); -uint4 __ovld vload4(size_t offset, const __constant uint *p); -long4 __ovld vload4(size_t offset, const __constant long *p); -ulong4 __ovld vload4(size_t offset, const __constant ulong *p); -float4 __ovld vload4(size_t offset, const __constant float *p); -char8 __ovld vload8(size_t offset, const __constant char *p); -uchar8 __ovld vload8(size_t offset, const __constant uchar *p); -short8 __ovld vload8(size_t offset, const __constant short *p); -ushort8 __ovld vload8(size_t offset, const __constant ushort *p); -int8 __ovld vload8(size_t offset, const __constant int *p); -uint8 __ovld vload8(size_t offset, const __constant uint *p); -long8 __ovld vload8(size_t offset, const __constant long *p); -ulong8 __ovld vload8(size_t offset, const __constant ulong *p); -float8 __ovld vload8(size_t offset, const __constant float *p); -char16 __ovld vload16(size_t offset, const __constant char *p); -uchar16 __ovld vload16(size_t offset, const __constant uchar *p); -short16 __ovld vload16(size_t offset, const __constant short *p); -ushort16 __ovld vload16(size_t offset, const __constant ushort *p); -int16 __ovld vload16(size_t offset, const __constant int *p); -uint16 __ovld vload16(size_t offset, const __constant uint *p); -long16 __ovld vload16(size_t offset, const __constant long *p); -ulong16 __ovld vload16(size_t offset, const __constant ulong *p); -float16 __ovld vload16(size_t offset, const __constant float *p); +char2 __ovld __purefn vload2(size_t offset, const __constant char *p); +uchar2 __ovld __purefn vload2(size_t offset, const __constant uchar *p); +short2 __ovld __purefn vload2(size_t offset, const __constant short *p); +ushort2 __ovld __purefn vload2(size_t offset, const __constant ushort *p); +int2 __ovld __purefn vload2(size_t offset, const __constant int *p); +uint2 __ovld __purefn vload2(size_t offset, const __constant uint *p); +long2 __ovld __purefn vload2(size_t offset, const __constant long *p); +ulong2 __ovld __purefn vload2(size_t offset, const __constant ulong *p); +float2 __ovld __purefn vload2(size_t offset, const __constant float *p); +char3 __ovld __purefn vload3(size_t offset, const __constant char *p); +uchar3 __ovld __purefn vload3(size_t offset, const __constant uchar *p); +short3 __ovld __purefn vload3(size_t offset, const __constant short *p); +ushor
[clang] 32955be - [OpenCL] Remove decls for scalar vloada_half and vstorea_half* fns
Author: Stuart Brady Date: 2021-09-02T22:08:09+01:00 New Revision: 32955be6bf7d8401ea8271e1097bf783bf492eb9 URL: https://github.com/llvm/llvm-project/commit/32955be6bf7d8401ea8271e1097bf783bf492eb9 DIFF: https://github.com/llvm/llvm-project/commit/32955be6bf7d8401ea8271e1097bf783bf492eb9.diff LOG: [OpenCL] Remove decls for scalar vloada_half and vstorea_half* fns These functions are not part of the OpenCL C specification. See https://github.com/KhronosGroup/OpenCL-Docs/issues/648 for a clarification regarding the vloada_half declarations. Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D108761 Added: Modified: clang/lib/Headers/opencl-c.h clang/lib/Sema/OpenCLBuiltins.td Removed: diff --git a/clang/lib/Headers/opencl-c.h b/clang/lib/Headers/opencl-c.h index 501126bf13ecd..bb3ca6aae20a2 100644 --- a/clang/lib/Headers/opencl-c.h +++ b/clang/lib/Headers/opencl-c.h @@ -12070,33 +12070,28 @@ void __ovld vstore_half16_rtn(double16 data, size_t offset, __private half *p); * The address computed as (p + (offset * 4)) * must be aligned to sizeof (half) * 4 bytes. */ -float __ovld vloada_half(size_t offset, const __constant half *p); float2 __ovld vloada_half2(size_t offset, const __constant half *p); float3 __ovld vloada_half3(size_t offset, const __constant half *p); float4 __ovld vloada_half4(size_t offset, const __constant half *p); float8 __ovld vloada_half8(size_t offset, const __constant half *p); float16 __ovld vloada_half16(size_t offset, const __constant half *p); #if defined(__opencl_c_generic_address_space) -float __ovld vloada_half(size_t offset, const half *p); float2 __ovld vloada_half2(size_t offset, const half *p); float3 __ovld vloada_half3(size_t offset, const half *p); float4 __ovld vloada_half4(size_t offset, const half *p); float8 __ovld vloada_half8(size_t offset, const half *p); float16 __ovld vloada_half16(size_t offset, const half *p); #else -float __ovld vloada_half(size_t offset, const __global half *p); float2 __ovld vloada_half2(size_t offset, const __global half *p); float3 __ovld vloada_half3(size_t offset, const __global half *p); float4 __ovld vloada_half4(size_t offset, const __global half *p); float8 __ovld vloada_half8(size_t offset, const __global half *p); float16 __ovld vloada_half16(size_t offset, const __global half *p); -float __ovld vloada_half(size_t offset, const __local half *p); float2 __ovld vloada_half2(size_t offset, const __local half *p); float3 __ovld vloada_half3(size_t offset, const __local half *p); float4 __ovld vloada_half4(size_t offset, const __local half *p); float8 __ovld vloada_half8(size_t offset, const __local half *p); float16 __ovld vloada_half16(size_t offset, const __local half *p); -float __ovld vloada_half(size_t offset, const __private half *p); float2 __ovld vloada_half2(size_t offset, const __private half *p); float3 __ovld vloada_half3(size_t offset, const __private half *p); float4 __ovld vloada_half4(size_t offset, const __private half *p); @@ -12121,35 +12116,30 @@ float16 __ovld vloada_half16(size_t offset, const __private half *p); * round to nearest even. */ #if defined(__opencl_c_generic_address_space) -void __ovld vstorea_half(float data, size_t offset, half *p); void __ovld vstorea_half2(float2 data, size_t offset, half *p); void __ovld vstorea_half3(float3 data, size_t offset, half *p); void __ovld vstorea_half4(float4 data, size_t offset, half *p); void __ovld vstorea_half8(float8 data, size_t offset, half *p); void __ovld vstorea_half16(float16 data, size_t offset, half *p); -void __ovld vstorea_half_rte(float data, size_t offset, half *p); void __ovld vstorea_half2_rte(float2 data, size_t offset, half *p); void __ovld vstorea_half3_rte(float3 data, size_t offset, half *p); void __ovld vstorea_half4_rte(float4 data, size_t offset, half *p); void __ovld vstorea_half8_rte(float8 data, size_t offset, half *p); void __ovld vstorea_half16_rte(float16 data, size_t offset, half *p); -void __ovld vstorea_half_rtz(float data, size_t offset, half *p); void __ovld vstorea_half2_rtz(float2 data, size_t offset, half *p); void __ovld vstorea_half3_rtz(float3 data, size_t offset, half *p); void __ovld vstorea_half4_rtz(float4 data, size_t offset, half *p); void __ovld vstorea_half8_rtz(float8 data, size_t offset, half *p); void __ovld vstorea_half16_rtz(float16 data, size_t offset, half *p); -void __ovld vstorea_half_rtp(float data, size_t offset, half *p); void __ovld vstorea_half2_rtp(float2 data, size_t offset, half *p); void __ovld vstorea_half3_rtp(float3 data, size_t offset, half *p); void __ovld vstorea_half4_rtp(float4 data, size_t offset, half *p); void __ovld vstorea_half8_rtp(float8 data, size_t offset, half *p); void __ovld vstorea_half16_rtp(float16 data, size_t offset, half *p); -void __ovld vstorea_half_rtn(float data, size_t o