[PATCH] D33597: [OpenCL] Fix pipe size in TypeInfo.
This revision was automatically updated to reflect the committed changes. Closed by commit rL304708: [OpenCL] Fix pipe size in TypeInfo. (authored by stulova). Changed prior to commit: https://reviews.llvm.org/D33597?vs=101236=101388#toc Repository: rL LLVM https://reviews.llvm.org/D33597 Files: cfe/trunk/lib/AST/ASTContext.cpp cfe/trunk/test/Index/pipe-size.cl Index: cfe/trunk/test/Index/pipe-size.cl === --- cfe/trunk/test/Index/pipe-size.cl +++ cfe/trunk/test/Index/pipe-size.cl @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple x86_64-unknown-linux-gnu %s -o - | FileCheck %s --check-prefix=X86 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir64-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR64 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple amdgcn-amd-amdhsa-amdgizcl %s -o - | FileCheck %s --check-prefix=AMD +__kernel void testPipe( pipe int test ) +{ +int s = sizeof(test); +// X86: store %opencl.pipe_t* %test, %opencl.pipe_t** %test.addr, align 8 +// X86: store i32 8, i32* %s, align 4 +// SPIR: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 4 +// SPIR: store i32 4, i32* %s, align 4 +// SPIR64: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 8 +// SPIR64: store i32 8, i32* %s, align 4 +// AMD: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)* addrspace(5)* %test.addr, align 4 +// AMD: store i32 8, i32 addrspace(5)* %s, align 4 +} Index: cfe/trunk/lib/AST/ASTContext.cpp === --- cfe/trunk/lib/AST/ASTContext.cpp +++ cfe/trunk/lib/AST/ASTContext.cpp @@ -1939,9 +1939,8 @@ break; case Type::Pipe: { -TypeInfo Info = getTypeInfo(cast(T)->getElementType()); -Width = Info.Width; -Align = Info.Align; +Width = Target->getPointerWidth(getTargetAddressSpace(LangAS::opencl_global)); +Align = Target->getPointerAlign(getTargetAddressSpace(LangAS::opencl_global)); } } Index: cfe/trunk/test/Index/pipe-size.cl === --- cfe/trunk/test/Index/pipe-size.cl +++ cfe/trunk/test/Index/pipe-size.cl @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple x86_64-unknown-linux-gnu %s -o - | FileCheck %s --check-prefix=X86 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir64-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR64 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple amdgcn-amd-amdhsa-amdgizcl %s -o - | FileCheck %s --check-prefix=AMD +__kernel void testPipe( pipe int test ) +{ +int s = sizeof(test); +// X86: store %opencl.pipe_t* %test, %opencl.pipe_t** %test.addr, align 8 +// X86: store i32 8, i32* %s, align 4 +// SPIR: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 4 +// SPIR: store i32 4, i32* %s, align 4 +// SPIR64: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 8 +// SPIR64: store i32 8, i32* %s, align 4 +// AMD: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)* addrspace(5)* %test.addr, align 4 +// AMD: store i32 8, i32 addrspace(5)* %s, align 4 +} Index: cfe/trunk/lib/AST/ASTContext.cpp === --- cfe/trunk/lib/AST/ASTContext.cpp +++ cfe/trunk/lib/AST/ASTContext.cpp @@ -1939,9 +1939,8 @@ break; case Type::Pipe: { -TypeInfo Info = getTypeInfo(cast(T)->getElementType()); -Width = Info.Width; -Align = Info.Align; +Width = Target->getPointerWidth(getTargetAddressSpace(LangAS::opencl_global)); +Align = Target->getPointerAlign(getTargetAddressSpace(LangAS::opencl_global)); } } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33597: [OpenCL] Fix pipe size in TypeInfo.
yaxunl accepted this revision. yaxunl added a comment. This revision is now accepted and ready to land. LGTM. Thanks! https://reviews.llvm.org/D33597 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33597: [OpenCL] Fix pipe size in TypeInfo.
Anastasia updated this revision to Diff 101236. Anastasia added a comment. Added RUN line for AMD https://reviews.llvm.org/D33597 Files: lib/AST/ASTContext.cpp test/Index/pipe-size.cl Index: test/Index/pipe-size.cl === --- /dev/null +++ test/Index/pipe-size.cl @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple x86_64-unknown-linux-gnu %s -o - | FileCheck %s --check-prefix=X86 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir64-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR64 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple amdgcn-amd-amdhsa-amdgizcl %s -o - | FileCheck %s --check-prefix=AMD +__kernel void testPipe( pipe int test ) +{ +int s = sizeof(test); +// X86: store %opencl.pipe_t* %test, %opencl.pipe_t** %test.addr, align 8 +// X86: store i32 8, i32* %s, align 4 +// SPIR: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 4 +// SPIR: store i32 4, i32* %s, align 4 +// SPIR64: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 8 +// SPIR64: store i32 8, i32* %s, align 4 +// AMD: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)* addrspace(5)* %test.addr, align 4 +// AMD: store i32 8, i32 addrspace(5)* %s, align 4 +} Index: lib/AST/ASTContext.cpp === --- lib/AST/ASTContext.cpp +++ lib/AST/ASTContext.cpp @@ -1939,9 +1939,8 @@ break; case Type::Pipe: { -TypeInfo Info = getTypeInfo(cast(T)->getElementType()); -Width = Info.Width; -Align = Info.Align; +Width = Target->getPointerWidth(getTargetAddressSpace(LangAS::opencl_global)); +Align = Target->getPointerAlign(getTargetAddressSpace(LangAS::opencl_global)); } } Index: test/Index/pipe-size.cl === --- /dev/null +++ test/Index/pipe-size.cl @@ -0,0 +1,16 @@ +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple x86_64-unknown-linux-gnu %s -o - | FileCheck %s --check-prefix=X86 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir64-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR64 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple amdgcn-amd-amdhsa-amdgizcl %s -o - | FileCheck %s --check-prefix=AMD +__kernel void testPipe( pipe int test ) +{ +int s = sizeof(test); +// X86: store %opencl.pipe_t* %test, %opencl.pipe_t** %test.addr, align 8 +// X86: store i32 8, i32* %s, align 4 +// SPIR: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 4 +// SPIR: store i32 4, i32* %s, align 4 +// SPIR64: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 8 +// SPIR64: store i32 8, i32* %s, align 4 +// AMD: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)* addrspace(5)* %test.addr, align 4 +// AMD: store i32 8, i32 addrspace(5)* %s, align 4 +} Index: lib/AST/ASTContext.cpp === --- lib/AST/ASTContext.cpp +++ lib/AST/ASTContext.cpp @@ -1939,9 +1939,8 @@ break; case Type::Pipe: { -TypeInfo Info = getTypeInfo(cast(T)->getElementType()); -Width = Info.Width; -Align = Info.Align; +Width = Target->getPointerWidth(getTargetAddressSpace(LangAS::opencl_global)); +Align = Target->getPointerAlign(getTargetAddressSpace(LangAS::opencl_global)); } } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33597: [OpenCL] Fix pipe size in TypeInfo.
yaxunl added a comment. In https://reviews.llvm.org/D33597#770137, @Anastasia wrote: > Use global AS pointer for pipe size. > > @Sam, I am moving you to the reviewer to finish this change. Do you think it > makes sense to add RUN line with some AMD GPU in triple to the test? I would appreciate that if you can add one RUN line for triple amdgcn-amd-amdhsa-amdgizcl. Thanks. https://reviews.llvm.org/D33597 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33597: [OpenCL] Fix pipe size in TypeInfo.
Anastasia updated this revision to Diff 101031. Anastasia edited reviewers, added: yaxunl; removed: echuraev. Anastasia removed a subscriber: yaxunl. Anastasia added a comment. Use global AS pointer for pipe size. @Sam, I am moving you to the reviewer to finish this change. Do you think it makes sense to add RUN line with some AMD GPU in triple to the test? https://reviews.llvm.org/D33597 Files: lib/AST/ASTContext.cpp test/Index/pipe-size.cl Index: test/Index/pipe-size.cl === --- /dev/null +++ test/Index/pipe-size.cl @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple x86_64-unknown-linux-gnu %s -o - | FileCheck %s --check-prefix=X86 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir64-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR64 +__kernel void testPipe( pipe int test ) +{ +int s = sizeof(test); +// X86: store %opencl.pipe_t* %test, %opencl.pipe_t** %test.addr, align 8 +// X86: store i32 8, i32* %s, align 4 +// SPIR: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 4 +// SPIR: store i32 4, i32* %s, align 4 +// SPIR64: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 8 +// SPIR64: store i32 8, i32* %s, align 4 +} Index: lib/AST/ASTContext.cpp === --- lib/AST/ASTContext.cpp +++ lib/AST/ASTContext.cpp @@ -1939,9 +1939,8 @@ break; case Type::Pipe: { -TypeInfo Info = getTypeInfo(cast(T)->getElementType()); -Width = Info.Width; -Align = Info.Align; +Width = Target->getPointerWidth(getTargetAddressSpace(LangAS::opencl_global)); +Align = Target->getPointerAlign(getTargetAddressSpace(LangAS::opencl_global)); } } Index: test/Index/pipe-size.cl === --- /dev/null +++ test/Index/pipe-size.cl @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple x86_64-unknown-linux-gnu %s -o - | FileCheck %s --check-prefix=X86 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir64-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR64 +__kernel void testPipe( pipe int test ) +{ +int s = sizeof(test); +// X86: store %opencl.pipe_t* %test, %opencl.pipe_t** %test.addr, align 8 +// X86: store i32 8, i32* %s, align 4 +// SPIR: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 4 +// SPIR: store i32 4, i32* %s, align 4 +// SPIR64: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 8 +// SPIR64: store i32 8, i32* %s, align 4 +} Index: lib/AST/ASTContext.cpp === --- lib/AST/ASTContext.cpp +++ lib/AST/ASTContext.cpp @@ -1939,9 +1939,8 @@ break; case Type::Pipe: { -TypeInfo Info = getTypeInfo(cast(T)->getElementType()); -Width = Info.Width; -Align = Info.Align; +Width = Target->getPointerWidth(getTargetAddressSpace(LangAS::opencl_global)); +Align = Target->getPointerAlign(getTargetAddressSpace(LangAS::opencl_global)); } } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33597: [OpenCL] Fix pipe size in TypeInfo.
yaxunl added inline comments. Comment at: lib/AST/ASTContext.cpp:1942 case Type::Pipe: { -TypeInfo Info = getTypeInfo(cast(T)->getElementType()); -Width = Info.Width; -Align = Info.Align; +Width = Target->getPointerWidth(0); +Align = Target->getPointerAlign(0); pipe is in global address space. shouldn't it be ``` Width = Target->getPointerWidth(getTargetAddressSpace(LangAS::opencl_global)); ``` the same with align. https://reviews.llvm.org/D33597 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D33597: [OpenCL] Fix pipe size in TypeInfo.
Anastasia created this revision. Herald added a subscriber: yaxunl. Pipes are now the size of pointers rather than the size of the type that they contain. Patch by Simon Perretta! https://reviews.llvm.org/D33597 Files: lib/AST/ASTContext.cpp test/Index/pipe-size.cl Index: test/Index/pipe-size.cl === --- /dev/null +++ test/Index/pipe-size.cl @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple x86_64-unknown-linux-gnu %s -o - | FileCheck %s --check-prefix=X86 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir64-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR64 +__kernel void testPipe( pipe int test ) +{ +int s = sizeof(test); +// X86: store %opencl.pipe_t* %test, %opencl.pipe_t** %test.addr, align 8 +// X86: store i32 8, i32* %s, align 4 +// SPIR: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 4 +// SPIR: store i32 4, i32* %s, align 4 +// SPIR64: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 8 +// SPIR64: store i32 8, i32* %s, align 4 +} Index: lib/AST/ASTContext.cpp === --- lib/AST/ASTContext.cpp +++ lib/AST/ASTContext.cpp @@ -1939,9 +1939,8 @@ break; case Type::Pipe: { -TypeInfo Info = getTypeInfo(cast(T)->getElementType()); -Width = Info.Width; -Align = Info.Align; +Width = Target->getPointerWidth(0); +Align = Target->getPointerAlign(0); } } Index: test/Index/pipe-size.cl === --- /dev/null +++ test/Index/pipe-size.cl @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple x86_64-unknown-linux-gnu %s -o - | FileCheck %s --check-prefix=X86 +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR +// RUN: %clang_cc1 -x cl -O0 -cl-std=CL2.0 -emit-llvm -triple spir64-unknown-unknown %s -o - | FileCheck %s --check-prefix=SPIR64 +__kernel void testPipe( pipe int test ) +{ +int s = sizeof(test); +// X86: store %opencl.pipe_t* %test, %opencl.pipe_t** %test.addr, align 8 +// X86: store i32 8, i32* %s, align 4 +// SPIR: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 4 +// SPIR: store i32 4, i32* %s, align 4 +// SPIR64: store %opencl.pipe_t addrspace(1)* %test, %opencl.pipe_t addrspace(1)** %test.addr, align 8 +// SPIR64: store i32 8, i32* %s, align 4 +} Index: lib/AST/ASTContext.cpp === --- lib/AST/ASTContext.cpp +++ lib/AST/ASTContext.cpp @@ -1939,9 +1939,8 @@ break; case Type::Pipe: { -TypeInfo Info = getTypeInfo(cast(T)->getElementType()); -Width = Info.Width; -Align = Info.Align; +Width = Target->getPointerWidth(0); +Align = Target->getPointerAlign(0); } } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits