Currently we assume that `0` is the default AS, which is usually true, but it isn't for `SPIR-V`. Pass down the AS from `clang` and use it to create types. After this change, we finally generate fully valid SPIR-V for a basic OpenMP Offloading example. Signed-off-by: Sarnie, Nick <nick.sarnie@intel.com>
16 lines
774 B
C++
16 lines
774 B
C++
// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple x86_64-unknown-linux -fopenmp-targets=spirv64-intel -emit-llvm-bc %s -o %t-host.bc
|
|
// RUN: %clang_cc1 -verify -fopenmp -x c++ -triple spirv64-intel -fopenmp-targets=spirv64-intel -emit-llvm %s -fopenmp-is-target-device -fopenmp-host-ir-file-path %t-host.bc -o - | FileCheck %s
|
|
|
|
// expected-no-diagnostics
|
|
|
|
// CHECK: @[[#LOC:]] = private unnamed_addr addrspace(1) constant [23 x i8] c";unknown;unknown;0;0;;\00", align 1
|
|
// CHECK: = private unnamed_addr addrspace(1) constant %struct.ident_t { i32 0, i32 2, i32 0, i32 {{.*}}, ptr addrspace(4) addrspacecast (ptr addrspace(1) @[[#LOC]] to ptr addrspace(4)) }, align 8
|
|
|
|
int main() {
|
|
int ret = 0;
|
|
#pragma omp target
|
|
for(int i = 0; i < 5; i++)
|
|
ret++;
|
|
return ret;
|
|
}
|