summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2013-07-25 18:44:05 -0700
committerTom Stellard <thomas.stellard@amd.com>2013-07-25 18:44:05 -0700
commit5e6ac26585fc3a8b7962ac89833706aa91ce3508 (patch)
tree0d69a4eb9852d90030300d2465cf7e8e4a12ce1c
parentd925208c27d8b2fdff4dc31f3f5d6a67cbe5b26f (diff)
XXX: It worksimage
-rw-r--r--generic/include/clc/clc.h3
-rw-r--r--generic/include/clc/image/image2d.h3
-rw-r--r--generic/lib/SOURCES2
-rw-r--r--generic/lib/image/image2d.cl10
-rw-r--r--generic/lib/image/image2d.ll42
-rw-r--r--r600/lib/SOURCES4
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