summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2016-03-30 16:17:16 +0200
committercnugteren <web@cedricnugteren.nl>2016-03-30 16:13:32 -0700
commit6ecc0d089c80296cce3089734771279a30783f81 (patch)
treefb7e0dc3c8e04e6fe2f1e4761c386f98630689b8 /src
parent6e5f558746eec09eda6132754649419430a86f41 (diff)
Added prototypes for the xROT and xROTG functions
Diffstat (limited to 'src')
-rw-r--r--src/clblast.cc43
-rw-r--r--src/clblast_c.cc56
2 files changed, 99 insertions, 0 deletions
diff --git a/src/clblast.cc b/src/clblast.cc
index 0b8de40a..8f7abfd6 100644
--- a/src/clblast.cc
+++ b/src/clblast.cc
@@ -67,6 +67,49 @@ namespace clblast {
// BLAS level-1 (vector-vector) routines
// =================================================================================================
+// Generate plane rotation: SROTG/DROTG
+template <typename T>
+StatusCode Rotg(cl_mem, const size_t,
+ cl_mem, const size_t,
+ cl_mem, const size_t,
+ cl_mem, const size_t,
+ cl_command_queue*, cl_event*) {
+ return StatusCode::kNotImplemented;
+}
+template StatusCode PUBLIC_API Rotg<float>(cl_mem, const size_t,
+ cl_mem, const size_t,
+ cl_mem, const size_t,
+ cl_mem, const size_t,
+ cl_command_queue*, cl_event*);
+template StatusCode PUBLIC_API Rotg<double>(cl_mem, const size_t,
+ cl_mem, const size_t,
+ cl_mem, const size_t,
+ cl_mem, const size_t,
+ cl_command_queue*, cl_event*);
+
+// Apply plane rotation: SROT/DROT
+template <typename T>
+StatusCode Rot(const size_t,
+ cl_mem, const size_t, const size_t,
+ cl_mem, const size_t, const size_t,
+ const T,
+ const T,
+ cl_command_queue*, cl_event*) {
+ return StatusCode::kNotImplemented;
+}
+template StatusCode PUBLIC_API Rot<float>(const size_t,
+ cl_mem, const size_t, const size_t,
+ cl_mem, const size_t, const size_t,
+ const float,
+ const float,
+ cl_command_queue*, cl_event*);
+template StatusCode PUBLIC_API Rot<double>(const size_t,
+ cl_mem, const size_t, const size_t,
+ cl_mem, const size_t, const size_t,
+ const double,
+ const double,
+ cl_command_queue*, cl_event*);
+
// Swap two vectors: SSWAP/DSWAP/CSWAP/ZSWAP
template <typename T>
StatusCode Swap(const size_t n,
diff --git a/src/clblast_c.cc b/src/clblast_c.cc
index 66d16f6d..d36b2695 100644
--- a/src/clblast_c.cc
+++ b/src/clblast_c.cc
@@ -25,6 +25,62 @@ using double2 = clblast::double2;
// BLAS level-1 (vector-vector) routines
// =================================================================================================
+// ROTG
+StatusCode CLBlastSrotg(cl_mem SA_buffer, const size_t SA_offset,
+ cl_mem SB_buffer, const size_t SB_offset,
+ cl_mem C_buffer, const size_t C_offset,
+ cl_mem S_buffer, const size_t S_offset,
+ cl_command_queue* queue, cl_event* event) {
+ auto status = clblast::Rotg<float>(SA_buffer, SA_offset,
+ SB_buffer, SB_offset,
+ C_buffer, C_offset,
+ S_buffer, S_offset,
+ queue, event);
+ return static_cast<StatusCode>(status);
+}
+StatusCode CLBlastDrotg(cl_mem SA_buffer, const size_t SA_offset,
+ cl_mem SB_buffer, const size_t SB_offset,
+ cl_mem C_buffer, const size_t C_offset,
+ cl_mem S_buffer, const size_t S_offset,
+ cl_command_queue* queue, cl_event* event) {
+ auto status = clblast::Rotg<double>(SA_buffer, SA_offset,
+ SB_buffer, SB_offset,
+ C_buffer, C_offset,
+ S_buffer, S_offset,
+ queue, event);
+ return static_cast<StatusCode>(status);
+}
+
+// ROT
+StatusCode CLBlastSrot(const size_t n,
+ cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
+ cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
+ const float C,
+ const float S,
+ cl_command_queue* queue, cl_event* event) {
+ auto status = clblast::Rot(n,
+ x_buffer, x_offset, x_inc,
+ y_buffer, y_offset, y_inc,
+ C,
+ S,
+ queue, event);
+ return static_cast<StatusCode>(status);
+}
+StatusCode CLBlastDrot(const size_t n,
+ cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
+ cl_mem y_buffer, const size_t y_offset, const size_t y_inc,
+ const double C,
+ const double S,
+ cl_command_queue* queue, cl_event* event) {
+ auto status = clblast::Rot(n,
+ x_buffer, x_offset, x_inc,
+ y_buffer, y_offset, y_inc,
+ C,
+ S,
+ queue, event);
+ return static_cast<StatusCode>(status);
+}
+
// SWAP
StatusCode CLBlastSswap(const size_t n,
cl_mem x_buffer, const size_t x_offset, const size_t x_inc,