diff --git a/buildbot/configure.py b/buildbot/configure.py index 475d1305ded8c..f09c4e58f2430 100644 --- a/buildbot/configure.py +++ b/buildbot/configure.py @@ -27,6 +27,7 @@ def do_configure(args): llvm_targets_to_build = 'X86' llvm_enable_projects = 'clang;' + llvm_external_projects libclc_targets_to_build = '' + libclc_gen_remangled_variants = 'OFF' sycl_build_pi_cuda = 'OFF' sycl_build_pi_esimd_cpu = 'ON' sycl_build_pi_rocm = 'OFF' @@ -53,6 +54,7 @@ def do_configure(args): if args.cuda: llvm_targets_to_build += ';NVPTX' libclc_targets_to_build = 'nvptx64--;nvptx64--nvidiacl' + libclc_gen_remangled_variants = 'ON' sycl_build_pi_cuda = 'ON' if args.rocm: @@ -62,6 +64,7 @@ def do_configure(args): elif args.rocm_platform == 'NVIDIA' and not args.cuda: llvm_targets_to_build += ';NVPTX' libclc_targets_to_build += ';nvptx64--;nvptx64--nvidiacl' + libclc_gen_remangled_variants = 'ON' sycl_build_pi_rocm_platform = args.rocm_platform sycl_build_pi_rocm = 'ON' @@ -99,6 +102,7 @@ def do_configure(args): "-DLLVM_EXTERNAL_LIBDEVICE_SOURCE_DIR={}".format(libdevice_dir), "-DLLVM_ENABLE_PROJECTS={}".format(llvm_enable_projects), "-DLIBCLC_TARGETS_TO_BUILD={}".format(libclc_targets_to_build), + "-DLIBCLC_GENERATE_REMANGLED_VARIANTS={}".format(libclc_gen_remangled_variants), "-DSYCL_BUILD_PI_CUDA={}".format(sycl_build_pi_cuda), "-DSYCL_BUILD_PI_ROCM={}".format(sycl_build_pi_rocm), "-DSYCL_BUILD_PI_ROCM_PLATFORM={}".format(sycl_build_pi_rocm_platform), diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp index 152d05d543727..40d1ace6ad469 100644 --- a/clang/lib/Driver/ToolChains/Cuda.cpp +++ b/clang/lib/Driver/ToolChains/Cuda.cpp @@ -722,7 +722,8 @@ void CudaToolChain::addClangTargetOptions( llvm::sys::path::append(WithInstallPath, Twine("../../../share/clc")); LibraryPaths.emplace_back(WithInstallPath.c_str()); - std::string LibSpirvTargetName = "libspirv-nvptx64--nvidiacl.bc"; + std::string LibSpirvTargetName = + "remangled-l64-signed_char.libspirv-nvptx64--nvidiacl.bc"; for (StringRef LibraryPath : LibraryPaths) { SmallString<128> LibSpirvTargetFile(LibraryPath); llvm::sys::path::append(LibSpirvTargetFile, LibSpirvTargetName); diff --git a/clang/lib/Driver/ToolChains/HIP.cpp b/clang/lib/Driver/ToolChains/HIP.cpp index 1020ca5eb0dce..ea594ab68b12b 100644 --- a/clang/lib/Driver/ToolChains/HIP.cpp +++ b/clang/lib/Driver/ToolChains/HIP.cpp @@ -309,7 +309,8 @@ void HIPToolChain::addClangTargetOptions( llvm::sys::path::append(WithInstallPath, Twine("../../../share/clc")); LibraryPaths.emplace_back(WithInstallPath.c_str()); - std::string LibSpirvTargetName = "libspirv-amdgcn--amdhsa.bc"; + std::string LibSpirvTargetName = + "remangled-l64-signed_char.libspirv-amdgcn--amdhsa.bc"; for (StringRef LibraryPath : LibraryPaths) { SmallString<128> LibSpirvTargetFile(LibraryPath); llvm::sys::path::append(LibSpirvTargetFile, LibSpirvTargetName); diff --git a/clang/lib/Sema/SPIRVBuiltins.td b/clang/lib/Sema/SPIRVBuiltins.td index 2c3410c984e86..8e4c2175d3aa0 100644 --- a/clang/lib/Sema/SPIRVBuiltins.td +++ b/clang/lib/Sema/SPIRVBuiltins.td @@ -321,9 +321,8 @@ class ConstOCLSPVBuiltin _Signature> : // OpenCL v1.0/1.2/2.0 s6.1.1: Built-in Scalar Data Types. def Bool : IntType<"bool", QualType<"Context.BoolTy">, 1>; -def TrueChar : IntType<"_char", QualType<"Context.CharTy", 0, 1>, 8>; -def Char : IntType<"char", QualType<"Context.SignedCharTy", 0, 1>, 8>; -def SChar : IntType<"schar", QualType<"Context.SignedCharTy", 0, 1>, 8>; +def Char : IntType<"char", QualType<"Context.CharTy", 0, 1>, 8>; +def SChar : IntType<"schar", QualType<"Context.SignedCharTy", 0, 1>, 8>; def UChar : UIntType<"uchar", QualType<"Context.UnsignedCharTy">, 8>; def Short : IntType<"short", QualType<"Context.ShortTy", 0, 1>, 16>; def UShort : UIntType<"ushort", QualType<"Context.UnsignedShortTy">, 16>; @@ -356,15 +355,13 @@ def Vec16 : IntList<"Vec16", [16]>; def Vec1234 : IntList<"Vec1234", [1, 2, 3, 4]>; // Type lists. -def TLAll : TypeList<[Char, UChar, Short, UShort, Int, UInt, Long, ULong, Float, Double, Half]>; +def TLAll : TypeList<[Char, UChar, Short, UShort, Int, UInt, Long, ULong, Float, Double, Half]>; def TLAllUnsigned : TypeList<[UChar, UChar, UShort, UShort, UInt, UInt, ULong, ULong, UInt, ULong, UShort]>; def TLFloat : TypeList<[Float, Double, Half]>; -// FIXME: handle properly char (signed or unsigned depending on host) def TLSignedInts : TypeList<[Char, Short, Int, Long]>; def TLUnsignedInts : TypeList<[UChar, UShort, UInt, ULong]>; // Signed to Unsigned conversion -// FIXME: handle properly char (signed or unsigned depending on host) def TLSToUSignedInts : TypeList<[Char, Short, Int, Long]>; def TLSToUUnsignedInts : TypeList<[UChar, UShort, UInt, ULong]>; @@ -375,7 +372,7 @@ def TLIntLongFloats : TypeList<[Int, UInt, Long, ULong, Float, Double, Half]>; // uchar abs(uchar). def TLAllUIntsTwice : TypeList<[UChar, UChar, UChar, UShort, UShort, UInt, UInt, ULong, ULong]>; -def TLAllInts : TypeList<[Char, UChar, Short, UShort, Int, UInt, Long, ULong]>; +def TLAllInts : TypeList<[Char, SChar, UChar, Short, UShort, Int, UInt, Long, ULong]>; // GenType definitions for multiple base types (e.g. all floating point types, // or all integer types). @@ -402,7 +399,7 @@ def IntLongFloatGenType1 : GenericType<"IntLongFloatGenType1", TLIntLongFloats // GenType definitions for every single base type (e.g. fp32 only). // Names are like: GenTypeFloatVecAndScalar. -foreach Type = [Char, UChar, SChar, Short, UShort, +foreach Type = [Char, SChar, UChar, Short, UShort, Int, UInt, Long, ULong, Float, Double, Half] in { foreach VecSizes = [VecAndScalar, VecNoScalar] in { @@ -557,6 +554,7 @@ foreach name = ["s_clamp", "s_mad_hi", "s_mad_sat"] in { foreach name = ["s_upsample"] in { def : ConstOCLSPVBuiltin; + def : ConstOCLSPVBuiltin; def : ConstOCLSPVBuiltin; def : ConstOCLSPVBuiltin; } @@ -724,7 +722,7 @@ foreach VSize1 = [Vec2, Vec4, Vec8, Vec16] in { let IsVariadic = 1 in { foreach name = ["printf"] in { - def : OCLSPVBuiltin, ConstantAS>]>; + def : OCLSPVBuiltin, ConstantAS>]>; } } diff --git a/libclc/CMakeLists.txt b/libclc/CMakeLists.txt index 10959ee6cbe64..65a02d21dd40a 100644 --- a/libclc/CMakeLists.txt +++ b/libclc/CMakeLists.txt @@ -65,6 +65,10 @@ set( LIBCLC_TARGETS_TO_BUILD "all" option( ENABLE_RUNTIME_SUBNORMAL "Enable runtime linking of subnormal support." OFF ) +option( LIBCLC_GENERATE_REMANGLED_VARIANTS + "Generate remangled variants of enabled libclc targets." + OFF ) + # mesa3d environment is only available since LLVM 4.0 if( ${LLVM_VERSION} VERSION_GREATER "3.9.0" ) set( LIBCLC_TARGETS_ALL ${LIBCLC_TARGETS_ALL} amdgcn-mesa-mesa3d ) @@ -119,6 +123,8 @@ find_program( LLVM_AS llvm-as PATHS ${LLVM_BINDIR} NO_DEFAULT_PATH ) find_program( LLVM_LINK llvm-link PATHS ${LLVM_BINDIR} NO_DEFAULT_PATH ) find_program( LLVM_OPT opt PATHS ${LLVM_BINDIR} NO_DEFAULT_PATH ) find_program( LLVM_SPIRV llvm-spirv PATHS ${LLVM_BINDIR} NO_DEFAULT_PATH ) +find_program( LIBCLC_REMANGLER libclc-remangler PATHS ${LLVM_BINDIR} + NO_DEFAULT_PATH ) # Print toolchain message( "clang: ${LLVM_CLANG}" ) @@ -126,8 +132,10 @@ message( "llvm-as: ${LLVM_AS}" ) message( "llvm-link: ${LLVM_LINK}" ) message( "opt: ${LLVM_OPT}" ) message( "llvm-spirv: ${LLVM_SPIRV}" ) +message( "libclc-remangler: ${LIBCLC_REMANGLER}" ) message( "" ) -if( NOT LLVM_CLANG OR NOT LLVM_OPT OR NOT LLVM_AS OR NOT LLVM_LINK ) +if( NOT LLVM_CLANG OR NOT LLVM_OPT OR NOT LLVM_AS OR NOT LLVM_LINK + OR NOT LIBCLC_REMANGLER ) message( FATAL_ERROR "toolchain incomplete!" ) endif() diff --git a/libclc/cmake/modules/AddLibclc.cmake b/libclc/cmake/modules/AddLibclc.cmake index f812c5187207b..3d12a8f9af109 100644 --- a/libclc/cmake/modules/AddLibclc.cmake +++ b/libclc/cmake/modules/AddLibclc.cmake @@ -105,6 +105,40 @@ macro(add_libclc_builtin_set arch_suffix) install( FILES ${LIBCLC_LIBRARY_OUTPUT_INTDIR}/${obj_suffix} DESTINATION ${CMAKE_INSTALL_DATADIR}/clc ) + + # Generate remangled variants if requested + if( LIBCLC_GENERATE_REMANGLED_VARIANTS ) + set(long_widths l32 l64) + set(char_signedness signed unsigned) + # All permutations of [l32, l64] and [signed, unsigned] + foreach(long_width ${long_widths}) + foreach(signedness ${char_signedness}) + # Remangle + set( builtins_remangle_path + "${LIBCLC_LIBRARY_OUTPUT_INTDIR}/remangled-${long_width}-${signedness}_char.${obj_suffix}" ) + add_custom_command( OUTPUT "${builtins_remangle_path}" + COMMAND libclc-remangler + -o "${builtins_remangle_path}" + --long-width=${long_width} + --char-signedness=${signedness} + "$" + DEPENDS "prepare-${obj_suffix}" libclc-remangler ) + add_custom_target( "remangled-${long_width}-${signedness}_char.${obj_suffix}" ALL + DEPENDS "${builtins_remangle_path}" ) + set_target_properties("remangled-${long_width}-${signedness}_char.${obj_suffix}" + PROPERTIES TARGET_FILE "${builtins_remangle_path}") + + # Add dependency to top-level pseudo target to ease making other + # targets dependent on libclc. + add_dependencies(${ARG_PARENT_TARGET} "remangled-${long_width}-${signedness}_char.${obj_suffix}") + + # Keep remangled variants + install( + FILES ${builtins_remangle_path} + DESTINATION ${CMAKE_INSTALL_DATADIR}/clc ) + endforeach() + endforeach() + endif() # nvptx-- targets don't include workitem builtins if( NOT ${t} MATCHES ".*ptx.*--$" ) diff --git a/libclc/cmake/modules/HandleInLLVMTree.cmake b/libclc/cmake/modules/HandleInLLVMTree.cmake index 674c22b22fff2..a1ee6c32f937c 100644 --- a/libclc/cmake/modules/HandleInLLVMTree.cmake +++ b/libclc/cmake/modules/HandleInLLVMTree.cmake @@ -3,6 +3,7 @@ macro(configure_in_llvm_tree) set(LLVM_AS ${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-as) set(LLVM_LINK ${LLVM_RUNTIME_OUTPUT_INTDIR}/llvm-link) set(LLVM_OPT ${LLVM_RUNTIME_OUTPUT_INTDIR}/opt) + set(LIBCLC_REMANGLER ${LLVM_RUNTIME_OUTPUT_INTDIR}/libclc-remangler) if (NOT EXISTS ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang) file(WRITE ${LLVM_RUNTIME_OUTPUT_INTDIR}/clang "" ) @@ -16,6 +17,9 @@ macro(configure_in_llvm_tree) if (NOT EXISTS ${LLVM_RUNTIME_OUTPUT_INTDIR}/opt) file(WRITE ${LLVM_RUNTIME_OUTPUT_INTDIR}/opt "" ) endif (NOT EXISTS ${LLVM_RUNTIME_OUTPUT_INTDIR}/opt) + if (NOT EXISTS ${LLVM_RUNTIME_OUTPUT_INTDIR}/libclc-remangler) + file(WRITE ${LLVM_RUNTIME_OUTPUT_INTDIR}/libclc-remangler "" ) + endif (NOT EXISTS ${LLVM_RUNTIME_OUTPUT_INTDIR}/libclc-remangler) # Assume all works well # We can't test the compilers as they haven't been built yet diff --git a/libclc/cmake/modules/HandleOutOfTreeLLVM.cmake b/libclc/cmake/modules/HandleOutOfTreeLLVM.cmake index c77f294f3b041..1e97a80b4706f 100644 --- a/libclc/cmake/modules/HandleOutOfTreeLLVM.cmake +++ b/libclc/cmake/modules/HandleOutOfTreeLLVM.cmake @@ -46,6 +46,7 @@ macro(configure_out_of_tree_llvm) get_property(LLVM_AS TARGET llvm-as PROPERTY LOCATION) get_property(LLVM_LINK TARGET llvm-link PROPERTY LOCATION) get_property(LLVM_OPT TARGET opt PROPERTY LOCATION) + get_property(LIBCLC_REMANGLER TARGET libclc-remangler PROPERTY LOCATION) set(LLVM_ENABLE_PIC OFF) diff --git a/libclc/generic/gen_convert_common.py b/libclc/generic/gen_convert_common.py index d4399adda10d9..e44795d34a941 100644 --- a/libclc/generic/gen_convert_common.py +++ b/libclc/generic/gen_convert_common.py @@ -1,10 +1,10 @@ # This file contains common variables and helper functions used by the # `gen_convert.py` in both the libclc and libspirv libraries. -types = ['char', 'schar', 'uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong', 'half', 'float', 'double'] -int_types = ['char', 'schar', 'uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong'] +types = ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong', 'half', 'float', 'double'] +int_types = ['char', 'uchar', 'short', 'ushort', 'int', 'uint', 'long', 'ulong'] unsigned_types = ['uchar', 'ushort', 'uint', 'ulong'] -signed_types = ['char', 'schar', 'short', 'int', 'long'] +signed_types = ['char', 'short', 'int', 'long'] float_types = ['half', 'float', 'double'] int64_types = ['long', 'ulong'] float64_types = ['double'] @@ -18,8 +18,7 @@ float_suffix = {'float':'f', 'double':''} bool_type = {'char' : 'char', - 'schar' : 'schar', - 'uchar' : 'schar', + 'uchar' : 'char', 'short' : 'short', 'ushort' : 'short', 'int' : 'int', @@ -31,7 +30,6 @@ 'double' : 'long'} unsigned_type = {'char' : 'uchar', - 'schar' : 'uchar', 'uchar' : 'uchar', 'short' : 'ushort', 'ushort': 'ushort', @@ -40,7 +38,7 @@ 'long' : 'ulong', 'ulong' : 'ulong'} -sizeof_type = {'char' : 1, 'schar' : 1, 'uchar' : 1, +sizeof_type = {'char' : 1, 'uchar' : 1, 'short' : 2, 'ushort' : 2, 'int' : 4, 'uint' : 4, 'long' : 8, 'ulong' : 8, @@ -48,7 +46,6 @@ 'double': 8} limit_max = {'char' : 'CHAR_MAX', - 'schar' : 'CHAR_MAX', 'uchar' : 'UCHAR_MAX', 'short' : 'SHRT_MAX', 'ushort': 'USHRT_MAX', @@ -58,7 +55,6 @@ 'ulong' : 'ULONG_MAX'} limit_min = {'char' : 'CHAR_MIN', - 'schar' : 'CHAR_MIN', 'uchar' : '0', 'short' : 'SHRT_MIN', 'ushort': '0', diff --git a/libclc/generic/include/as_type.h b/libclc/generic/include/as_type.h index 51f347b4b5cbe..557e6fd22f2aa 100644 --- a/libclc/generic/include/as_type.h +++ b/libclc/generic/include/as_type.h @@ -2,7 +2,6 @@ #define CLC_AS_TYPE #define as_char(x) __builtin_astype(x, char) -#define as_schar(x) __builtin_astype(x, schar) #define as_uchar(x) __builtin_astype(x, uchar) #define as_short(x) __builtin_astype(x, short) #define as_ushort(x) __builtin_astype(x, ushort) @@ -13,7 +12,6 @@ #define as_float(x) __builtin_astype(x, float) #define as_char2(x) __builtin_astype(x, char2) -#define as_schar2(x) __builtin_astype(x, schar2) #define as_uchar2(x) __builtin_astype(x, uchar2) #define as_short2(x) __builtin_astype(x, short2) #define as_ushort2(x) __builtin_astype(x, ushort2) @@ -24,7 +22,6 @@ #define as_float2(x) __builtin_astype(x, float2) #define as_char3(x) __builtin_astype(x, char3) -#define as_schar3(x) __builtin_astype(x, schar3) #define as_uchar3(x) __builtin_astype(x, uchar3) #define as_short3(x) __builtin_astype(x, short3) #define as_ushort3(x) __builtin_astype(x, ushort3) @@ -35,7 +32,6 @@ #define as_float3(x) __builtin_astype(x, float3) #define as_char4(x) __builtin_astype(x, char4) -#define as_schar4(x) __builtin_astype(x, schar4) #define as_uchar4(x) __builtin_astype(x, uchar4) #define as_short4(x) __builtin_astype(x, short4) #define as_ushort4(x) __builtin_astype(x, ushort4) @@ -46,7 +42,6 @@ #define as_float4(x) __builtin_astype(x, float4) #define as_char8(x) __builtin_astype(x, char8) -#define as_schar8(x) __builtin_astype(x, schar8) #define as_uchar8(x) __builtin_astype(x, uchar8) #define as_short8(x) __builtin_astype(x, short8) #define as_ushort8(x) __builtin_astype(x, ushort8) @@ -57,7 +52,6 @@ #define as_float8(x) __builtin_astype(x, float8) #define as_char16(x) __builtin_astype(x, char16) -#define as_schar16(x) __builtin_astype(x, schar16) #define as_uchar16(x) __builtin_astype(x, uchar16) #define as_short16(x) __builtin_astype(x, short16) #define as_ushort16(x) __builtin_astype(x, ushort16) diff --git a/libclc/generic/include/clc/async/gentype.inc b/libclc/generic/include/clc/async/gentype.inc index 2af91bfb9641f..df3f75c7aa119 100644 --- a/libclc/generic/include/clc/async/gentype.inc +++ b/libclc/generic/include/clc/async/gentype.inc @@ -39,46 +39,6 @@ #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 diff --git a/libclc/generic/include/clc/clc.h b/libclc/generic/include/clc/clc.h index 8ff94f8c89ea8..d0db030e6a93d 100644 --- a/libclc/generic/include/clc/clc.h +++ b/libclc/generic/include/clc/clc.h @@ -12,8 +12,6 @@ #pragma OPENCL EXTENSION cl_khr_fp16 : enable #endif -#define __CLC_NO_SCHAR - /* Function Attributes */ #include diff --git a/libclc/generic/include/clc/integer/gentype.inc b/libclc/generic/include/clc/integer/gentype.inc index 032bdc0cadbaf..80f5b131cf236 100644 --- a/libclc/generic/include/clc/integer/gentype.inc +++ b/libclc/generic/include/clc/integer/gentype.inc @@ -14,7 +14,7 @@ #define __CLC_GEN_S #define __CLC_GENTYPE char -#define __CLC_SPIRV_INTERFACE_GENTYPE schar +#define __CLC_SPIRV_INTERFACE_GENTYPE char #define __CLC_U_GENTYPE uchar #define __CLC_S_GENTYPE char #define __CLC_SCALAR 1 @@ -28,7 +28,7 @@ #undef __CLC_SPIRV_INTERFACE_GENTYPE #define __CLC_GENTYPE char2 -#define __CLC_SPIRV_INTERFACE_GENTYPE schar2 +#define __CLC_SPIRV_INTERFACE_GENTYPE char2 #define __CLC_U_GENTYPE uchar2 #define __CLC_S_GENTYPE char2 #define __CLC_VECSIZE 2 @@ -40,7 +40,7 @@ #undef __CLC_SPIRV_INTERFACE_GENTYPE #define __CLC_GENTYPE char3 -#define __CLC_SPIRV_INTERFACE_GENTYPE schar3 +#define __CLC_SPIRV_INTERFACE_GENTYPE char3 #define __CLC_U_GENTYPE uchar3 #define __CLC_S_GENTYPE char3 #define __CLC_VECSIZE 3 @@ -52,7 +52,7 @@ #undef __CLC_SPIRV_INTERFACE_GENTYPE #define __CLC_GENTYPE char4 -#define __CLC_SPIRV_INTERFACE_GENTYPE schar4 +#define __CLC_SPIRV_INTERFACE_GENTYPE char4 #define __CLC_U_GENTYPE uchar4 #define __CLC_S_GENTYPE char4 #define __CLC_VECSIZE 4 @@ -64,7 +64,7 @@ #undef __CLC_SPIRV_INTERFACE_GENTYPE #define __CLC_GENTYPE char8 -#define __CLC_SPIRV_INTERFACE_GENTYPE schar8 +#define __CLC_SPIRV_INTERFACE_GENTYPE char8 #define __CLC_U_GENTYPE uchar8 #define __CLC_S_GENTYPE char8 #define __CLC_VECSIZE 8 @@ -76,7 +76,7 @@ #undef __CLC_SPIRV_INTERFACE_GENTYPE #define __CLC_GENTYPE char16 -#define __CLC_SPIRV_INTERFACE_GENTYPE schar16 +#define __CLC_SPIRV_INTERFACE_GENTYPE char16 #define __CLC_U_GENTYPE uchar16 #define __CLC_S_GENTYPE char16 #define __CLC_VECSIZE 16 @@ -87,88 +87,6 @@ #undef __CLC_S_GENTYPE #undef __CLC_SPIRV_INTERFACE_GENTYPE -#ifndef __CLC_NO_SCHAR -#undef __CLC_GEN_S -#undef __CLC_SCALAR_GENTYPE -#define __CLC_SCALAR_GENTYPE schar -#define __CLC_GEN_S - -#define __CLC_GENTYPE schar -#define __CLC_SPIRV_INTERFACE_GENTYPE schar -#define __CLC_U_GENTYPE uchar -#define __CLC_S_GENTYPE schar -#define __CLC_SCALAR 1 -#define __CLC_VECSIZE -#include __CLC_BODY -#undef __CLC_VECSIZE -#undef __CLC_SCALAR -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE -#undef __CLC_SPIRV_INTERFACE_GENTYPE - -#define __CLC_GENTYPE schar2 -#define __CLC_SPIRV_INTERFACE_GENTYPE schar2 -#define __CLC_U_GENTYPE uchar2 -#define __CLC_S_GENTYPE schar2 -#define __CLC_VECSIZE 2 -#include __CLC_BODY -#undef __CLC_VECSIZE -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE -#undef __CLC_SPIRV_INTERFACE_GENTYPE - -#define __CLC_GENTYPE schar3 -#define __CLC_SPIRV_INTERFACE_GENTYPE schar3 -#define __CLC_U_GENTYPE uchar3 -#define __CLC_S_GENTYPE schar3 -#define __CLC_VECSIZE 3 -#include __CLC_BODY -#undef __CLC_VECSIZE -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE -#undef __CLC_SPIRV_INTERFACE_GENTYPE - -#define __CLC_GENTYPE schar4 -#define __CLC_SPIRV_INTERFACE_GENTYPE schar4 -#define __CLC_U_GENTYPE uchar4 -#define __CLC_S_GENTYPE schar4 -#define __CLC_VECSIZE 4 -#include __CLC_BODY -#undef __CLC_VECSIZE -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE -#undef __CLC_SPIRV_INTERFACE_GENTYPE - -#define __CLC_GENTYPE schar8 -#define __CLC_SPIRV_INTERFACE_GENTYPE schar8 -#define __CLC_U_GENTYPE uchar8 -#define __CLC_S_GENTYPE schar8 -#define __CLC_VECSIZE 8 -#include __CLC_BODY -#undef __CLC_VECSIZE -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE -#undef __CLC_SPIRV_INTERFACE_GENTYPE - -#define __CLC_GENTYPE schar16 -#define __CLC_SPIRV_INTERFACE_GENTYPE schar16 -#define __CLC_U_GENTYPE uchar16 -#define __CLC_S_GENTYPE schar16 -#define __CLC_VECSIZE 16 -#include __CLC_BODY -#undef __CLC_VECSIZE -#undef __CLC_GENTYPE -#undef __CLC_U_GENTYPE -#undef __CLC_S_GENTYPE -#undef __CLC_SPIRV_INTERFACE_GENTYPE - -#endif // __CLC_NO_SCHAR - #undef __CLC_SCALAR_GENTYPE #define __CLC_SCALAR_GENTYPE uchar #undef __CLC_GEN_S @@ -177,7 +95,7 @@ #define __CLC_GENTYPE uchar #define __CLC_SPIRV_INTERFACE_GENTYPE uchar #define __CLC_U_GENTYPE uchar -#define __CLC_S_GENTYPE schar +#define __CLC_S_GENTYPE char #define __CLC_SCALAR 1 #define __CLC_VECSIZE #include __CLC_BODY @@ -191,7 +109,7 @@ #define __CLC_GENTYPE uchar2 #define __CLC_SPIRV_INTERFACE_GENTYPE uchar2 #define __CLC_U_GENTYPE uchar2 -#define __CLC_S_GENTYPE schar2 +#define __CLC_S_GENTYPE char2 #define __CLC_VECSIZE 2 #include __CLC_BODY #undef __CLC_VECSIZE @@ -203,7 +121,7 @@ #define __CLC_GENTYPE uchar3 #define __CLC_SPIRV_INTERFACE_GENTYPE uchar3 #define __CLC_U_GENTYPE uchar3 -#define __CLC_S_GENTYPE schar3 +#define __CLC_S_GENTYPE char3 #define __CLC_VECSIZE 3 #include __CLC_BODY #undef __CLC_VECSIZE @@ -215,7 +133,7 @@ #define __CLC_GENTYPE uchar4 #define __CLC_SPIRV_INTERFACE_GENTYPE uchar4 #define __CLC_U_GENTYPE uchar4 -#define __CLC_S_GENTYPE schar4 +#define __CLC_S_GENTYPE char4 #define __CLC_VECSIZE 4 #include __CLC_BODY #undef __CLC_VECSIZE @@ -227,7 +145,7 @@ #define __CLC_GENTYPE uchar8 #define __CLC_SPIRV_INTERFACE_GENTYPE uchar8 #define __CLC_U_GENTYPE uchar8 -#define __CLC_S_GENTYPE schar8 +#define __CLC_S_GENTYPE char8 #define __CLC_VECSIZE 8 #include __CLC_BODY #undef __CLC_VECSIZE @@ -239,7 +157,7 @@ #define __CLC_GENTYPE uchar16 #define __CLC_SPIRV_INTERFACE_GENTYPE uchar16 #define __CLC_U_GENTYPE uchar16 -#define __CLC_S_GENTYPE schar16 +#define __CLC_S_GENTYPE char16 #define __CLC_VECSIZE 16 #include __CLC_BODY #undef __CLC_VECSIZE diff --git a/libclc/generic/include/core/convert.h b/libclc/generic/include/core/convert.h index e3f19010b404d..299550a922df9 100644 --- a/libclc/generic/include/core/convert.h +++ b/libclc/generic/include/core/convert.h @@ -22,7 +22,6 @@ #define _CLC_VECTOR_CORE_CONVERT_FROM1(FROM_TYPE, SUFFIX) \ _CLC_VECTOR_CORE_CONVERT_DECL(FROM_TYPE, char, SUFFIX) \ - _CLC_VECTOR_CORE_CONVERT_DECL(FROM_TYPE, schar, SUFFIX) \ _CLC_VECTOR_CORE_CONVERT_DECL(FROM_TYPE, uchar, SUFFIX) \ _CLC_VECTOR_CORE_CONVERT_DECL(FROM_TYPE, int, SUFFIX) \ _CLC_VECTOR_CORE_CONVERT_DECL(FROM_TYPE, uint, SUFFIX) \ @@ -51,7 +50,6 @@ #define _CLC_VECTOR_CORE_CONVERT_TO1(SUFFIX) \ _CLC_VECTOR_CORE_CONVERT_FROM(char, SUFFIX) \ - _CLC_VECTOR_CORE_CONVERT_FROM(schar, SUFFIX) \ _CLC_VECTOR_CORE_CONVERT_FROM(uchar, SUFFIX) \ _CLC_VECTOR_CORE_CONVERT_FROM(int, SUFFIX) \ _CLC_VECTOR_CORE_CONVERT_FROM(uint, SUFFIX) \ diff --git a/libclc/generic/include/core/integer/clc_upsample.h b/libclc/generic/include/core/integer/clc_upsample.h index 468ec7719ac4d..aaa756bb4758e 100644 --- a/libclc/generic/include/core/integer/clc_upsample.h +++ b/libclc/generic/include/core/integer/clc_upsample.h @@ -19,7 +19,6 @@ #define __CLC_UPSAMPLE_TYPES() \ __CLC_UPSAMPLE_VEC(short, char, uchar) \ - __CLC_UPSAMPLE_VEC(short, schar, uchar) \ __CLC_UPSAMPLE_VEC(ushort, uchar, uchar) \ __CLC_UPSAMPLE_VEC(int, short, ushort) \ __CLC_UPSAMPLE_VEC(uint, ushort, ushort) \ diff --git a/libclc/generic/include/integer/unary_intrin.inc b/libclc/generic/include/integer/unary_intrin.inc index fda21e3074166..ee9862a4c5b3a 100644 --- a/libclc/generic/include/integer/unary_intrin.inc +++ b/libclc/generic/include/integer/unary_intrin.inc @@ -7,7 +7,6 @@ _CLC_OVERLOAD SCALAR_TYPE##8 __CLC_FUNCTION(SCALAR_TYPE##8 x) __asm(__CLC_INTRIN _CLC_OVERLOAD SCALAR_TYPE##16 __CLC_FUNCTION(SCALAR_TYPE##16 x) __asm(__CLC_INTRINSIC ".v16i" BIT_SIZE); __CLC_INTRINSIC_DEF(char, "8") -__CLC_INTRINSIC_DEF(schar, "8") __CLC_INTRINSIC_DEF(uchar, "8") __CLC_INTRINSIC_DEF(short, "16") __CLC_INTRINSIC_DEF(ushort, "16") diff --git a/libclc/generic/include/lp64_types.h b/libclc/generic/include/lp64_types.h index f5609d4d3c047..6a568ca617c3b 100644 --- a/libclc/generic/include/lp64_types.h +++ b/libclc/generic/include/lp64_types.h @@ -22,12 +22,12 @@ typedef char __clc_vec4_char_t __attribute__((ext_vector_type(4))); typedef char __clc_vec8_char_t __attribute__((ext_vector_type(8))); typedef char __clc_vec16_char_t __attribute__((ext_vector_type(16))); -typedef signed char __clc_int8_t; -typedef signed char __clc_vec2_int8_t __attribute__((ext_vector_type(2))); -typedef signed char __clc_vec3_int8_t __attribute__((ext_vector_type(3))); -typedef signed char __clc_vec4_int8_t __attribute__((ext_vector_type(4))); -typedef signed char __clc_vec8_int8_t __attribute__((ext_vector_type(8))); -typedef signed char __clc_vec16_int8_t __attribute__((ext_vector_type(16))); +typedef char __clc_int8_t; +typedef char __clc_vec2_int8_t __attribute__((ext_vector_type(2))); +typedef char __clc_vec3_int8_t __attribute__((ext_vector_type(3))); +typedef char __clc_vec4_int8_t __attribute__((ext_vector_type(4))); +typedef char __clc_vec8_int8_t __attribute__((ext_vector_type(8))); +typedef char __clc_vec16_int8_t __attribute__((ext_vector_type(16))); typedef unsigned char __clc_uint8_t; typedef unsigned char __clc_vec2_uint8_t __attribute__((ext_vector_type(2))); diff --git a/libclc/generic/include/spirv/atomic/atomic_decl.inc b/libclc/generic/include/spirv/atomic/atomic_decl.inc index 145833e2014c2..58f7bdc1a7f09 100644 --- a/libclc/generic/include/spirv/atomic/atomic_decl.inc +++ b/libclc/generic/include/spirv/atomic/atomic_decl.inc @@ -32,8 +32,6 @@ __CLC_DECLARE_ATOMIC_ADDRSPACE(ulong, m, __SPIRV_FUNCTION_U, __SPIRV_FUNCTION_U_ #ifdef cl_khr_int64_base_atomics __CLC_DECLARE_ATOMIC_ADDRSPACE(long, l, __SPIRV_FUNCTION_S, __SPIRV_FUNCTION_S_LEN) __CLC_DECLARE_ATOMIC_ADDRSPACE(ulong, m, __SPIRV_FUNCTION_U, __SPIRV_FUNCTION_U_LEN) -__CLC_DECLARE_ATOMIC_ADDRSPACE(long, x, __SPIRV_FUNCTION_S, __SPIRV_FUNCTION_S_LEN) -__CLC_DECLARE_ATOMIC_ADDRSPACE(ulong, y, __SPIRV_FUNCTION_U, __SPIRV_FUNCTION_U_LEN) #endif #endif diff --git a/libclc/generic/include/spirv/atomic/atomic_load.h b/libclc/generic/include/spirv/atomic/atomic_load.h index 1de6efac54e81..30d7d4baf3af1 100644 --- a/libclc/generic/include/spirv/atomic/atomic_load.h +++ b/libclc/generic/include/spirv/atomic/atomic_load.h @@ -22,8 +22,6 @@ DECL_AS(unsigned int, j) #ifdef cl_khr_int64_base_atomics DECL_AS(long, l) DECL_AS(unsigned long, m) -DECL_AS(long, x) -DECL_AS(unsigned long, y) #endif #undef DECL_AS diff --git a/libclc/generic/include/spirv/atomic/atomic_store.h b/libclc/generic/include/spirv/atomic/atomic_store.h index 2bb4cde0258c3..59dde9749b054 100644 --- a/libclc/generic/include/spirv/atomic/atomic_store.h +++ b/libclc/generic/include/spirv/atomic/atomic_store.h @@ -22,8 +22,6 @@ DECL_AS(unsigned int, j) #ifdef cl_khr_int64_base_atomics DECL_AS(long, l) DECL_AS(unsigned long, m) -DECL_AS(long, x) -DECL_AS(unsigned long, y) #endif #undef DECL_AS diff --git a/libclc/generic/include/types.h b/libclc/generic/include/types.h index ba435f9c8c729..9d5564ea4e80a 100644 --- a/libclc/generic/include/types.h +++ b/libclc/generic/include/types.h @@ -3,7 +3,6 @@ /* 6.1.1 Built-in Scalar Data Types */ -typedef signed char schar; typedef unsigned char uchar; typedef unsigned short ushort; typedef unsigned int uint; @@ -32,12 +31,6 @@ typedef __attribute__((ext_vector_type(4))) char char4; typedef __attribute__((ext_vector_type(8))) char char8; typedef __attribute__((ext_vector_type(16))) char char16; -typedef __attribute__((ext_vector_type(2))) schar schar2; -typedef __attribute__((ext_vector_type(3))) schar schar3; -typedef __attribute__((ext_vector_type(4))) schar schar4; -typedef __attribute__((ext_vector_type(8))) schar schar8; -typedef __attribute__((ext_vector_type(16))) schar schar16; - typedef __attribute__((ext_vector_type(2))) uchar uchar2; typedef __attribute__((ext_vector_type(3))) uchar uchar3; typedef __attribute__((ext_vector_type(4))) uchar uchar4; diff --git a/libclc/generic/lib/gen_convert.py b/libclc/generic/lib/gen_convert.py index 760816b49b202..6ec9aea4aa3a3 100644 --- a/libclc/generic/lib/gen_convert.py +++ b/libclc/generic/lib/gen_convert.py @@ -9,9 +9,6 @@ conditional_guard, close_conditional_guard, clc_core_fn_name) -# remove extra, non-opencl type -types.remove('schar') - # OpenCL built-in library: type conversion functions # # Copyright (c) 2013 Victor Oliveira diff --git a/libclc/generic/libspirv/atomic/atomic_add.cl b/libclc/generic/libspirv/atomic/atomic_add.cl index 8f2ae68f06aed..fb5a61257b729 100644 --- a/libclc/generic/libspirv/atomic/atomic_add.cl +++ b/libclc/generic/libspirv/atomic/atomic_add.cl @@ -28,9 +28,5 @@ IMPL(long, l, global, AS1, __sync_fetch_and_add_8) IMPL(unsigned long, m, global, AS1, __sync_fetch_and_add_8) IMPL(long, l, local, AS3, __sync_fetch_and_add_8) IMPL(unsigned long, m, local, AS3, __sync_fetch_and_add_8) -IMPL(long, x, global, AS1, __sync_fetch_and_add_8) -IMPL(unsigned long, y, global, AS1, __sync_fetch_and_add_8) -IMPL(long, x, local, AS3, __sync_fetch_and_add_8) -IMPL(unsigned long, y, local, AS3, __sync_fetch_and_add_8) #endif #undef IMPL diff --git a/libclc/generic/libspirv/atomic/atomic_and.cl b/libclc/generic/libspirv/atomic/atomic_and.cl index d1080217f0989..59bd617e422a7 100644 --- a/libclc/generic/libspirv/atomic/atomic_and.cl +++ b/libclc/generic/libspirv/atomic/atomic_and.cl @@ -28,9 +28,5 @@ IMPL(long, l, global, AS1, __sync_fetch_and_and_8) IMPL(unsigned long, m, global, AS1, __sync_fetch_and_and_8) IMPL(long, l, local, AS3, __sync_fetch_and_and_8) IMPL(unsigned long, m, local, AS3, __sync_fetch_and_and_8) -IMPL(long, x, global, AS1, __sync_fetch_and_and_8) -IMPL(unsigned long, y, global, AS1, __sync_fetch_and_and_8) -IMPL(long, x, local, AS3, __sync_fetch_and_and_8) -IMPL(unsigned long, y, local, AS3, __sync_fetch_and_and_8) #endif #undef IMPL diff --git a/libclc/generic/libspirv/atomic/atomic_cmpxchg.cl b/libclc/generic/libspirv/atomic/atomic_cmpxchg.cl index 68d0f7133f855..c090e33fed32f 100644 --- a/libclc/generic/libspirv/atomic/atomic_cmpxchg.cl +++ b/libclc/generic/libspirv/atomic/atomic_cmpxchg.cl @@ -66,32 +66,4 @@ _Z29__spirv_AtomicCompareExchangePU3AS1mN5__spv5Scope4FlagENS1_19MemorySemantics enum MemorySemanticsMask neq, ulong val, ulong cmp) { return __sync_val_compare_and_swap_8(p, cmp, val); } - -_CLC_DEF long -_Z29__spirv_AtomicCompareExchangePU3AS3xN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES5_xx( - volatile local long *p, enum Scope scope, enum MemorySemanticsMask eq, - enum MemorySemanticsMask neq, long val, long cmp) { - return __sync_val_compare_and_swap_8(p, cmp, val); -} - -_CLC_DEF long -_Z29__spirv_AtomicCompareExchangePU3AS1xN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES5_xx( - volatile global long *p, enum Scope scope, enum MemorySemanticsMask eq, - enum MemorySemanticsMask neq, long val, long cmp) { - return __sync_val_compare_and_swap_8(p, cmp, val); -} - -_CLC_DEF ulong -_Z29__spirv_AtomicCompareExchangePU3AS3yN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES5_yy( - volatile local ulong *p, enum Scope scope, enum MemorySemanticsMask eq, - enum MemorySemanticsMask neq, ulong val, ulong cmp) { - return __sync_val_compare_and_swap_8(p, cmp, val); -} - -_CLC_DEF ulong -_Z29__spirv_AtomicCompareExchangePU3AS1yN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES5_yy( - volatile global ulong *p, enum Scope scope, enum MemorySemanticsMask eq, - enum MemorySemanticsMask neq, ulong val, ulong cmp) { - return __sync_val_compare_and_swap_8(p, cmp, val); -} #endif diff --git a/libclc/generic/libspirv/atomic/atomic_load.cl b/libclc/generic/libspirv/atomic/atomic_load.cl index 7538b00606b6c..6d8b1447261b5 100644 --- a/libclc/generic/libspirv/atomic/atomic_load.cl +++ b/libclc/generic/libspirv/atomic/atomic_load.cl @@ -40,8 +40,6 @@ IMPL_AS(unsigned int, j, u, 4) #ifdef cl_khr_int64_base_atomics IMPL_AS(long, l, , 8) IMPL_AS(unsigned long, m, u, 8) -IMPL_AS(long, x, , 8) -IMPL_AS(unsigned long, y, u, 8) #endif #undef FDECL diff --git a/libclc/generic/libspirv/atomic/atomic_max.cl b/libclc/generic/libspirv/atomic/atomic_max.cl index 7c650294b918e..a2c37c258760c 100644 --- a/libclc/generic/libspirv/atomic/atomic_max.cl +++ b/libclc/generic/libspirv/atomic/atomic_max.cl @@ -33,9 +33,5 @@ IMPL(long, l, global, AS1, __spirv_AtomicSMax, __clc, max_global_8) IMPL(unsigned long, m, global, AS1, __spirv_AtomicUMax, __clc, umax_global_8) IMPL(long, l, local, AS3, __spirv_AtomicSMax, __clc, max_local_8) IMPL(unsigned long, m, local, AS3, __spirv_AtomicUMax, __clc, umax_local_8) -IMPL(long, x, global, AS1, __spirv_AtomicSMax, __clc, max_global_8) -IMPL(unsigned long, y, global, AS1, __spirv_AtomicUMax, __clc, umax_global_8) -IMPL(long, x, local, AS3, __spirv_AtomicSMax, __clc, max_local_8) -IMPL(unsigned long, y, local, AS3, __spirv_AtomicUMax, __clc, umax_local_8) #endif #undef IMPL diff --git a/libclc/generic/libspirv/atomic/atomic_min.cl b/libclc/generic/libspirv/atomic/atomic_min.cl index 6b916c2303c82..3e3c4dfdf727c 100644 --- a/libclc/generic/libspirv/atomic/atomic_min.cl +++ b/libclc/generic/libspirv/atomic/atomic_min.cl @@ -33,9 +33,5 @@ IMPL(long, l, global, AS1, __spirv_AtomicSMin, __clc, min_global_8) IMPL(unsigned long, m, global, AS1, __spirv_AtomicUMin, __clc, umin_global_8) IMPL(long, l, local, AS3, __spirv_AtomicSMin, __clc, min_local_8) IMPL(unsigned long, m, local, AS3, __spirv_AtomicUMin, __clc, umin_local_8) -IMPL(long, x, global, AS1, __spirv_AtomicSMin, __clc, min_global_8) -IMPL(unsigned long, y, global, AS1, __spirv_AtomicUMin, __clc, umin_global_8) -IMPL(long, x, local, AS3, __spirv_AtomicSMin, __clc, min_local_8) -IMPL(unsigned long, y, local, AS3, __spirv_AtomicUMin, __clc, umin_local_8) #endif #undef IMPL diff --git a/libclc/generic/libspirv/atomic/atomic_or.cl b/libclc/generic/libspirv/atomic/atomic_or.cl index 44703774f4dcc..1d789ca074d01 100644 --- a/libclc/generic/libspirv/atomic/atomic_or.cl +++ b/libclc/generic/libspirv/atomic/atomic_or.cl @@ -28,9 +28,5 @@ IMPL(long, l, global, AS1, __sync_fetch_and_or_8) IMPL(unsigned long, m, global, AS1, __sync_fetch_and_or_8) IMPL(long, l, local, AS3, __sync_fetch_and_or_8) IMPL(unsigned long, m, local, AS3, __sync_fetch_and_or_8) -IMPL(long, x, global, AS1, __sync_fetch_and_or_8) -IMPL(unsigned long, y, global, AS1, __sync_fetch_and_or_8) -IMPL(long, x, local, AS3, __sync_fetch_and_or_8) -IMPL(unsigned long, y, local, AS3, __sync_fetch_and_or_8) #endif #undef IMPL diff --git a/libclc/generic/libspirv/atomic/atomic_store.cl b/libclc/generic/libspirv/atomic/atomic_store.cl index 44fd54602d059..d24672957ddc4 100644 --- a/libclc/generic/libspirv/atomic/atomic_store.cl +++ b/libclc/generic/libspirv/atomic/atomic_store.cl @@ -56,8 +56,6 @@ IMPL_AS(unsigned int, j, u, 4) #ifdef cl_khr_int64_base_atomics IMPL_AS(long, l, , 8) IMPL_AS(unsigned long, m, u, 8) -IMPL_AS(long, x, , 8) -IMPL_AS(unsigned long, y, u, 8) #endif #undef FDECL diff --git a/libclc/generic/libspirv/atomic/atomic_sub.cl b/libclc/generic/libspirv/atomic/atomic_sub.cl index 3457f5d9f9cb0..59f78a7cf7c44 100644 --- a/libclc/generic/libspirv/atomic/atomic_sub.cl +++ b/libclc/generic/libspirv/atomic/atomic_sub.cl @@ -28,9 +28,5 @@ IMPL(long, l, global, AS1, __sync_fetch_and_sub_8) IMPL(unsigned long, m, global, AS1, __sync_fetch_and_sub_8) IMPL(long, l, local, AS3, __sync_fetch_and_sub_8) IMPL(unsigned long, m, local, AS3, __sync_fetch_and_sub_8) -IMPL(long, x, global, AS1, __sync_fetch_and_sub_8) -IMPL(unsigned long, y, global, AS1, __sync_fetch_and_sub_8) -IMPL(long, x, local, AS3, __sync_fetch_and_sub_8) -IMPL(unsigned long, y, local, AS3, __sync_fetch_and_sub_8) #endif #undef IMPL diff --git a/libclc/generic/libspirv/atomic/atomic_xchg.cl b/libclc/generic/libspirv/atomic/atomic_xchg.cl index cbde1269c464f..6f22977caa530 100644 --- a/libclc/generic/libspirv/atomic/atomic_xchg.cl +++ b/libclc/generic/libspirv/atomic/atomic_xchg.cl @@ -46,9 +46,5 @@ IMPL(long, l, global, AS1, __sync_swap_8) IMPL(unsigned long, m, global, AS1, __sync_swap_8) IMPL(long, l, local, AS3, __sync_swap_8) IMPL(unsigned long, m, local, AS3, __sync_swap_8) -IMPL(long, x, global, AS1, __sync_swap_8) -IMPL(unsigned long, y, global, AS1, __sync_swap_8) -IMPL(long, x, local, AS3, __sync_swap_8) -IMPL(unsigned long, y, local, AS3, __sync_swap_8) #endif #undef IMPL diff --git a/libclc/generic/libspirv/atomic/atomic_xor.cl b/libclc/generic/libspirv/atomic/atomic_xor.cl index 9f0945ea8a3e0..248c438d265d2 100644 --- a/libclc/generic/libspirv/atomic/atomic_xor.cl +++ b/libclc/generic/libspirv/atomic/atomic_xor.cl @@ -28,9 +28,5 @@ IMPL(long, l, global, AS1, __sync_fetch_and_xor_8) IMPL(unsigned long, m, global, AS1, __sync_fetch_and_xor_8) IMPL(long, l, local, AS3, __sync_fetch_and_xor_8) IMPL(unsigned long, m, local, AS3, __sync_fetch_and_xor_8) -IMPL(long, x, global, AS1, __sync_fetch_and_xor_8) -IMPL(unsigned long, y, global, AS1, __sync_fetch_and_xor_8) -IMPL(long, x, local, AS3, __sync_fetch_and_xor_8) -IMPL(unsigned long, y, local, AS3, __sync_fetch_and_xor_8) #endif #undef IMPL diff --git a/libclc/generic/libspirv/core/integer/clc_add_sat.cl b/libclc/generic/libspirv/core/integer/clc_add_sat.cl index 39db47557dcfb..c158b1cdaaad1 100644 --- a/libclc/generic/libspirv/core/integer/clc_add_sat.cl +++ b/libclc/generic/libspirv/core/integer/clc_add_sat.cl @@ -14,11 +14,6 @@ _CLC_OVERLOAD _CLC_DEF char __clc_add_sat(char x, char y) { return __clc_convert_char_sat(r); } -_CLC_OVERLOAD _CLC_DEF schar __clc_add_sat(schar x, schar y) { - short r = x + y; - return __clc_convert_schar_sat(r); -} - _CLC_OVERLOAD _CLC_DEF uchar __clc_add_sat(uchar x, uchar y) { ushort r = x + y; return __clc_convert_uchar_sat(r); @@ -67,8 +62,6 @@ _CLC_OVERLOAD _CLC_DEF ulong __clc_add_sat(ulong x, ulong y) { } _CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, __clc_add_sat, char, char) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, schar, __clc_add_sat, schar, - schar) _CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uchar, __clc_add_sat, uchar, uchar) _CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, __clc_add_sat, short, diff --git a/libclc/generic/libspirv/core/integer/clc_mad_sat.cl b/libclc/generic/libspirv/core/integer/clc_mad_sat.cl index 92fcceab37046..b8de9385392d0 100644 --- a/libclc/generic/libspirv/core/integer/clc_mad_sat.cl +++ b/libclc/generic/libspirv/core/integer/clc_mad_sat.cl @@ -53,11 +53,6 @@ _CLC_OVERLOAD _CLC_DEF char __clc_mad_sat(char x, char y, char z) { (short)CHAR_MIN, (short)CHAR_MAX); } -_CLC_OVERLOAD _CLC_DEF schar __clc_mad_sat(schar x, schar y, schar z) { - return __clc_clamp((short)__clc_mad24((short)x, (short)y, (short)z), - (short)CHAR_MIN, (short)CHAR_MAX); -} - _CLC_OVERLOAD _CLC_DEF ulong __clc_mad_sat(ulong x, ulong y, ulong z) { if (__clc_mul_hi(x, y) != 0) return ULONG_MAX; @@ -88,8 +83,6 @@ _CLC_TERNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, __clc_mad_sat, short, short, short) _CLC_TERNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, __clc_mad_sat, char, char, char) -_CLC_TERNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, schar, __clc_mad_sat, schar, - schar, schar) _CLC_TERNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uchar, __clc_mad_sat, uchar, uchar, uchar) _CLC_TERNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ushort, __clc_mad_sat, ushort, diff --git a/libclc/generic/libspirv/core/integer/clc_mul_hi.cl b/libclc/generic/libspirv/core/integer/clc_mul_hi.cl index 19676f1a57972..2efca84260021 100644 --- a/libclc/generic/libspirv/core/integer/clc_mul_hi.cl +++ b/libclc/generic/libspirv/core/integer/clc_mul_hi.cl @@ -102,7 +102,6 @@ _CLC_OVERLOAD _CLC_DEF ulong __clc_mul_hi(ulong x, ulong y) { #define __CLC_MUL_HI_TYPES() \ __CLC_MUL_HI_DEC_IMPL(short, char, 8) \ - __CLC_MUL_HI_DEC_IMPL(short, schar, 8) \ __CLC_MUL_HI_DEC_IMPL(ushort, uchar, 8) \ __CLC_MUL_HI_DEC_IMPL(int, short, 16) \ __CLC_MUL_HI_DEC_IMPL(uint, ushort, 16) \ diff --git a/libclc/generic/libspirv/core/integer/clc_sub_sat.cl b/libclc/generic/libspirv/core/integer/clc_sub_sat.cl index cc128e64ffbe7..2a6d7ece12e7b 100644 --- a/libclc/generic/libspirv/core/integer/clc_sub_sat.cl +++ b/libclc/generic/libspirv/core/integer/clc_sub_sat.cl @@ -14,11 +14,6 @@ _CLC_OVERLOAD _CLC_DEF char __clc_sub_sat(char x, char y) { return __clc_convert_char_sat(r); } -_CLC_OVERLOAD _CLC_DEF schar __clc_sub_sat(schar x, schar y) { - short r = x - y; - return __clc_convert_schar_sat(r); -} - _CLC_OVERLOAD _CLC_DEF uchar __clc_sub_sat(uchar x, uchar y) { short r = x - y; return __clc_convert_uchar_sat(r); @@ -65,8 +60,6 @@ _CLC_OVERLOAD _CLC_DEF ulong __clc_sub_sat(ulong x, ulong y) { } _CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, __clc_sub_sat, char, char) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, schar, __clc_sub_sat, schar, - schar) _CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uchar, __clc_sub_sat, uchar, uchar) _CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, __clc_sub_sat, short, diff --git a/libclc/generic/libspirv/core/integer/clc_upsample.cl b/libclc/generic/libspirv/core/integer/clc_upsample.cl index b6c8eb1c819e2..d6f4f90f83b15 100644 --- a/libclc/generic/libspirv/core/integer/clc_upsample.cl +++ b/libclc/generic/libspirv/core/integer/clc_upsample.cl @@ -41,7 +41,6 @@ #define __CLC_UPSAMPLE_TYPES() \ __CLC_UPSAMPLE_IMPL(short, char, uchar, 8) \ - __CLC_UPSAMPLE_IMPL(short, schar, uchar, 8) \ __CLC_UPSAMPLE_IMPL(ushort, uchar, uchar, 8) \ __CLC_UPSAMPLE_IMPL(int, short, ushort, 16) \ __CLC_UPSAMPLE_IMPL(uint, ushort, ushort, 16) \ diff --git a/libclc/generic/libspirv/gen_convert.py b/libclc/generic/libspirv/gen_convert.py index 9e3f46b7ef5d1..ac5023a8b935a 100755 --- a/libclc/generic/libspirv/gen_convert.py +++ b/libclc/generic/libspirv/gen_convert.py @@ -25,9 +25,6 @@ unsigned_type, sizeof_type, limit_max, limit_min, conditional_guard, close_conditional_guard, clc_core_fn_name) -types.remove('char') -int_types.remove('char') -signed_types.remove('char') rounding_modes = [''] + rounding_modes print("""/* !!!! AUTOGENERATED FILE generated by convert_type.py !!!!! @@ -83,9 +80,6 @@ def spirv_fn_name(src, dst, size='', mode='', sat='', force_sat_decoration=False is_dst_signed = dst in signed_types use_sat_insn = sat != '' and not force_sat_decoration - if dst == "schar": - dst = "char" - if is_src_unsigned and is_dst_signed and use_sat_insn: return '__spirv_SatConvertUToS_R{DST}{N}'.format(DST=dst, N=size) elif is_src_signed and is_dst_unsigned and use_sat_insn: diff --git a/libclc/generic/libspirv/integer/clz.cl b/libclc/generic/libspirv/integer/clz.cl index bf59932620d84..75870625407c5 100644 --- a/libclc/generic/libspirv/integer/clz.cl +++ b/libclc/generic/libspirv/integer/clz.cl @@ -13,10 +13,6 @@ _CLC_OVERLOAD _CLC_DEF char __spirv_ocl_clz(char x) { return __spirv_ocl_clz((ushort)(uchar)x) - 8; } -_CLC_OVERLOAD _CLC_DEF schar __spirv_ocl_clz(schar x) { - return __spirv_ocl_clz((ushort)(uchar)x) - 8; -} - _CLC_OVERLOAD _CLC_DEF uchar __spirv_ocl_clz(uchar x) { return __spirv_ocl_clz((ushort)x) - 8; } @@ -46,7 +42,6 @@ _CLC_OVERLOAD _CLC_DEF ulong __spirv_ocl_clz(ulong x) { } _CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, __spirv_ocl_clz, char) -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, schar, __spirv_ocl_clz, schar) _CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uchar, __spirv_ocl_clz, uchar) _CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, __spirv_ocl_clz, short) _CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ushort, __spirv_ocl_clz, ushort) diff --git a/libclc/generic/libspirv/integer/ctz.cl b/libclc/generic/libspirv/integer/ctz.cl index 43e6879c04867..5356652e3aabf 100644 --- a/libclc/generic/libspirv/integer/ctz.cl +++ b/libclc/generic/libspirv/integer/ctz.cl @@ -37,16 +37,11 @@ _CLC_OVERLOAD _CLC_DEF char __spirv_ocl_ctz(char x) { return __spirv_ocl_ctz((ushort)(uchar)x) - 8; } -_CLC_OVERLOAD _CLC_DEF schar __spirv_ocl_ctz(schar x) { - return __spirv_ocl_ctz((ushort)(uchar)x) - 8; -} - _CLC_OVERLOAD _CLC_DEF uchar __spirv_ocl_ctz(uchar x) { return __spirv_ocl_ctz((ushort)x) - 8; } _CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, __spirv_ocl_ctz, char) -_CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, schar, __spirv_ocl_ctz, schar) _CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, uchar, __spirv_ocl_ctz, uchar) _CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, __spirv_ocl_ctz, short) _CLC_UNARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, ushort, __spirv_ocl_ctz, ushort) diff --git a/libclc/generic/libspirv/integer/upsample.cl b/libclc/generic/libspirv/integer/upsample.cl index b7a80748081af..7ed788c68af4b 100644 --- a/libclc/generic/libspirv/integer/upsample.cl +++ b/libclc/generic/libspirv/integer/upsample.cl @@ -37,7 +37,6 @@ #define __CLC_UPSAMPLE_TYPES() \ __CLC_UPSAMPLE_IMPL(s, short, char, uchar) \ - __CLC_UPSAMPLE_IMPL(s, short, schar, uchar) \ __CLC_UPSAMPLE_IMPL(u, ushort, uchar, uchar) \ __CLC_UPSAMPLE_IMPL(s, int, short, ushort) \ __CLC_UPSAMPLE_IMPL(u, uint, ushort, ushort) \ diff --git a/libclc/generic/libspirv/math/maxmag.inc b/libclc/generic/libspirv/math/maxmag.inc index e74e75d16268f..828b77bb6dcea 100644 --- a/libclc/generic/libspirv/math/maxmag.inc +++ b/libclc/generic/libspirv/math/maxmag.inc @@ -10,7 +10,7 @@ #define __CLC_VECSIZE #endif -#define __CLC_CHARN __CLC_XCONCAT(schar, __CLC_VECSIZE) +#define __CLC_CHARN __CLC_XCONCAT(char, __CLC_VECSIZE) #if __CLC_FPSIZE == 64 #define __CLC_CONVERT_NATN __CLC_XCONCAT(__spirv_SConvert_Rlong, __CLC_VECSIZE) diff --git a/libclc/generic/libspirv/math/minmag.inc b/libclc/generic/libspirv/math/minmag.inc index 56178269a17e5..3611596a55e0b 100644 --- a/libclc/generic/libspirv/math/minmag.inc +++ b/libclc/generic/libspirv/math/minmag.inc @@ -10,7 +10,7 @@ #define __CLC_VECSIZE #endif -#define __CLC_CHARN __CLC_XCONCAT(schar, __CLC_VECSIZE) +#define __CLC_CHARN __CLC_XCONCAT(char, __CLC_VECSIZE) #if __CLC_FPSIZE == 64 #define __CLC_CONVERT_NATN __CLC_XCONCAT(__spirv_SConvert_Rlong, __CLC_VECSIZE) diff --git a/libclc/generic/libspirv/misc/shuffle.cl b/libclc/generic/libspirv/misc/shuffle.cl index bdb413e1ae77f..62c05d1b93067 100644 --- a/libclc/generic/libspirv/misc/shuffle.cl +++ b/libclc/generic/libspirv/misc/shuffle.cl @@ -138,7 +138,6 @@ _CLC_VECTOR_SHUFFLE_MASKSIZE(TYPE, 16, MASKTYPE) _CLC_VECTOR_SHUFFLE_INSIZE(char, uchar) -_CLC_VECTOR_SHUFFLE_INSIZE(schar, uchar) _CLC_VECTOR_SHUFFLE_INSIZE(short, ushort) _CLC_VECTOR_SHUFFLE_INSIZE(int, uint) _CLC_VECTOR_SHUFFLE_INSIZE(long, ulong) diff --git a/libclc/generic/libspirv/misc/shuffle2.cl b/libclc/generic/libspirv/misc/shuffle2.cl index 5a37373612345..9f3cdbc230945 100644 --- a/libclc/generic/libspirv/misc/shuffle2.cl +++ b/libclc/generic/libspirv/misc/shuffle2.cl @@ -140,7 +140,6 @@ _CLC_VECTOR_SHUFFLE_MASKSIZE(TYPE, 16, MASKTYPE) _CLC_VECTOR_SHUFFLE_INSIZE(char, uchar) -_CLC_VECTOR_SHUFFLE_INSIZE(schar, uchar) _CLC_VECTOR_SHUFFLE_INSIZE(short, ushort) _CLC_VECTOR_SHUFFLE_INSIZE(int, uint) _CLC_VECTOR_SHUFFLE_INSIZE(long, ulong) diff --git a/libclc/generic/libspirv/relational/all.cl b/libclc/generic/libspirv/relational/all.cl index f611c59b8e216..c4e18ac039e4a 100644 --- a/libclc/generic/libspirv/relational/all.cl +++ b/libclc/generic/libspirv/relational/all.cl @@ -31,4 +31,4 @@ bool __spirv_All(bool v) { return v; } ALL_ID(TYPE##8) { return _CLC_ALL8(v); } \ ALL_ID(TYPE##16) { return _CLC_ALL16(v); } -ALL_VECTORIZE(schar) +ALL_VECTORIZE(char) diff --git a/libclc/generic/libspirv/relational/any.cl b/libclc/generic/libspirv/relational/any.cl index 5885f48361533..7802bcca9e394 100644 --- a/libclc/generic/libspirv/relational/any.cl +++ b/libclc/generic/libspirv/relational/any.cl @@ -31,4 +31,4 @@ bool __spirv_Any(bool v) { return v; } ANY_ID(TYPE##8) { return _CLC_ANY8(v); } \ ANY_ID(TYPE##16) { return _CLC_ANY16(v); } -ANY_VECTORIZE(schar) +ANY_VECTORIZE(char) diff --git a/libclc/generic/libspirv/relational/genbinrelational.inc b/libclc/generic/libspirv/relational/genbinrelational.inc index 14a41401839ac..364b781a89c04 100644 --- a/libclc/generic/libspirv/relational/genbinrelational.inc +++ b/libclc/generic/libspirv/relational/genbinrelational.inc @@ -8,7 +8,7 @@ _CLC_DEFINE_RELATIONAL_BINARY_SCALAR(bool, _CLC_SPIRV_BUILTIN, _CLC_BUILTIN_IMPL, float, float) -_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(schar, _CLC_SPIRV_BUILTIN, float, float) +_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(char, _CLC_SPIRV_BUILTIN, float, float) #ifdef cl_khr_fp64 @@ -16,7 +16,7 @@ _CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(schar, _CLC_SPIRV_BUILTIN, float, float) _CLC_DEFINE_RELATIONAL_BINARY_SCALAR(bool, _CLC_SPIRV_BUILTIN, _CLC_BUILTIN_IMPL, double, double) -_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(schar, _CLC_SPIRV_BUILTIN, double, double) +_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(char, _CLC_SPIRV_BUILTIN, double, double) #endif @@ -26,6 +26,6 @@ _CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(schar, _CLC_SPIRV_BUILTIN, double, double) _CLC_DEFINE_RELATIONAL_BINARY_SCALAR(bool, _CLC_SPIRV_BUILTIN, _CLC_BUILTIN_IMPL, half, half) -_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(schar, _CLC_SPIRV_BUILTIN, half, half) +_CLC_DEFINE_RELATIONAL_BINARY_VEC_ALL(char, _CLC_SPIRV_BUILTIN, half, half) #endif diff --git a/libclc/generic/libspirv/relational/genunary.inc b/libclc/generic/libspirv/relational/genunary.inc index 80137ca3bc629..7f373d0a27618 100644 --- a/libclc/generic/libspirv/relational/genunary.inc +++ b/libclc/generic/libspirv/relational/genunary.inc @@ -8,7 +8,7 @@ _CLC_DEFINE_RELATIONAL_UNARY_SCALAR(bool, _CLC_SPIRV_BUILTIN, _CLC_BUILTIN_IMPL, float) -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, _CLC_SPIRV_BUILTIN, float) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, _CLC_SPIRV_BUILTIN, float) #ifdef cl_khr_fp64 @@ -16,7 +16,7 @@ _CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, _CLC_SPIRV_BUILTIN, float) _CLC_DEFINE_RELATIONAL_UNARY_SCALAR(bool, _CLC_SPIRV_BUILTIN, _CLC_BUILTIN_IMPL, double) -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, _CLC_SPIRV_BUILTIN, double) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, _CLC_SPIRV_BUILTIN, double) #endif #ifdef cl_khr_fp16 @@ -25,6 +25,6 @@ _CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, _CLC_SPIRV_BUILTIN, double) _CLC_DEFINE_RELATIONAL_UNARY_SCALAR(bool, _CLC_SPIRV_BUILTIN, _CLC_BUILTIN_IMPL, half) -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, _CLC_SPIRV_BUILTIN, half) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, _CLC_SPIRV_BUILTIN, half) #endif diff --git a/libclc/generic/libspirv/shared/vload.cl b/libclc/generic/libspirv/shared/vload.cl index 54beef922055c..e5579e01cf7c6 100644 --- a/libclc/generic/libspirv/shared/vload.cl +++ b/libclc/generic/libspirv/shared/vload.cl @@ -68,9 +68,8 @@ #define VLOAD_ADDR_SPACES(__CLC_SCALAR_GENTYPE) \ VLOAD_ADDR_SPACES_IMPL(__CLC_SCALAR_GENTYPE, __CLC_SCALAR_GENTYPE) -VLOAD_ADDR_SPACES_IMPL(char, schar) - #define VLOAD_TYPES() \ + VLOAD_ADDR_SPACES(char) \ VLOAD_ADDR_SPACES(uchar) \ VLOAD_ADDR_SPACES(short) \ VLOAD_ADDR_SPACES(ushort) \ diff --git a/libclc/generic/libspirv/shared/vstore.cl b/libclc/generic/libspirv/shared/vstore.cl index 18363d1594844..739b5b5c6fc43 100644 --- a/libclc/generic/libspirv/shared/vstore.cl +++ b/libclc/generic/libspirv/shared/vstore.cl @@ -63,7 +63,7 @@ VSTORE_VECTORIZE(__CLC_SCALAR___CLC_GENTYPE, __local) \ VSTORE_VECTORIZE(__CLC_SCALAR___CLC_GENTYPE, __global) -VSTORE_ADDR_SPACES(schar) +VSTORE_ADDR_SPACES(char) VSTORE_ADDR_SPACES(uchar) VSTORE_ADDR_SPACES(short) VSTORE_ADDR_SPACES(ushort) diff --git a/libclc/ptx-nvidiacl/libspirv/images/image.cl b/libclc/ptx-nvidiacl/libspirv/images/image.cl index 22842c2f68854..6e8a9a77d3b0c 100644 --- a/libclc/ptx-nvidiacl/libspirv/images/image.cl +++ b/libclc/ptx-nvidiacl/libspirv/images/image.cl @@ -950,7 +950,7 @@ _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(int, i, 3, int4, S1_, float4) _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(uint, j, 1, float, f, float) _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(uint, j, 2, float2, Dv2_f, float2) -_CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(uint, j, 3, float4, DV4_f, float4) +_CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(uint, j, 3, float4, Dv4_f, float4) _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(uint, j, 1, int, i, float) _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(uint, j, 2, int2, Dv2_i, float2) _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(uint, j, 3, int4, Dv4_i, float4) @@ -958,7 +958,7 @@ _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(uint, j, 3, int4, Dv4_i, float4) #ifdef cl_khr_fp16 _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(half, DF16_, 1, float, f, float) _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(half, DF16_, 2, float2, Dv2_f, float2) -_CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(half, DF16_, 3, float4, DV4_f, float4) +_CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(half, DF16_, 3, float4, Dv4_f, float4) _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(half, DF16_, 1, int, i, float) _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(half, DF16_, 2, int2, Dv2_i, float2) _CLC_DEFINE_IMAGE_SAMPLED_READ_BUILTIN(half, DF16_, 3, int4, Dv4_i, float4) diff --git a/libclc/ptx-nvidiacl/libspirv/integer/mul_hi.cl b/libclc/ptx-nvidiacl/libspirv/integer/mul_hi.cl index e68f5c715a969..9a186b2cdde4a 100644 --- a/libclc/ptx-nvidiacl/libspirv/integer/mul_hi.cl +++ b/libclc/ptx-nvidiacl/libspirv/integer/mul_hi.cl @@ -34,15 +34,12 @@ _CLC_OVERLOAD _CLC_DEF ulong __spirv_ocl_u_mul_hi(ulong x, ulong y) { } __CLC_MUL_HI_IMPL(short, __spirv_ocl_s_mul_hi, char, 8) -__CLC_MUL_HI_IMPL(short, __spirv_ocl_s_mul_hi, schar, 8) __CLC_MUL_HI_IMPL(ushort, __spirv_ocl_u_mul_hi, uchar, 8) __CLC_MUL_HI_IMPL(int, __spirv_ocl_s_mul_hi, short, 16) __CLC_MUL_HI_IMPL(uint, __spirv_ocl_u_mul_hi, ushort, 16) _CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, char, __spirv_ocl_s_mul_hi, char, char) -_CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, schar, __spirv_ocl_s_mul_hi, - schar, schar) _CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, short, __spirv_ocl_s_mul_hi, short, short) _CLC_BINARY_VECTORIZE(_CLC_OVERLOAD _CLC_DEF, int, __spirv_ocl_s_mul_hi, int, diff --git a/libclc/ptx-nvidiacl/libspirv/relational/isfinite.cl b/libclc/ptx-nvidiacl/libspirv/relational/isfinite.cl index cc51a7fa76115..abe396d079cb1 100644 --- a/libclc/ptx-nvidiacl/libspirv/relational/isfinite.cl +++ b/libclc/ptx-nvidiacl/libspirv/relational/isfinite.cl @@ -19,7 +19,7 @@ _CLC_DEF _CLC_OVERLOAD bool __spirv_IsFinite(double x) { return __nv_isfinited(x); } -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, __spirv_IsFinite, double) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, __spirv_IsFinite, double) #endif @@ -27,7 +27,7 @@ _CLC_DEF _CLC_OVERLOAD bool __spirv_IsFinite(float x) { return __nv_isfinited(x); } -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, __spirv_IsFinite, float) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, __spirv_IsFinite, float) #ifdef cl_khr_fp16 @@ -37,6 +37,6 @@ _CLC_DEF _CLC_OVERLOAD bool __spirv_IsFinite(half x) { return __nv_isfinited(x); } -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, __spirv_IsFinite, half) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, __spirv_IsFinite, half) #endif diff --git a/libclc/ptx-nvidiacl/libspirv/relational/isinf.cl b/libclc/ptx-nvidiacl/libspirv/relational/isinf.cl index ceaf14bb8843f..1299d3a22a942 100644 --- a/libclc/ptx-nvidiacl/libspirv/relational/isinf.cl +++ b/libclc/ptx-nvidiacl/libspirv/relational/isinf.cl @@ -13,7 +13,7 @@ _CLC_DEF _CLC_OVERLOAD bool __spirv_IsInf(float x) { return __nv_isinff(x); } -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, __spirv_IsInf, float) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, __spirv_IsInf, float) #ifdef cl_khr_fp64 @@ -21,7 +21,7 @@ _CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, __spirv_IsInf, float) _CLC_DEF _CLC_OVERLOAD bool __spirv_IsInf(double x) { return __nv_isinfd(x); } -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, __spirv_IsInf, double) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, __spirv_IsInf, double) #endif #ifdef cl_khr_fp16 @@ -33,5 +33,5 @@ _CLC_DEF _CLC_OVERLOAD bool __spirv_IsInf(half x) { return __spirv_IsInf(f); } -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, __spirv_IsInf, half) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, __spirv_IsInf, half) #endif diff --git a/libclc/ptx-nvidiacl/libspirv/relational/isnan.cl b/libclc/ptx-nvidiacl/libspirv/relational/isnan.cl index 64b061cc2bc67..577b96534aa64 100644 --- a/libclc/ptx-nvidiacl/libspirv/relational/isnan.cl +++ b/libclc/ptx-nvidiacl/libspirv/relational/isnan.cl @@ -13,7 +13,7 @@ _CLC_DEF _CLC_OVERLOAD bool __spirv_IsNan(float x) { return __nv_isnanf(x); } -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, __spirv_IsNan, float) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, __spirv_IsNan, float) #ifdef cl_khr_fp64 @@ -21,7 +21,7 @@ _CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, __spirv_IsNan, float) _CLC_DEF _CLC_OVERLOAD bool __spirv_IsNan(double x) { return __nv_isnand(x); } -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, __spirv_IsNan, double) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, __spirv_IsNan, double) #endif #ifdef cl_khr_fp16 @@ -33,5 +33,5 @@ _CLC_DEF _CLC_OVERLOAD bool __spirv_IsNan(half x) { return __spirv_IsNan(f); } -_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(schar, __spirv_IsNan, half) +_CLC_DEFINE_RELATIONAL_UNARY_VEC_ALL(char, __spirv_IsNan, half) #endif diff --git a/libclc/ptx/lib/math/nextafter.cl b/libclc/ptx/lib/math/nextafter.cl index 5b4521d21c26a..d8bbf79e1471b 100644 --- a/libclc/ptx/lib/math/nextafter.cl +++ b/libclc/ptx/lib/math/nextafter.cl @@ -1,5 +1,5 @@ #include -#include "../lib/clcmacro.h" +#include #include _CLC_DEFINE_BINARY_BUILTIN(float, nextafter, __clc_nextafter, float, float) diff --git a/libclc/utils/CMakeLists.txt b/libclc/utils/CMakeLists.txt index deb2dee835c8e..aeeb3e922040d 100644 --- a/libclc/utils/CMakeLists.txt +++ b/libclc/utils/CMakeLists.txt @@ -15,3 +15,6 @@ add_llvm_executable( prepare_builtins prepare-builtins.cpp ) target_compile_definitions( prepare_builtins PRIVATE ${LLVM_VERSION_DEFINE} ) + +# Setup remangler tool +add_llvm_subdirectory(LIBCLC TOOL libclc-remangler) diff --git a/libclc/utils/libclc-remangler/CMakeLists.txt b/libclc/utils/libclc-remangler/CMakeLists.txt new file mode 100644 index 0000000000000..4268b39abae27 --- /dev/null +++ b/libclc/utils/libclc-remangler/CMakeLists.txt @@ -0,0 +1,14 @@ +# Setup libclc-remangler +set(LLVM_LINK_COMPONENTS + BitWriter + BitReader + Support + ) + +add_clang_tool(libclc-remangler LibclcRemangler.cpp) + +target_include_directories(libclc-remangler PRIVATE + ${CMAKE_SOURCE_DIR}/../clang/include + ${CMAKE_BINARY_DIR}/tools/clang/include) + +clang_target_link_libraries(libclc-remangler PRIVATE clangBasic) diff --git a/libclc/utils/libclc-remangler/LibclcRemangler.cpp b/libclc/utils/libclc-remangler/LibclcRemangler.cpp new file mode 100644 index 0000000000000..c26c5640ada38 --- /dev/null +++ b/libclc/utils/libclc-remangler/LibclcRemangler.cpp @@ -0,0 +1,599 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file implements a tool for ensuring consistent mangling between libclc +// and the target. This tool remangles all functions using `long`, +// `unsigned long`, and `char` to appear as if they use `long long`, +// `unsigned long long`, and `signed char`, as is consistent with the primitive +// types defined by OpenCL C. Following a remangling, the original function +// mangling will be made an alias to either the remangled function or a function +// with a suitable function if any exists. +// +// Example: If libclc defined a function `f(long)` the mangled name would be +// `_Z1fl`. The remangler would rename this function to `_Z1fx` +// (`f(long long)`.) If the target uses 64-bit `long`, `_Z1fl` is made +// an alias to the old function now under the name `_Z1fx`, whereas if +// the target uses 32-bit `long`, `_Z1fl` is made an alias to `_Z1fi` +// (`f(int)`) if such a function exists. +// +//===----------------------------------------------------------------------===// + +#include "clang/Basic/Diagnostic.h" +#include "clang/Basic/TargetInfo.h" +#include "clang/Basic/TargetOptions.h" +#include "llvm/ADT/STLExtras.h" +#include "llvm/Bitcode/BitcodeReader.h" +#include "llvm/Bitcode/BitcodeWriter.h" +#include "llvm/Demangle/ItaniumDemangle.h" +#include "llvm/IR/DiagnosticInfo.h" +#include "llvm/IR/DiagnosticPrinter.h" +#include "llvm/IR/IntrinsicInst.h" +#include "llvm/IR/LLVMContext.h" +#include "llvm/IR/Module.h" +#include "llvm/IR/Type.h" +#include "llvm/Option/OptTable.h" +#include "llvm/Support/CommandLine.h" +#include "llvm/Support/Error.h" +#include "llvm/Support/FileSystem.h" +#include "llvm/Support/InitLLVM.h" +#include "llvm/Support/Signals.h" +#include "llvm/Support/ToolOutputFile.h" +#include "llvm/Support/raw_ostream.h" + +#include +#include +#include + +using namespace clang; +using namespace llvm; +using namespace llvm::itanium_demangle; + +enum class Signedness { Signed, Unsigned }; +enum class SupportedLongWidth { L32, L64 }; + +static ExitOnError ExitOnErr; + +static cl::opt InputFilename(cl::Positional, + cl::desc("