clover: Add kernel argument fields to allow differing host/target data types.
authorFrancisco Jerez <currojerez@riseup.net>
Sat, 20 Jul 2013 22:49:54 +0000 (00:49 +0200)
committerFrancisco Jerez <currojerez@riseup.net>
Mon, 22 Jul 2013 20:47:27 +0000 (22:47 +0200)
Loosely based on a similar patch by Tom Stellard.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
src/gallium/state_trackers/clover/core/module.hpp

index 88dfc9f3fc910558210519de957ae53ef51a8fe2..e25524eb3dd1d7c2daa947dcdf51c406b22ec478 100644 (file)
@@ -68,11 +68,32 @@ namespace clover {
             sampler
          };
 
-         argument(enum type type, size_t size) : type(type), size(size) { }
-         argument() : type(scalar), size(0) { }
+         enum ext_type {
+            zero_ext,
+            sign_ext
+         };
+
+         argument(enum type type, size_t size,
+                  size_t target_size, size_t target_align,
+                  enum ext_type ext_type) :
+            type(type), size(size),
+            target_size(target_size), target_align(target_align),
+            ext_type(ext_type) { }
+
+         argument(enum type type, size_t size) :
+            type(type), size(size),
+            target_size(size), target_align(1),
+            ext_type(zero_ext) { }
+
+         argument() : type(scalar), size(0),
+                      target_size(0), target_align(1),
+                      ext_type(zero_ext) { }
 
          type type;
          size_t size;
+         size_t target_size;
+         size_t target_align;
+         ext_type ext_type;
       };
 
       struct symbol {