forked from OSchip/llvm-project
Revert "[OpenCL] Add support of __opencl_c_pipes feature macro."
This reverts commit d1e4b25756
.
This commit is contained in:
parent
d1e4b25756
commit
da6626d126
|
@ -224,7 +224,7 @@ LANGOPT(OpenCLVersion , 32, 0, "OpenCL C version")
|
|||
LANGOPT(OpenCLCPlusPlus , 1, 0, "C++ for OpenCL")
|
||||
LANGOPT(OpenCLCPlusPlusVersion , 32, 0, "C++ for OpenCL version")
|
||||
LANGOPT(OpenCLGenericAddressSpace, 1, 0, "OpenCL generic keyword")
|
||||
LANGOPT(OpenCLPipes , 1, 0, "OpenCL pipes language constructs and built-ins")
|
||||
LANGOPT(OpenCLPipe , 1, 0, "OpenCL pipe keyword")
|
||||
LANGOPT(NativeHalfType , 1, 0, "Native half type support")
|
||||
LANGOPT(NativeHalfArgsAndReturns, 1, 0, "Native half args and returns")
|
||||
LANGOPT(HalfArgsAndReturns, 1, 0, "half args and returns")
|
||||
|
|
|
@ -112,8 +112,7 @@ bool OpenCLOptions::diagnoseUnsupportedFeatureDependencies(
|
|||
// supported.
|
||||
static const llvm::StringMap<llvm::StringRef> DependentFeaturesMap = {
|
||||
{"__opencl_c_read_write_images", "__opencl_c_images"},
|
||||
{"__opencl_c_3d_image_writes", "__opencl_c_images"},
|
||||
{"__opencl_c_pipes", "__opencl_c_generic_address_space"}};
|
||||
{"__opencl_c_3d_image_writes", "__opencl_c_images"}};
|
||||
|
||||
auto OpenCLFeaturesMap = TI.getSupportedOpenCLOpts();
|
||||
|
||||
|
|
|
@ -400,18 +400,14 @@ void TargetInfo::adjust(DiagnosticsEngine &Diags, LangOptions &Opts) {
|
|||
// OpenCL C v3.0 s6.7.5 - The generic address space requires support for
|
||||
// OpenCL C 2.0 or OpenCL C 3.0 with the __opencl_c_generic_address_space
|
||||
// feature
|
||||
// OpenCL C v3.0 s6.2.1 - OpenCL pipes require support of OpenCL C 2.0
|
||||
// or later and __opencl_c_pipes feature
|
||||
// FIXME: These language options are also defined in setLangDefaults()
|
||||
// FIXME: OpenCLGenericAddressSpace is also defined in setLangDefaults()
|
||||
// for OpenCL C 2.0 but with no access to target capabilities. Target
|
||||
// should be immutable once created and thus these language options need
|
||||
// should be immutable once created and thus this language option needs
|
||||
// to be defined only once.
|
||||
if (Opts.OpenCLVersion == 300) {
|
||||
if (Opts.OpenCLVersion >= 300) {
|
||||
const auto &OpenCLFeaturesMap = getSupportedOpenCLOpts();
|
||||
Opts.OpenCLGenericAddressSpace = hasFeatureEnabled(
|
||||
OpenCLFeaturesMap, "__opencl_c_generic_address_space");
|
||||
Opts.OpenCLPipes =
|
||||
hasFeatureEnabled(OpenCLFeaturesMap, "__opencl_c_pipes");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -3173,7 +3173,7 @@ void CompilerInvocation::setLangDefaults(LangOptions &Opts, InputKind IK,
|
|||
Opts.ZVector = 0;
|
||||
Opts.setDefaultFPContractMode(LangOptions::FPM_On);
|
||||
Opts.OpenCLCPlusPlus = Opts.CPlusPlus;
|
||||
Opts.OpenCLPipes = Opts.OpenCLCPlusPlus || Opts.OpenCLVersion == 200;
|
||||
Opts.OpenCLPipe = Opts.OpenCLCPlusPlus || Opts.OpenCLVersion == 200;
|
||||
Opts.OpenCLGenericAddressSpace =
|
||||
Opts.OpenCLCPlusPlus || Opts.OpenCLVersion == 200;
|
||||
|
||||
|
|
|
@ -3952,12 +3952,8 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS,
|
|||
Tok.getIdentifierInfo()->revertTokenIDToIdentifier();
|
||||
Tok.setKind(tok::identifier);
|
||||
goto DoneWithDeclSpec;
|
||||
} else if (!getLangOpts().OpenCLPipes) {
|
||||
DiagID = diag::err_opencl_unknown_type_specifier;
|
||||
PrevSpec = Tok.getIdentifierInfo()->getNameStart();
|
||||
isInvalid = true;
|
||||
} else
|
||||
isInvalid = DS.SetTypePipe(true, Loc, PrevSpec, DiagID, Policy);
|
||||
}
|
||||
isInvalid = DS.SetTypePipe(true, Loc, PrevSpec, DiagID, Policy);
|
||||
break;
|
||||
// We only need to enumerate each image type once.
|
||||
#define IMAGE_READ_WRITE_TYPE(Type, Id, Ext)
|
||||
|
@ -5130,10 +5126,8 @@ bool Parser::isDeclarationSpecifier(bool DisambiguatingWithExpression) {
|
|||
switch (Tok.getKind()) {
|
||||
default: return false;
|
||||
|
||||
// OpenCL 2.0 and later define this keyword.
|
||||
case tok::kw_pipe:
|
||||
return (getLangOpts().OpenCL && getLangOpts().OpenCLVersion >= 200) ||
|
||||
getLangOpts().OpenCLCPlusPlus;
|
||||
return getLangOpts().OpenCLPipe;
|
||||
|
||||
case tok::identifier: // foo::bar
|
||||
// Unfortunate hack to support "Class.factoryMethod" notation.
|
||||
|
@ -5662,9 +5656,7 @@ static bool isPtrOperatorToken(tok::TokenKind Kind, const LangOptions &Lang,
|
|||
if (Kind == tok::star || Kind == tok::caret)
|
||||
return true;
|
||||
|
||||
// OpenCL 2.0 and later define this keyword.
|
||||
if (Kind == tok::kw_pipe &&
|
||||
((Lang.OpenCL && Lang.OpenCLVersion >= 200) || Lang.OpenCLCPlusPlus))
|
||||
if (Kind == tok::kw_pipe && Lang.OpenCLPipe)
|
||||
return true;
|
||||
|
||||
if (!Lang.CPlusPlus)
|
||||
|
|
|
@ -333,8 +333,7 @@ void Sema::Initialize() {
|
|||
if (getLangOpts().OpenCLCPlusPlus || getLangOpts().OpenCLVersion >= 200) {
|
||||
addImplicitTypedef("clk_event_t", Context.OCLClkEventTy);
|
||||
addImplicitTypedef("queue_t", Context.OCLQueueTy);
|
||||
if (getLangOpts().OpenCLPipes)
|
||||
addImplicitTypedef("reserve_id_t", Context.OCLReserveIDTy);
|
||||
addImplicitTypedef("reserve_id_t", Context.OCLReserveIDTy);
|
||||
addImplicitTypedef("atomic_int", Context.getAtomicType(Context.IntTy));
|
||||
addImplicitTypedef("atomic_uint",
|
||||
Context.getAtomicType(Context.UnsignedIntTy));
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL2.0 -emit-llvm -o - | FileCheck -check-prefix=OCL-20 %s
|
||||
// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL1.2 -emit-llvm -o - | FileCheck -check-prefix=OCL-12 %s
|
||||
// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL3.0 -cl-ext=+__opencl_c_generic_address_space -emit-llvm -o - | FileCheck -check-prefix=OCL-20 %s
|
||||
// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL3.0 -cl-ext=-__opencl_c_generic_address_space,-__opencl_c_pipes -emit-llvm -o - | FileCheck -check-prefix=OCL-12 %s
|
||||
// RUN: %clang_cc1 %s -triple spir-unknown-unknown -cl-std=CL3.0 -cl-ext=-__opencl_c_generic_address_space -emit-llvm -o - | FileCheck -check-prefix=OCL-12 %s
|
||||
|
||||
// We can't name this f as private is equivalent to default
|
||||
// no specifier given address space so we get multiple definition
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// RUN: %clang_cc1 %s -O0 -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,SPIR
|
||||
// RUN: %clang_cc1 %s -O0 -cl-std=CL3.0 -cl-ext=-__opencl_c_generic_address_space,-__opencl_c_pipes -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,SPIR
|
||||
// RUN: %clang_cc1 %s -O0 -cl-std=CL3.0 -cl-ext=-__opencl_c_generic_address_space -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,SPIR
|
||||
// RUN: %clang_cc1 %s -O0 -DCL20 -cl-std=CL2.0 -ffake-address-space-map -emit-llvm -o - | FileCheck %s --check-prefixes=CL20,CL20SPIR
|
||||
// RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa -emit-llvm -o - | FileCheck --check-prefixes=CHECK,AMDGCN %s
|
||||
// RUN: %clang_cc1 %s -O0 -triple amdgcn-amd-amdhsa -cl-std=CL3.0 -emit-llvm -o - | FileCheck --check-prefixes=CHECK,AMDGCN %s
|
||||
|
|
|
@ -71,16 +71,3 @@ void test8(write_only pipe int p, global int *ptr) {
|
|||
// CHECK: call i32 @__get_pipe_max_packets_wo(%opencl.pipe_wo_t* %{{.*}}, i32 4, i32 4)
|
||||
*ptr = get_pipe_max_packets(p);
|
||||
}
|
||||
|
||||
struct Person {
|
||||
const char *Name;
|
||||
bool isFemale;
|
||||
int ID;
|
||||
};
|
||||
|
||||
void test9(global struct Person *SDst, read_only pipe struct Person SPipe) {
|
||||
// CHECK: call i32 @__read_pipe_2(%opencl.pipe_ro_t* %{{.*}}, i8* %{{.*}}, i32 16, i32 8)
|
||||
read_pipe (SPipe, SDst);
|
||||
// CHECK: call i32 @__read_pipe_2(%opencl.pipe_ro_t* %{{.*}}, i8* %{{.*}}, i32 16, i32 8)
|
||||
read_pipe (SPipe, SDst);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm -O0 -cl-std=CL2.0 -o - %s | FileCheck %s
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm -O0 -cl-std=CL3.0 -cl-ext=+__opencl_c_pipes,+__opencl_c_generic_address_space -o - %s | FileCheck %s
|
||||
|
||||
// CHECK: %opencl.pipe_ro_t = type opaque
|
||||
// CHECK: %opencl.pipe_wo_t = type opaque
|
||||
|
@ -32,3 +31,18 @@ typedef read_only pipe int MyPipe;
|
|||
kernel void test6(MyPipe p) {
|
||||
// CHECK: define{{.*}} spir_kernel void @test6(%opencl.pipe_ro_t* %p)
|
||||
}
|
||||
|
||||
struct Person {
|
||||
const char *Name;
|
||||
bool isFemale;
|
||||
int ID;
|
||||
};
|
||||
|
||||
void test_reserved_read_pipe(global struct Person *SDst,
|
||||
read_only pipe struct Person SPipe) {
|
||||
// CHECK: define{{.*}} void @test_reserved_read_pipe
|
||||
read_pipe (SPipe, SDst);
|
||||
// CHECK: call i32 @__read_pipe_2(%opencl.pipe_ro_t* %{{.*}}, i8* %{{.*}}, i32 16, i32 8)
|
||||
read_pipe (SPipe, SDst);
|
||||
// CHECK: call i32 @__read_pipe_2(%opencl.pipe_ro_t* %{{.*}}, i8* %{{.*}}, i32 16, i32 8)
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@
|
|||
// RUN: %clang_cc1 -triple x86_64-unknown-windows-pc -emit-llvm -O0 -cl-std=clc++ -o - %s -DWIN| FileCheck %s --check-prefixes=WINDOWS
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm -O0 -cl-std=CL2.0 -o - %s | FileCheck %s --check-prefixes=LINUX
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-windows-pc -emit-llvm -O0 -cl-std=CL2.0 -o - %s -DWIN| FileCheck %s --check-prefixes=OCLWINDOWS
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm -O0 -cl-std=CL3.0 -cl-ext=+__opencl_c_pipes,+__opencl_c_generic_address_space -o - %s | FileCheck %s --check-prefixes=LINUX
|
||||
// RUN: %clang_cc1 -triple x86_64-unknown-windows-pc -emit-llvm -O0 -cl-std=CL3.0 -cl-ext=+__opencl_c_pipes,+__opencl_c_generic_address_space -o - %s -DWIN | FileCheck %s --check-prefixes=OCLWINDOWS
|
||||
|
||||
typedef unsigned char __attribute__((ext_vector_type(3))) uchar3;
|
||||
typedef int __attribute__((ext_vector_type(4))) int4;
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
// RUN: not %clang_cc1 -cl-std=CL3.0 -triple spir-unknown-unknown -cl-ext=-__opencl_c_fp64,+cl_khr_fp64 %s 2>&1 | FileCheck -check-prefix=CHECK-FP64 %s
|
||||
// RUN: not %clang_cc1 -cl-std=CL3.0 -triple spir-unknown-unknown -cl-ext=+__opencl_c_fp64,-cl_khr_fp64 %s 2>&1 | FileCheck -check-prefix=CHECK-FP64 %s
|
||||
|
||||
// RUN: not %clang_cc1 -cl-std=CL3.0 -triple spir-unknown-unknown -cl-ext=+__opencl_c_read_write_images,-__opencl_c_images %s 2>&1 | FileCheck -check-prefix=CHECK-READ-WRITE-IMAGES %s
|
||||
// RUN: not %clang_cc1 -cl-std=CL3.0 -triple spir-unknown-unknown -cl-ext=+__opencl_c_pipes,-__opencl_c_generic_address_space %s 2>&1 | FileCheck -check-prefix=CHECK-PIPES %s
|
||||
|
||||
// RUN: not %clang_cc1 -cl-std=CL3.0 -triple spir-unknown-unknown -cl-ext=+__opencl_c_3d_image_writes,+__opencl_c_images,-cl_khr_3d_image_writes %s 2>&1 | FileCheck -check-prefix=CHECK-3D-WRITE-IMAGES-DIFF %s
|
||||
// RUN: not %clang_cc1 -cl-std=CL3.0 -triple spir-unknown-unknown -cl-ext=+__opencl_c_3d_image_writes,-__opencl_c_images %s 2>&1 | FileCheck -check-prefix=CHECK-3D-WRITE-IMAGES-DEPS %s
|
||||
|
||||
|
@ -11,5 +12,3 @@
|
|||
|
||||
// CHECK-3D-WRITE-IMAGES-DIFF: options cl_khr_3d_image_writes and __opencl_c_3d_image_writes are set to different values
|
||||
// CHECK-3D-WRITE-IMAGES-DEPS: error: feature __opencl_c_3d_image_writes requires support of __opencl_c_images feature
|
||||
|
||||
// CHECK-PIPES: error: feature __opencl_c_pipes requires support of __opencl_c_generic_address_space feature
|
||||
|
|
|
@ -1,23 +1,9 @@
|
|||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL1.2
|
||||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=-__opencl_c_pipes,-__opencl_c_generic_address_space
|
||||
|
||||
void foo(read_only pipe int p);
|
||||
#if __OPENCL_C_VERSION__ > 120
|
||||
// expected-error@-2 {{OpenCL C version 3.0 does not support the 'pipe' type qualifier}}
|
||||
// expected-error@-3 {{access qualifier can only be used for pipe and image type}}
|
||||
#else
|
||||
// expected-warning@-5 {{type specifier missing, defaults to 'int'}}
|
||||
// expected-error@-6 {{access qualifier can only be used for pipe and image type}}
|
||||
// expected-error@-7 {{expected ')'}} expected-note@-7 {{to match this '('}}
|
||||
#endif
|
||||
// expected-warning@-1 {{type specifier missing, defaults to 'int'}}
|
||||
// expected-error@-2 {{access qualifier can only be used for pipe and image type}}
|
||||
// expected-error@-3 {{expected ')'}} expected-note@-3 {{to match this '('}}
|
||||
|
||||
// 'pipe' should be accepted as an identifier.
|
||||
typedef int pipe;
|
||||
#if __OPENCL_C_VERSION__ > 120
|
||||
// expected-error@-2 {{OpenCL C version 3.0 does not support the 'pipe' type qualifier}}
|
||||
// expected-warning@-3 {{typedef requires a name}}
|
||||
#endif
|
||||
|
||||
void bar() {
|
||||
reserve_id_t r; // expected-error {{use of undeclared identifier 'reserve_id_t'}}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL2.0
|
||||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=+__opencl_c_pipes,+__opencl_c_generic_address_space
|
||||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=clc++
|
||||
|
||||
global pipe int gp; // expected-error {{type '__global read_only pipe int' can only be used as a function parameter in OpenCL}}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL1.2
|
||||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=-__opencl_c_program_scope_global_variables,-__opencl_c_generic_address_space,-__opencl_c_pipes
|
||||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=+__opencl_c_program_scope_global_variables,-__opencl_c_generic_address_space,-__opencl_c_pipes
|
||||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=-__opencl_c_program_scope_global_variables,-__opencl_c_generic_address_space
|
||||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=+__opencl_c_program_scope_global_variables,-__opencl_c_generic_address_space
|
||||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=-__opencl_c_program_scope_global_variables,+__opencl_c_generic_address_space
|
||||
// RUN: %clang_cc1 %s -verify -pedantic -fsyntax-only -cl-std=CL3.0 -cl-ext=+__opencl_c_program_scope_global_variables,+__opencl_c_generic_address_space
|
||||
static constant int G1 = 0;
|
||||
|
|
Loading…
Reference in New Issue