Skip to content

[SYCL-PTX] Add missing async and barrier builtins #1801

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions clang/lib/Sema/SemaLookup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -908,8 +908,11 @@ bool Sema::LookupBuiltin(LookupResult &R) {
*this, 0, R, II, Index.first - 1, Index.second,
[this](const SPIRVBuiltin::BuiltinStruct &,
FunctionDecl &NewBuiltin) {
NewBuiltin.addAttr(
SYCLDeviceAttr::CreateImplicit(this->Context));
if (!this->getLangOpts().CPlusPlus)
NewBuiltin.addAttr(OverloadableAttr::CreateImplicit(Context));
if (this->getLangOpts().SYCLIsDevice)
NewBuiltin.addAttr(
SYCLDeviceAttr::CreateImplicit(this->Context));
});
return true;
}
Expand Down
15 changes: 15 additions & 0 deletions libclc/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,13 @@ set( LIBCLC_TARGETS_ALL
nvptx--nvidiacl
nvptx64--nvidiacl
)
set( LIBCLC_TEST_TARGETS_ALL
nvptx--nvidiacl
nvptx64--nvidiacl
)

set( LIBCLC_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR} )
set( LIBCLC_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} )

set( LIBCLC_TARGETS_TO_BUILD "all"
CACHE STRING "Semicolon-separated list of targets to build, or 'all'." )
Expand All @@ -65,6 +70,14 @@ endif()

list( SORT LIBCLC_TARGETS_TO_BUILD )

set(LIBCLC_TARGET_TO_TEST)

foreach ( t ${LIBCLC_TEST_TARGETS_ALL})
if( ${t} IN_LIST LIBCLC_TARGETS_TO_BUILD )
list( APPEND LIBCLC_TARGET_TO_TEST "${t}" )
endif(t)
endforeach(t)

execute_process( COMMAND ${LLVM_CONFIG} "--system-libs"
OUTPUT_VARIABLE LLVM_SYSTEM_LIBS
OUTPUT_STRIP_TRAILING_WHITESPACE )
Expand Down Expand Up @@ -261,3 +274,5 @@ install(DIRECTORY ${LIBCLC_LIBRARY_OUTPUT_INTDIR}
DESTINATION lib${LLVM_LIBDIR_SUFFIX}
COMPONENT clc-builtins
FILES_MATCHING PATTERN "clc-*")

add_subdirectory(test)
130 changes: 130 additions & 0 deletions libclc/generic/include/clc/async/gentype.inc
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,16 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE char3
#define __CLC_GENTYPE_U uchar3
#define __CLC_GENTYPE_MANGLED Dv3_c
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE_U
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE char4
#define __CLC_GENTYPE_MANGLED Dv4_c
#include __CLC_BODY
Expand All @@ -29,6 +39,46 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifndef __CLC_NO_SCHAR
#define __CLC_GENTYPE schar
#define __CLC_GENTYPE_MANGLED a
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#define __CLC_GENTYPE schar2
#define __CLC_GENTYPE_MANGLED Dv2_a
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE schar3
#define __CLC_GENTYPE_MANGLED Dv3_a
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE schar4
#define __CLC_GENTYPE_MANGLED Dv4_a
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#define __CLC_GENTYPE schar8
#define __CLC_GENTYPE_MANGLED Dv8_a
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#define __CLC_GENTYPE schar16
#define __CLC_GENTYPE_MANGLED Dv16_a
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE uchar
#define __CLC_GENTYPE_MANGLED h
#include __CLC_BODY
Expand All @@ -41,6 +91,14 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE uchar3
#define __CLC_GENTYPE_MANGLED Dv3_h
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE uchar4
#define __CLC_GENTYPE_MANGLED Dv4_h
#include __CLC_BODY
Expand Down Expand Up @@ -71,6 +129,14 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE short3
#define __CLC_GENTYPE_MANGLED Dv3_s
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE short4
#define __CLC_GENTYPE_MANGLED Dv4_s
#include __CLC_BODY
Expand Down Expand Up @@ -101,6 +167,14 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE ushort3
#define __CLC_GENTYPE_MANGLED Dv3_t
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE ushort4
#define __CLC_GENTYPE_MANGLED Dv4_t
#include __CLC_BODY
Expand Down Expand Up @@ -131,6 +205,14 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE int3
#define __CLC_GENTYPE_MANGLED Dv3_i
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE int4
#define __CLC_GENTYPE_MANGLED Dv4_i
#include __CLC_BODY
Expand Down Expand Up @@ -161,6 +243,14 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE uint3
#define __CLC_GENTYPE_MANGLED Dv3_j
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE uint4
#define __CLC_GENTYPE_MANGLED Dv4_j
#include __CLC_BODY
Expand Down Expand Up @@ -191,6 +281,14 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE float3
#define __CLC_GENTYPE_MANGLED Dv3_f
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE float4
#define __CLC_GENTYPE_MANGLED Dv4_f
#include __CLC_BODY
Expand Down Expand Up @@ -221,6 +319,14 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE long3
#define __CLC_GENTYPE_MANGLED Dv3_l
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE long4
#define __CLC_GENTYPE_MANGLED Dv4_l
#include __CLC_BODY
Expand Down Expand Up @@ -251,6 +357,14 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE ulong3
#define __CLC_GENTYPE_MANGLED Dv3_m
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE ulong4
#define __CLC_GENTYPE_MANGLED Dv4_m
#include __CLC_BODY
Expand Down Expand Up @@ -284,6 +398,14 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE double3
#define __CLC_GENTYPE_MANGLED Dv3_d
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE double4
#define __CLC_GENTYPE_MANGLED Dv4_d
#include __CLC_BODY
Expand Down Expand Up @@ -319,6 +441,14 @@
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE

#ifdef __CLC_GEN_VEC3
#define __CLC_GENTYPE half3
#define __CLC_GENTYPE_MANGLED Dv3_h
#include __CLC_BODY
#undef __CLC_GENTYPE_MANGLED
#undef __CLC_GENTYPE
#endif

#define __CLC_GENTYPE half4
#define __CLC_GENTYPE_MANGLED Dv4_Dh
#include __CLC_BODY
Expand Down

This file was deleted.

This file was deleted.

11 changes: 0 additions & 11 deletions libclc/generic/include/spirv/async/prefetch.h

This file was deleted.

9 changes: 0 additions & 9 deletions libclc/generic/include/spirv/async/prefetch.inc

This file was deleted.

This file was deleted.

12 changes: 0 additions & 12 deletions libclc/generic/include/spirv/spirv.h
Original file line number Diff line number Diff line change
Expand Up @@ -196,18 +196,6 @@
#include <spirv/relational/select.h>
#include <spirv/relational/signbit.h>

/* 6.11.8 Synchronization Functions */
#include <spirv/synchronization/barrier.h>

/* 6.11.9 Explicit Memory Fence Functions */
#include <spirv/explicit_fence/explicit_memory_fence.h>

/* 6.11.10 Async Copy and Prefetch Functions */
/* #include <spirv/async/async_work_group_copy.h> -- Explicitly omitted from SPIR-V interface. */
#include <spirv/async/async_work_group_strided_copy.h>
#include <spirv/async/prefetch.h>
#include <spirv/async/wait_group_events.h>

/* 6.11.11 Atomic Functions */
#include <spirv/atomic/atomic_add.h>
#include <spirv/atomic/atomic_and.h>
Expand Down
Loading