simd 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 459e978d4372f815dc06ad340ce39283369909e7
4
- data.tar.gz: 7621df63dd917b69b6222f4f5b9fc72a430c8a21
2
+ SHA256:
3
+ metadata.gz: d43585672169c7a727e7502dea99cb56e8103c2e6a8effe4f32521ee4cae6e5d
4
+ data.tar.gz: c404674a578002bdf5933baee75e54680717c562b1e8c839a0661e04dfee27a6
5
5
  SHA512:
6
- metadata.gz: ea9d3e2b0366a7b377cea2c7412420b44170613b9704069883e7226982b643c9fb9aaefa16e39f842fce4b446725d85719cea1f16a19a951141d23ac5a2754e4
7
- data.tar.gz: 99554543164a275329ec030fd482f175e96feb7d74985aee3b4b78c0991d1f55a903ef88c3295522f017016c8cf2edca8a21597ff1c8b6566fab339915b031fc
6
+ metadata.gz: 86c6b9e43f219190f4bd2a34d0ad1c309eacb56068dbdb0d44f46894b1ceee19bc68c77d4f682d42b335039250730c9637a1d19c5075861c9731fd13a48d71d0
7
+ data.tar.gz: a71afed09b9ead560531c9ec2a9ffb0260843398255963b549abe44db0b45dc036fb604a945c9caff7f5d54dd51626f78ed4f2877803a9a5d2bc455e68c5c332
@@ -1,4 +1,5 @@
1
1
  #include "simd_floatarray.h"
2
+ #include "simd_longarray.h"
2
3
 
3
4
  VALUE SIMD_FloatArray = Qnil;
4
5
 
@@ -15,6 +16,10 @@ void Init_SIMD_FloatArray(VALUE parent)
15
16
  rb_define_method(SIMD_FloatArray, "&", method_and, 1);
16
17
  rb_define_method(SIMD_FloatArray, "|", method_or, 1);
17
18
  rb_define_method(SIMD_FloatArray, "^", method_xor, 1);
19
+ rb_define_method(SIMD_FloatArray, "gt", method_gt, 1);
20
+ rb_define_method(SIMD_FloatArray, "lt", method_lt, 1);
21
+ rb_define_method(SIMD_FloatArray, ">", method_gt, 1);
22
+ rb_define_method(SIMD_FloatArray, "<", method_lt, 1);
18
23
  rb_define_method(SIMD_FloatArray, "length", method_length, 0);
19
24
  rb_define_method(SIMD_FloatArray, "to_a", method_to_a, 0);
20
25
  }
@@ -99,6 +104,22 @@ static VALUE method_xor(VALUE self, VALUE obj)
99
104
  return(internal_apply_operation(self, obj, sizeof(double), SIMD_FloatArray, func_xor));
100
105
  }
101
106
 
107
+ /* Public: Compare values contained in the data array with those contained in
108
+ * another FloatArray object, return a new LongArray with each element being
109
+ * -1 if the data array's value is greater, and 0 otherwise. */
110
+ static VALUE method_gt(VALUE self, VALUE obj)
111
+ {
112
+ return(internal_apply_operation(self, obj, sizeof(double), SIMD_LongArray, func_gt));
113
+ }
114
+
115
+ /* Public: Compare values contained in the data array with those contained in
116
+ * another FloatArray object, return a new LongArray with each element being
117
+ * -1 if the data array's value is less, and 0 otherwise. */
118
+ static VALUE method_lt(VALUE self, VALUE obj)
119
+ {
120
+ return(internal_apply_operation(self, obj, sizeof(double), SIMD_LongArray, func_lt));
121
+ }
122
+
102
123
  /* Public: Return a Ruby Array containing the doubles within the data array. */
103
124
  static VALUE method_to_a(VALUE self)
104
125
  {
@@ -158,3 +179,15 @@ static void func_xor(void *v1, void *v2, void *r)
158
179
  {
159
180
  *(l2v *)r = *(l2v *)v1 ^ *(l2v *)v2;
160
181
  }
182
+
183
+ /* Function: Compare vectors, return -1 if v1 is greater than v2, 0 otherwise */
184
+ static void func_gt(void *v1, void *v2, void *r)
185
+ {
186
+ *(l2v *)r = (*(d2v *)v1 > *(d2v *)v2);
187
+ }
188
+
189
+ /* Function: Compare vectors, return -1 if v1 is greater than v2, 0 otherwise */
190
+ static void func_lt(void *v1, void *v2, void *r)
191
+ {
192
+ *(l2v *)r = (*(d2v *)v1 < *(d2v *)v2);
193
+ }
@@ -9,6 +9,8 @@ static VALUE method_subtract(VALUE self, VALUE obj);
9
9
  static VALUE method_and(VALUE self, VALUE obj);
10
10
  static VALUE method_or(VALUE self, VALUE obj);
11
11
  static VALUE method_xor(VALUE self, VALUE obj);
12
+ static VALUE method_gt(VALUE self, VALUE obj);
13
+ static VALUE method_lt(VALUE self, VALUE obj);
12
14
  static VALUE method_to_a(VALUE self);
13
15
 
14
16
  static void func_multiply(void *v1, void *v2, void *r);
@@ -18,3 +20,5 @@ static void func_subtract(void *v1, void *v2, void *r);
18
20
  static void func_and(void *v1, void *v2, void *r);
19
21
  static void func_or(void *v1, void *v2, void *r);
20
22
  static void func_xor(void *v1, void *v2, void *r);
23
+ static void func_gt(void *v1, void *v2, void *r);
24
+ static void func_lt(void *v1, void *v2, void *r);
@@ -15,6 +15,10 @@ void Init_SIMD_IntArray(VALUE parent)
15
15
  rb_define_method(SIMD_IntArray, "&", method_and, 1);
16
16
  rb_define_method(SIMD_IntArray, "|", method_or, 1);
17
17
  rb_define_method(SIMD_IntArray, "^", method_xor, 1);
18
+ rb_define_method(SIMD_IntArray, "gt", method_gt, 1);
19
+ rb_define_method(SIMD_IntArray, "lt", method_lt, 1);
20
+ rb_define_method(SIMD_IntArray, ">", method_gt, 1);
21
+ rb_define_method(SIMD_IntArray, "<", method_lt, 1);
18
22
  rb_define_method(SIMD_IntArray, "length", method_length, 0);
19
23
  rb_define_method(SIMD_IntArray, "to_a", method_to_a, 0);
20
24
  }
@@ -92,6 +96,22 @@ static VALUE method_xor(VALUE self, VALUE obj)
92
96
  return(internal_apply_operation(self, obj, sizeof(int), SIMD_IntArray, func_xor));
93
97
  }
94
98
 
99
+ /* Public: Compare values contained in the data array with those contained in
100
+ * another IntArray object, return a new IntArray with each element being -1
101
+ * if the data array's value is greater, and 0 otherwise. */
102
+ static VALUE method_gt(VALUE self, VALUE obj)
103
+ {
104
+ return(internal_apply_operation(self, obj, sizeof(int), SIMD_IntArray, func_gt));
105
+ }
106
+
107
+ /* Public: Compare values contained in the data array with those contained in
108
+ * another IntArray object, return a new IntArray with each element being -1 if
109
+ * the data array's value is less, and 0 otherwise. */
110
+ static VALUE method_lt(VALUE self, VALUE obj)
111
+ {
112
+ return(internal_apply_operation(self, obj, sizeof(int), SIMD_IntArray, func_lt));
113
+ }
114
+
95
115
  /* Public: Subtract values contained in another FloatArray object from those
96
116
  * contained in the current data array object, returning a new FloatArray. */
97
117
  static VALUE method_subtract(VALUE self, VALUE obj)
@@ -158,3 +178,15 @@ static void func_xor(void *v1, void *v2, void *r)
158
178
  {
159
179
  *(i4v *)r = *(i4v *)v1 ^ *(i4v *)v2;
160
180
  }
181
+
182
+ /* Function: Compare vectors, return -1 if v1 is greater than v2, 0 otherwise */
183
+ static void func_gt(void *v1, void *v2, void *r)
184
+ {
185
+ *(i4v *)r = (*(i4v *)v1 > *(i4v *)v2);
186
+ }
187
+
188
+ /* Function: Compare vectors, return -1 if v1 is less than v2, 0 otherwise */
189
+ static void func_lt(void *v1, void *v2, void *r)
190
+ {
191
+ *(i4v *)r = (*(i4v *)v1 < *(i4v *)v2);
192
+ }
@@ -1,6 +1,8 @@
1
1
  #include "ruby.h"
2
2
  #include "simd_common.h"
3
3
 
4
+ extern VALUE SIMD_IntArray;
5
+
4
6
  static VALUE method_initialize(VALUE self, VALUE rb_array);
5
7
  static VALUE method_multiply(VALUE self, VALUE obj);
6
8
  static VALUE method_divide(VALUE self, VALUE obj);
@@ -9,6 +11,8 @@ static VALUE method_subtract(VALUE self, VALUE obj);
9
11
  static VALUE method_and(VALUE self, VALUE obj);
10
12
  static VALUE method_or(VALUE self, VALUE obj);
11
13
  static VALUE method_xor(VALUE self, VALUE obj);
14
+ static VALUE method_gt(VALUE self, VALUE obj);
15
+ static VALUE method_lt(VALUE self, VALUE obj);
12
16
  static VALUE method_to_a(VALUE self);
13
17
 
14
18
  static void func_multiply(void *v1, void *v2, void *r);
@@ -18,3 +22,5 @@ static void func_subtract(void *v1, void *v2, void *r);
18
22
  static void func_and(void *v1, void *v2, void *r);
19
23
  static void func_or(void *v1, void *v2, void *r);
20
24
  static void func_xor(void *v1, void *v2, void *r);
25
+ static void func_gt(void *v1, void *v2, void *r);
26
+ static void func_lt(void *v1, void *v2, void *r);
@@ -15,6 +15,10 @@ void Init_SIMD_LongArray(VALUE parent)
15
15
  rb_define_method(SIMD_LongArray, "&", method_and, 1);
16
16
  rb_define_method(SIMD_LongArray, "|", method_or, 1);
17
17
  rb_define_method(SIMD_LongArray, "^", method_xor, 1);
18
+ rb_define_method(SIMD_LongArray, "gt", method_gt, 1);
19
+ rb_define_method(SIMD_LongArray, "lt", method_lt, 1);
20
+ rb_define_method(SIMD_LongArray, ">", method_gt, 1);
21
+ rb_define_method(SIMD_LongArray, "<", method_lt, 1);
18
22
  rb_define_method(SIMD_LongArray, "length", method_length, 0);
19
23
  rb_define_method(SIMD_LongArray, "to_a", method_to_a, 0);
20
24
  }
@@ -92,6 +96,22 @@ static VALUE method_xor(VALUE self, VALUE obj)
92
96
  return(internal_apply_operation(self, obj, sizeof(long long int), SIMD_LongArray, func_xor));
93
97
  }
94
98
 
99
+ /* Public: Compare values contained in the data array with those contained in
100
+ * another Longrray object, return a new LongArray with each element being -1
101
+ * if the data array's value is greater, and 0 otherwise. */
102
+ static VALUE method_gt(VALUE self, VALUE obj)
103
+ {
104
+ return(internal_apply_operation(self, obj, sizeof(long long int), SIMD_LongArray, func_gt));
105
+ }
106
+
107
+ /* Public: Compare values contained in the data array with those contained in
108
+ * another LongArray object, return a new LongArray with each element being -1 if
109
+ * the data array's value is less, and 0 otherwise. */
110
+ static VALUE method_lt(VALUE self, VALUE obj)
111
+ {
112
+ return(internal_apply_operation(self, obj, sizeof(long long int), SIMD_LongArray, func_lt));
113
+ }
114
+
95
115
  /* Public: Subtract values contained in another FloatArray object from those
96
116
  * contained in the current data array object, returning a new FloatArray. */
97
117
  static VALUE method_subtract(VALUE self, VALUE obj)
@@ -158,3 +178,15 @@ static void func_xor(void *v1, void *v2, void *r)
158
178
  {
159
179
  *(l2v *)r = *(l2v *)v1 ^ *(l2v *)v2;
160
180
  }
181
+
182
+ /* Function: Compare vectors, return -1 if v1 is greater than v2, 0 otherwise */
183
+ static void func_gt(void *v1, void *v2, void *r)
184
+ {
185
+ *(l2v *)r = (*(l2v *)v1 > *(l2v *)v2);
186
+ }
187
+
188
+ /* Function: Compare vectors, return -1 if v1 is less than v2, 0 otherwise */
189
+ static void func_lt(void *v1, void *v2, void *r)
190
+ {
191
+ *(l2v *)r = (*(l2v *)v1 < *(l2v *)v2);
192
+ }
@@ -1,14 +1,18 @@
1
1
  #include "ruby.h"
2
2
  #include "simd_common.h"
3
3
 
4
+ extern VALUE SIMD_LongArray;
5
+
4
6
  static VALUE method_initialize(VALUE self, VALUE rb_array);
5
7
  static VALUE method_multiply(VALUE self, VALUE obj);
6
8
  static VALUE method_divide(VALUE self, VALUE obj);
7
9
  static VALUE method_add(VALUE self, VALUE obj);
10
+ static VALUE method_subtract(VALUE self, VALUE obj);
8
11
  static VALUE method_and(VALUE self, VALUE obj);
9
12
  static VALUE method_or(VALUE self, VALUE obj);
10
13
  static VALUE method_xor(VALUE self, VALUE obj);
11
- static VALUE method_subtract(VALUE self, VALUE obj);
14
+ static VALUE method_gt(VALUE self, VALUE obj);
15
+ static VALUE method_lt(VALUE self, VALUE obj);
12
16
  static VALUE method_to_a(VALUE self);
13
17
 
14
18
  static void func_multiply(void *v1, void *v2, void *r);
@@ -18,3 +22,5 @@ static void func_subtract(void *v1, void *v2, void *r);
18
22
  static void func_and(void *v1, void *v2, void *r);
19
23
  static void func_or(void *v1, void *v2, void *r);
20
24
  static void func_xor(void *v1, void *v2, void *r);
25
+ static void func_gt(void *v1, void *v2, void *r);
26
+ static void func_lt(void *v1, void *v2, void *r);
@@ -1,4 +1,5 @@
1
1
  #include "simd_smallfloatarray.h"
2
+ #include "simd_intarray.h"
2
3
 
3
4
  VALUE SIMD_SmallFloatArray = Qnil;
4
5
 
@@ -15,6 +16,10 @@ void Init_SIMD_SmallFloatArray(VALUE parent)
15
16
  rb_define_method(SIMD_SmallFloatArray, "&", method_and, 1);
16
17
  rb_define_method(SIMD_SmallFloatArray, "|", method_or, 1);
17
18
  rb_define_method(SIMD_SmallFloatArray, "^", method_xor, 1);
19
+ rb_define_method(SIMD_SmallFloatArray, "gt", method_gt, 1);
20
+ rb_define_method(SIMD_SmallFloatArray, "lt", method_lt, 1);
21
+ rb_define_method(SIMD_SmallFloatArray, ">", method_gt, 1);
22
+ rb_define_method(SIMD_SmallFloatArray, "<", method_lt, 1);
18
23
  rb_define_method(SIMD_SmallFloatArray, "length", method_length, 0);
19
24
  rb_define_method(SIMD_SmallFloatArray, "to_a", method_to_a, 0);
20
25
  }
@@ -99,6 +104,22 @@ static VALUE method_xor(VALUE self, VALUE obj)
99
104
  return(internal_apply_operation(self, obj, sizeof(float), SIMD_SmallFloatArray, func_xor));
100
105
  }
101
106
 
107
+ /* Public: Compare values contained in the data array with those contained in
108
+ * another SmallFloatArray object, return a new IntArray with each element being
109
+ * -1 if the data array's value is greater, and 0 otherwise. */
110
+ static VALUE method_gt(VALUE self, VALUE obj)
111
+ {
112
+ return(internal_apply_operation(self, obj, sizeof(float), SIMD_IntArray, func_gt));
113
+ }
114
+
115
+ /* Public: Compare values contained in the data array with those contained in
116
+ * another SmallFloatArray object, return a new IntArray with each element being
117
+ * -1 if the data array's value is less, and 0 otherwise. */
118
+ static VALUE method_lt(VALUE self, VALUE obj)
119
+ {
120
+ return(internal_apply_operation(self, obj, sizeof(float), SIMD_IntArray, func_lt));
121
+ }
122
+
102
123
  /* Public: Return a Ruby Array containing the doubles within the data array. */
103
124
  static VALUE method_to_a(VALUE self)
104
125
  {
@@ -158,3 +179,15 @@ static void func_xor(void *v1, void *v2, void *r)
158
179
  {
159
180
  *(i4v *)r = *(i4v *)v1 ^ *(i4v *)v2;
160
181
  }
182
+
183
+ /* Function: Compare vectors, return -1 if v1 is greater than v2, 0 otherwise */
184
+ static void func_gt(void *v1, void *v2, void *r)
185
+ {
186
+ *(i4v *)r = (*(f4v *)v1 > *(f4v *)v2);
187
+ }
188
+
189
+ /* Function: Compare vectors, return -1 if v1 is less than v2, 0 otherwise */
190
+ static void func_lt(void *v1, void *v2, void *r)
191
+ {
192
+ *(i4v *)r = (*(f4v *)v1 < *(f4v *)v2);
193
+ }
@@ -9,6 +9,8 @@ static VALUE method_subtract(VALUE self, VALUE obj);
9
9
  static VALUE method_and(VALUE self, VALUE obj);
10
10
  static VALUE method_or(VALUE self, VALUE obj);
11
11
  static VALUE method_xor(VALUE self, VALUE obj);
12
+ static VALUE method_gt(VALUE self, VALUE obj);
13
+ static VALUE method_lt(VALUE self, VALUE obj);
12
14
  static VALUE method_to_a(VALUE self);
13
15
 
14
16
  static void func_multiply(void *v1, void *v2, void *r);
@@ -18,3 +20,5 @@ static void func_subtract(void *v1, void *v2, void *r);
18
20
  static void func_and(void *v1, void *v2, void *r);
19
21
  static void func_or(void *v1, void *v2, void *r);
20
22
  static void func_xor(void *v1, void *v2, void *r);
23
+ static void func_gt(void *v1, void *v2, void *r);
24
+ static void func_lt(void *v1, void *v2, void *r);
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tina Wuest
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-11 00:00:00.000000000 Z
11
+ date: 2022-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1.2'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.2'
27
27
  description: Access to SIMD (Single Instruction Multiple Data) instructions in Ruby
28
28
  email: tina@wuest.me
29
29
  executables: []
@@ -48,7 +48,7 @@ files:
48
48
  homepage: https://gitlab.com/wuest/simd-ruby
49
49
  licenses: []
50
50
  metadata: {}
51
- post_install_message:
51
+ post_install_message:
52
52
  rdoc_options: []
53
53
  require_paths:
54
54
  - lib
@@ -63,9 +63,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
63
  - !ruby/object:Gem::Version
64
64
  version: '0'
65
65
  requirements: []
66
- rubyforge_project:
67
- rubygems_version: 2.4.5
68
- signing_key:
66
+ rubygems_version: 3.3.7
67
+ signing_key:
69
68
  specification_version: 4
70
69
  summary: SIMD instructions in ruby
71
70
  test_files: []