clover: Define a few convenience equality operators.
authorFrancisco Jerez <currojerez@riseup.net>
Tue, 17 Sep 2013 04:11:16 +0000 (21:11 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Mon, 21 Oct 2013 17:47:03 +0000 (10:47 -0700)
Tested-by: Tom Stellard <thomas.stellard@amd.com>
src/gallium/state_trackers/clover/api/device.cpp
src/gallium/state_trackers/clover/api/event.cpp
src/gallium/state_trackers/clover/api/kernel.cpp
src/gallium/state_trackers/clover/core/context.cpp
src/gallium/state_trackers/clover/core/context.hpp
src/gallium/state_trackers/clover/core/device.cpp
src/gallium/state_trackers/clover/core/device.hpp
src/gallium/state_trackers/clover/core/format.hpp
src/gallium/state_trackers/clover/core/memory.cpp
src/gallium/state_trackers/clover/core/memory.hpp

index 7e99f74068446b3ef3379367dc8b502816520660..dd7ef408f222524dbd925674647130faeed01a53 100644 (file)
@@ -40,7 +40,7 @@ clGetDeviceIDs(cl_platform_id d_platform, cl_device_type device_type,
    // Collect matching devices
    for (device &dev : platform) {
       if (((device_type & CL_DEVICE_TYPE_DEFAULT) &&
-           &dev == &platform.front()) ||
+           dev == platform.front()) ||
           (device_type & dev.type()))
          d_devs.push_back(desc(dev));
    }
index 1395c54db086e0568d66743d5d5f2d61db52bc1e..4ed96b063137371e5215034e87c85e30da22964d 100644 (file)
@@ -63,7 +63,7 @@ clWaitForEvents(cl_uint num_evs, const cl_event *d_evs) try {
    auto evs = objs(d_evs, num_evs);
 
    for (auto &ev : evs) {
-      if (&ev.ctx != &evs.front().ctx)
+      if (ev.ctx != evs.front().ctx)
          throw error(CL_INVALID_CONTEXT);
 
       if (ev.status() < 0)
@@ -199,7 +199,7 @@ clEnqueueWaitForEvents(cl_command_queue d_q, cl_uint num_evs,
    auto evs = objs(d_evs, num_evs);
 
    for (auto &ev : evs) {
-         if (&ev.ctx != &q.ctx)
+         if (ev.ctx != q.ctx)
             throw error(CL_INVALID_CONTEXT);
    }
 
index 15b4c14e1d9dd8ee68d45d6183304259cdf1cbc3..dd742c3bb05ccad9528b244b96d28c619ca6ebe3 100644 (file)
@@ -202,9 +202,9 @@ namespace {
    void
    validate_common(command_queue &q, kernel &kern,
                    const ref_vector<event> &deps) {
-      if (&kern.prog.ctx != &q.ctx ||
+      if (kern.prog.ctx != q.ctx ||
           any_of([&](const event &ev) {
-                return &ev.ctx != &q.ctx;
+                return ev.ctx != q.ctx;
              }, deps))
          throw error(CL_INVALID_CONTEXT);
 
index 7b79f82547eafd3bdcdc139b63ae271602f101f0..f4f98004790f05c6c38b9bb7681a5c35f98581c9 100644 (file)
@@ -36,6 +36,16 @@ context::has_device(device &dev) const {
    return std::count(devs.begin(), devs.end(), &dev);
 }
 
+bool
+context::operator==(const context &ctx) const {
+   return this == &ctx;
+}
+
+bool
+context::operator!=(const context &ctx) const {
+   return this != &ctx;
+}
+
 const context::property_list &
 context::props() const {
    return _props;
index 6fda06155ea4480fb3777530e4b306e1eb7378de..576e95281be361c9324a7fc60c65585f35acddb4 100644 (file)
@@ -39,6 +39,11 @@ namespace clover {
 
       bool has_device(device &dev) const;
 
+      bool
+      operator==(const context &ctx) const;
+      bool
+      operator!=(const context &ctx) const;
+
       const property_list &
       props() const;
 
index 9f6407e9cd7375b931d411617ae13745bf0a99f6..39322707b36d572d1c95453add6cee4f14fde0fc 100644 (file)
@@ -68,6 +68,11 @@ device::operator=(device dev) {
    return *this;
 }
 
+bool
+device::operator==(const device &dev) const {
+   return this == &dev;
+}
+
 cl_device_type
 device::type() const {
    switch (ldev->type) {
index 42e32a19077d5b6799326d3212cac0d9790219fd..fd6b4570f139bd4e2c7c5ea024f56bc6cb215d55 100644 (file)
@@ -44,6 +44,9 @@ namespace clover {
 
       device &operator=(device dev);
 
+      bool
+      operator==(const device &dev) const;
+
       cl_device_type type() const;
       cl_uint vendor_id() const;
       size_t max_images_read() const;
index 26439c7a93c7239d53c86e58734817513c75335d..a8b7053c5dcdc0e5c70eaa7bdb09163ba5031e3a 100644 (file)
@@ -48,4 +48,15 @@ operator<(const cl_image_format &a, const cl_image_format &b) {
            a.image_channel_data_type < b.image_channel_data_type);
 }
 
+static inline bool
+operator==(const cl_image_format &a, const cl_image_format &b) {
+   return (a.image_channel_order == b.image_channel_order &&
+           a.image_channel_data_type == b.image_channel_data_type);
+}
+
+static inline bool
+operator!=(const cl_image_format &a, const cl_image_format &b) {
+   return !(a == b);
+}
+
 #endif
index 106936bef56cc4e924bdf603c3550517b6fed1eb..1c38597215f996823da553e3013f15c61b116d60 100644 (file)
@@ -38,6 +38,11 @@ memory_obj::~memory_obj() {
    _destroy_notify();
 }
 
+bool
+memory_obj::operator==(const memory_obj &obj) const {
+   return this == &obj;
+}
+
 void
 memory_obj::destroy_notify(std::function<void ()> f) {
    _destroy_notify = f;
index 7c5300899efe8a7fc563bca6f1a5518767af79f8..86f7ddaca3a53be27aaf662a86ef6204ed3caf77 100644 (file)
@@ -43,6 +43,9 @@ namespace clover {
    public:
       virtual ~memory_obj();
 
+      bool
+      operator==(const memory_obj &obj) const;
+
       virtual cl_mem_object_type type() const = 0;
       virtual clover::resource &resource(command_queue &q) = 0;