diff options
-rw-r--r-- | generic/include/clc/clc.h | 3 | ||||
-rw-r--r-- | generic/include/clc/image/image2d.h | 3 | ||||
-rw-r--r-- | generic/lib/SOURCES | 2 | ||||
-rw-r--r-- | generic/lib/image/image2d.cl | 10 | ||||
-rw-r--r-- | generic/lib/image/image2d.ll | 42 | ||||
-rw-r--r-- | r600/lib/SOURCES | 4 |
6 files changed, 9 insertions, 55 deletions
diff --git a/generic/include/clc/clc.h b/generic/include/clc/clc.h index 9a2f443..126cc7c 100644 --- a/generic/include/clc/clc.h +++ b/generic/include/clc/clc.h @@ -92,4 +92,7 @@ #include <clc/synchronization/cl_mem_fence_flags.h> #include <clc/synchronization/barrier.h> +/* 6.11.13 Image Read and Write Functions */ + +#include <clc/image/image2d.h> #pragma OPENCL EXTENSION all : disable diff --git a/generic/include/clc/image/image2d.h b/generic/include/clc/image/image2d.h index 1c6a6ce..b7c5cb4 100644 --- a/generic/include/clc/image/image2d.h +++ b/generic/include/clc/image/image2d.h @@ -1 +1,4 @@ +_CLC_OVERLOAD _CLC_DEF float4 read_imagef (image2d_t, sampler_t, int2); _CLC_OVERLOAD _CLC_DEF float4 read_imagef (image2d_t, sampler_t, float2); + +_CLC_OVERLOAD _CLC_DEF void write_imagef (image2d_t, int2, float4); diff --git a/generic/lib/SOURCES b/generic/lib/SOURCES index eeedecd..9ac08bd 100644 --- a/generic/lib/SOURCES +++ b/generic/lib/SOURCES @@ -32,5 +32,3 @@ shared/vstore.cl shared/vstore_impl.ll workitem/get_global_id.cl workitem/get_global_size.cl -image/image2d.cl -image/image2d.ll diff --git a/generic/lib/image/image2d.cl b/generic/lib/image/image2d.cl deleted file mode 100644 index 24315a5..0000000 --- a/generic/lib/image/image2d.cl +++ /dev/null @@ -1,10 +0,0 @@ -#define cl_clang_storage_class_specifiers -#include <clc/clc.h> -#include <clc/image/image2d.h> - -_CLC_DECL inline float4 __read_imagef(image2d_t, sampler_t, float2); - -_CLC_OVERLOAD _CLC_DEF inline float4 read_imagef (image2d_t image, sampler_t sampler, float2 coord) { - return __read_imagef(image, sampler, coord); -} - diff --git a/generic/lib/image/image2d.ll b/generic/lib/image/image2d.ll deleted file mode 100644 index c65937a..0000000 --- a/generic/lib/image/image2d.ll +++ /dev/null @@ -1,42 +0,0 @@ -%opencl.image2d_t = type opaque - -; declare <4 x float> @llvm.AMDGPU.tex(<4 x float>, i32, i32, i32) readnone -declare <4 x float> @llvm.AMDGPU.tex(<4 x float>, i32, i32, i32) readnone - -declare <4 x float> @llvm.AMDGPU.dummytex(<4 x float>, %opencl.image2d_t*, i32, i32) readnone - -; NOTE: image=resoureID, sampler=sampler_id must be immeds, so they are patched by separate llvm pass - -; define <4 x float> @__read_imagef_norm(i32 %image, i32 %sampler, <4 x float> %coord) nounwind readnone alwaysinline { -; %call = call <4 x float> @llvm.AMDGPU.tex (<4 x float> %coord, i32 0, i32 0, i32 1) -; ret <4 x float> %call -; } - -; define <4 x float> @__read_imagef_unorm(i32 %image, i32 %sampler, <4 x float> %coord) nounwind readnone alwaysinline { -; %call = call <4 x float> @llvm.AMDGPU.tex (<4 x float> %coord, i32 0, i32 0, i32 0) -; ret <4 x float> %call -; } - -define <4 x float> @__read_imagef(%opencl.image2d_t* nocapture %image, i32 %sampler, <2 x float> %coord) alwaysinline { -entry: - %0 = extractelement <2 x float> %coord, i32 0 - %vecinit = insertelement <4 x float> undef, float %0, i32 0 - %1 = extractelement <2 x float> %coord, i32 1 - %vecinit1 = insertelement <4 x float> %vecinit, float %1, i32 1 - %vecinit2 = insertelement <4 x float> %vecinit1, float 0.000000e+00, i32 2 - %vecinit3 = insertelement <4 x float> %vecinit2, float 0.000000e+00, i32 3 - %tobool = icmp eq i32 %sampler, 0 - br i1 %tobool, label %if.else, label %if.then - -if.then: ; preds = %entry - %call.i = call <4 x float> @llvm.AMDGPU.dummytex(<4 x float> %vecinit3, %opencl.image2d_t* %image, i32 %sampler, i32 1) - br label %return - -if.else: ; preds = %entry - %call.i1 = call <4 x float> @llvm.AMDGPU.dummytex(<4 x float> %vecinit3, %opencl.image2d_t* %image, i32 %sampler, i32 0) - br label %return - -return: ; preds = %if.else, %if.then - %retval.0 = phi <4 x float> [ %call.i, %if.then ], [ %call.i1, %if.else ] - ret <4 x float> %retval.0 -} diff --git a/r600/lib/SOURCES b/r600/lib/SOURCES index 87df0b7..4304055 100644 --- a/r600/lib/SOURCES +++ b/r600/lib/SOURCES @@ -5,4 +5,6 @@ workitem/get_global_size.ll synchronization/barrier.cl synchronization/barrier_impl.ll shared/vload.cl -shared/vstore.cl
\ No newline at end of file +shared/vstore.cl +image/image2d.cl +image/image2d.ll |