simd 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/simd/extconf.rb +6 -0
- data/ext/simd/simd_common.c +4 -4
- data/ext/simd/simd_common.h +2 -2
- data/ext/simd/simd_floatarray.c +44 -2
- data/ext/simd/simd_floatarray.h +6 -0
- data/ext/simd/simd_intarray.c +2 -2
- data/ext/simd/simd_intarray.h +1 -1
- data/ext/simd/simd_longarray.c +10 -10
- data/ext/simd/simd_smallfloatarray.c +44 -2
- data/ext/simd/simd_smallfloatarray.h +6 -0
- data/ext/simd/simd_types.h +3 -3
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 459e978d4372f815dc06ad340ce39283369909e7
|
4
|
+
data.tar.gz: 7621df63dd917b69b6222f4f5b9fc72a430c8a21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea9d3e2b0366a7b377cea2c7412420b44170613b9704069883e7226982b643c9fb9aaefa16e39f842fce4b446725d85719cea1f16a19a951141d23ac5a2754e4
|
7
|
+
data.tar.gz: 99554543164a275329ec030fd482f175e96feb7d74985aee3b4b78c0991d1f55a903ef88c3295522f017016c8cf2edca8a21597ff1c8b6566fab339915b031fc
|
data/ext/simd/extconf.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
1
|
# Makes Makefiles for Ruby extensions.
|
2
2
|
require 'mkmf'
|
3
3
|
|
4
|
+
cpu = RbConfig::CONFIG['arch'].downcase
|
5
|
+
if cpu.include?('arm')
|
6
|
+
ver = cpu.gsub(/[^\d]*(\d+).*/, '\\1').to_i
|
7
|
+
$CFLAGS << ' -mfpu=neon' if ver >= 6
|
8
|
+
end
|
9
|
+
|
4
10
|
extension_name = 'simd'
|
5
11
|
dir_config(extension_name)
|
6
12
|
create_makefile(extension_name)
|
data/ext/simd/simd_common.c
CHANGED
@@ -38,7 +38,7 @@ VALUE method_length(VALUE self)
|
|
38
38
|
}
|
39
39
|
|
40
40
|
/* Internal: Allocate memory for the data array. */
|
41
|
-
void *internal_allocate_vector_array(unsigned long count)
|
41
|
+
void *internal_allocate_vector_array(unsigned long long int count)
|
42
42
|
{
|
43
43
|
void *vector = malloc((count + 1) * XMM_BYTES);
|
44
44
|
if(vector == NULL)
|
@@ -51,7 +51,7 @@ void *internal_allocate_vector_array(unsigned long count)
|
|
51
51
|
|
52
52
|
/* Internal: Determine if two arrays can be acted upon, by being of equal
|
53
53
|
* lengths or with the operand's length being a multiple of the data array's. */
|
54
|
-
int internal_align_vectors(unsigned long v1, unsigned long v2, unsigned int modulo)
|
54
|
+
int internal_align_vectors(unsigned long long int v1, unsigned long long int v2, unsigned int modulo)
|
55
55
|
{
|
56
56
|
if((v1 % modulo) != (v2 % modulo))
|
57
57
|
{
|
@@ -85,7 +85,7 @@ int internal_align_vectors(unsigned long v1, unsigned long v2, unsigned int modu
|
|
85
85
|
#pragma GCC diagnostic ignored "-Wpointer-arith"
|
86
86
|
VALUE internal_apply_operation(VALUE self, VALUE obj, size_t size, VALUE klass, b_operation func)
|
87
87
|
{
|
88
|
-
unsigned long length, i, j;
|
88
|
+
unsigned long long int length, i, j;
|
89
89
|
int align;
|
90
90
|
vector_t *v1, *v2, *rv;
|
91
91
|
void *data;
|
@@ -141,7 +141,7 @@ VALUE internal_apply_operation(VALUE self, VALUE obj, size_t size, VALUE klass,
|
|
141
141
|
#pragma GCC diagnostic ignored "-Wpointer-arith"
|
142
142
|
void internal_sanitize_unaligned_final_vector(vector_t *rv, size_t size)
|
143
143
|
{
|
144
|
-
unsigned long i;
|
144
|
+
unsigned long long int i;
|
145
145
|
|
146
146
|
if((rv->len * size) % XMM_BYTES)
|
147
147
|
{
|
data/ext/simd/simd_common.h
CHANGED
@@ -8,7 +8,7 @@ void deallocate(vector_t *vector);
|
|
8
8
|
|
9
9
|
VALUE method_length(VALUE self);
|
10
10
|
|
11
|
-
void *internal_allocate_vector_array(unsigned long count);
|
12
|
-
int internal_align_vectors(unsigned long v1, unsigned long v2, unsigned int modulo);
|
11
|
+
void *internal_allocate_vector_array(unsigned long long int count);
|
12
|
+
int internal_align_vectors(unsigned long long int v1, unsigned long long int v2, unsigned int modulo);
|
13
13
|
VALUE internal_apply_operation(VALUE self, VALUE obj, size_t size, VALUE klass, b_operation func);
|
14
14
|
void internal_sanitize_unaligned_final_vector(vector_t *rv, size_t size);
|
data/ext/simd/simd_floatarray.c
CHANGED
@@ -12,6 +12,9 @@ void Init_SIMD_FloatArray(VALUE parent)
|
|
12
12
|
rb_define_method(SIMD_FloatArray, "/", method_divide, 1);
|
13
13
|
rb_define_method(SIMD_FloatArray, "+", method_add, 1);
|
14
14
|
rb_define_method(SIMD_FloatArray, "-", method_subtract, 1);
|
15
|
+
rb_define_method(SIMD_FloatArray, "&", method_and, 1);
|
16
|
+
rb_define_method(SIMD_FloatArray, "|", method_or, 1);
|
17
|
+
rb_define_method(SIMD_FloatArray, "^", method_xor, 1);
|
15
18
|
rb_define_method(SIMD_FloatArray, "length", method_length, 0);
|
16
19
|
rb_define_method(SIMD_FloatArray, "to_a", method_to_a, 0);
|
17
20
|
}
|
@@ -22,7 +25,7 @@ static VALUE method_initialize(VALUE self, VALUE rb_array)
|
|
22
25
|
{
|
23
26
|
vector_t *vector;
|
24
27
|
d2v_t *data;
|
25
|
-
unsigned long n,i;
|
28
|
+
unsigned long long int n,i;
|
26
29
|
|
27
30
|
Check_Type(rb_array, T_ARRAY);
|
28
31
|
Data_Get_Struct(self, vector_t, vector);
|
@@ -75,10 +78,31 @@ static VALUE method_subtract(VALUE self, VALUE obj)
|
|
75
78
|
return(internal_apply_operation(self, obj, sizeof(double), SIMD_FloatArray, func_subtract));
|
76
79
|
}
|
77
80
|
|
81
|
+
/* Public: and values contained in the data array with those contained in
|
82
|
+
* another FloatArray object, returning a new FloatArray. */
|
83
|
+
static VALUE method_and(VALUE self, VALUE obj)
|
84
|
+
{
|
85
|
+
return(internal_apply_operation(self, obj, sizeof(double), SIMD_FloatArray, func_and));
|
86
|
+
}
|
87
|
+
|
88
|
+
/* Public: or values contained in the data array with those contained in
|
89
|
+
* another FloatArray object, returning a new FloatArray. */
|
90
|
+
static VALUE method_or(VALUE self, VALUE obj)
|
91
|
+
{
|
92
|
+
return(internal_apply_operation(self, obj, sizeof(double), SIMD_FloatArray, func_or));
|
93
|
+
}
|
94
|
+
|
95
|
+
/* Public: xor values contained in the data array with those contained in
|
96
|
+
* another FloatArray object, returning a new FloatArray. */
|
97
|
+
static VALUE method_xor(VALUE self, VALUE obj)
|
98
|
+
{
|
99
|
+
return(internal_apply_operation(self, obj, sizeof(double), SIMD_FloatArray, func_xor));
|
100
|
+
}
|
101
|
+
|
78
102
|
/* Public: Return a Ruby Array containing the doubles within the data array. */
|
79
103
|
static VALUE method_to_a(VALUE self)
|
80
104
|
{
|
81
|
-
unsigned long i;
|
105
|
+
unsigned long long int i;
|
82
106
|
vector_t *vector;
|
83
107
|
d2v_t *data;
|
84
108
|
VALUE rb_array = rb_ary_new();
|
@@ -116,3 +140,21 @@ static void func_subtract(void *v1, void *v2, void *r)
|
|
116
140
|
{
|
117
141
|
*(d2v *)r = *(d2v *)v1 - *(d2v *)v2;
|
118
142
|
}
|
143
|
+
|
144
|
+
/* Function: Perform a binary AND on two vectors. */
|
145
|
+
static void func_and(void *v1, void *v2, void *r)
|
146
|
+
{
|
147
|
+
*(l2v *)r = *(l2v *)v1 & *(l2v *)v2;
|
148
|
+
}
|
149
|
+
|
150
|
+
/* Function: Perform a binary OR on two vectors. */
|
151
|
+
static void func_or(void *v1, void *v2, void *r)
|
152
|
+
{
|
153
|
+
*(l2v *)r = *(l2v *)v1 | *(l2v *)v2;
|
154
|
+
}
|
155
|
+
|
156
|
+
/* Function: Perform a binary XOR on two vectors. */
|
157
|
+
static void func_xor(void *v1, void *v2, void *r)
|
158
|
+
{
|
159
|
+
*(l2v *)r = *(l2v *)v1 ^ *(l2v *)v2;
|
160
|
+
}
|
data/ext/simd/simd_floatarray.h
CHANGED
@@ -6,9 +6,15 @@ static VALUE method_multiply(VALUE self, VALUE obj);
|
|
6
6
|
static VALUE method_divide(VALUE self, VALUE obj);
|
7
7
|
static VALUE method_add(VALUE self, VALUE obj);
|
8
8
|
static VALUE method_subtract(VALUE self, VALUE obj);
|
9
|
+
static VALUE method_and(VALUE self, VALUE obj);
|
10
|
+
static VALUE method_or(VALUE self, VALUE obj);
|
11
|
+
static VALUE method_xor(VALUE self, VALUE obj);
|
9
12
|
static VALUE method_to_a(VALUE self);
|
10
13
|
|
11
14
|
static void func_multiply(void *v1, void *v2, void *r);
|
12
15
|
static void func_divide(void *v1, void *v2, void *r);
|
13
16
|
static void func_add(void *v1, void *v2, void *r);
|
14
17
|
static void func_subtract(void *v1, void *v2, void *r);
|
18
|
+
static void func_and(void *v1, void *v2, void *r);
|
19
|
+
static void func_or(void *v1, void *v2, void *r);
|
20
|
+
static void func_xor(void *v1, void *v2, void *r);
|
data/ext/simd/simd_intarray.c
CHANGED
@@ -25,7 +25,7 @@ static VALUE method_initialize(VALUE self, VALUE rb_array)
|
|
25
25
|
{
|
26
26
|
vector_t *vector;
|
27
27
|
i4v_t *data;
|
28
|
-
unsigned long n,i;
|
28
|
+
unsigned long long int n,i;
|
29
29
|
|
30
30
|
Check_Type(rb_array, T_ARRAY);
|
31
31
|
Data_Get_Struct(self, vector_t, vector);
|
@@ -102,7 +102,7 @@ static VALUE method_subtract(VALUE self, VALUE obj)
|
|
102
102
|
/* Public: Return a Ruby Array containing the doubles within the data array. */
|
103
103
|
static VALUE method_to_a(VALUE self)
|
104
104
|
{
|
105
|
-
unsigned long i;
|
105
|
+
unsigned long long int i;
|
106
106
|
vector_t *vector;
|
107
107
|
i4v_t *data;
|
108
108
|
VALUE rb_array = rb_ary_new();
|
data/ext/simd/simd_intarray.h
CHANGED
@@ -5,10 +5,10 @@ static VALUE method_initialize(VALUE self, VALUE rb_array);
|
|
5
5
|
static VALUE method_multiply(VALUE self, VALUE obj);
|
6
6
|
static VALUE method_divide(VALUE self, VALUE obj);
|
7
7
|
static VALUE method_add(VALUE self, VALUE obj);
|
8
|
+
static VALUE method_subtract(VALUE self, VALUE obj);
|
8
9
|
static VALUE method_and(VALUE self, VALUE obj);
|
9
10
|
static VALUE method_or(VALUE self, VALUE obj);
|
10
11
|
static VALUE method_xor(VALUE self, VALUE obj);
|
11
|
-
static VALUE method_subtract(VALUE self, VALUE obj);
|
12
12
|
static VALUE method_to_a(VALUE self);
|
13
13
|
|
14
14
|
static void func_multiply(void *v1, void *v2, void *r);
|
data/ext/simd/simd_longarray.c
CHANGED
@@ -25,7 +25,7 @@ static VALUE method_initialize(VALUE self, VALUE rb_array)
|
|
25
25
|
{
|
26
26
|
vector_t *vector;
|
27
27
|
l2v_t *data;
|
28
|
-
unsigned long n,i;
|
28
|
+
unsigned long long int n,i;
|
29
29
|
|
30
30
|
Check_Type(rb_array, T_ARRAY);
|
31
31
|
Data_Get_Struct(self, vector_t, vector);
|
@@ -45,7 +45,7 @@ static VALUE method_initialize(VALUE self, VALUE rb_array)
|
|
45
45
|
data[i/2].f[i%2] = NUM2LONG(rb_ary_entry(rb_array, i));
|
46
46
|
}
|
47
47
|
|
48
|
-
internal_sanitize_unaligned_final_vector(vector, sizeof(long));
|
48
|
+
internal_sanitize_unaligned_final_vector(vector, sizeof(long long int));
|
49
49
|
|
50
50
|
return(self);
|
51
51
|
}
|
@@ -54,55 +54,55 @@ static VALUE method_initialize(VALUE self, VALUE rb_array)
|
|
54
54
|
* another FloatArray object, returning a new FloatArray. */
|
55
55
|
static VALUE method_multiply(VALUE self, VALUE obj)
|
56
56
|
{
|
57
|
-
return(internal_apply_operation(self, obj, sizeof(long), SIMD_LongArray, func_multiply));
|
57
|
+
return(internal_apply_operation(self, obj, sizeof(long long int), SIMD_LongArray, func_multiply));
|
58
58
|
}
|
59
59
|
|
60
60
|
/* Public: Divide values contained in the data array by those contained in
|
61
61
|
* another FloatArray object, returning a new FloatArray. */
|
62
62
|
static VALUE method_divide(VALUE self, VALUE obj)
|
63
63
|
{
|
64
|
-
return(internal_apply_operation(self, obj, sizeof(long), SIMD_LongArray, func_divide));
|
64
|
+
return(internal_apply_operation(self, obj, sizeof(long long int), SIMD_LongArray, func_divide));
|
65
65
|
}
|
66
66
|
|
67
67
|
/* Public: add values contained in the data array with those contained in
|
68
68
|
* another FloatArray object, returning a new FloatArray. */
|
69
69
|
static VALUE method_add(VALUE self, VALUE obj)
|
70
70
|
{
|
71
|
-
return(internal_apply_operation(self, obj, sizeof(long), SIMD_LongArray, func_add));
|
71
|
+
return(internal_apply_operation(self, obj, sizeof(long long int), SIMD_LongArray, func_add));
|
72
72
|
}
|
73
73
|
|
74
74
|
/* Public: and values contained in the data array with those contained in
|
75
75
|
* another FloatArray object, returning a new FloatArray. */
|
76
76
|
static VALUE method_and(VALUE self, VALUE obj)
|
77
77
|
{
|
78
|
-
return(internal_apply_operation(self, obj, sizeof(long), SIMD_LongArray, func_and));
|
78
|
+
return(internal_apply_operation(self, obj, sizeof(long long int), SIMD_LongArray, func_and));
|
79
79
|
}
|
80
80
|
|
81
81
|
/* Public: or values contained in the data array with those contained in
|
82
82
|
* another FloatArray object, returning a new FloatArray. */
|
83
83
|
static VALUE method_or(VALUE self, VALUE obj)
|
84
84
|
{
|
85
|
-
return(internal_apply_operation(self, obj, sizeof(long), SIMD_LongArray, func_or));
|
85
|
+
return(internal_apply_operation(self, obj, sizeof(long long int), SIMD_LongArray, func_or));
|
86
86
|
}
|
87
87
|
|
88
88
|
/* Public: xor values contained in the data array with those contained in
|
89
89
|
* another FloatArray object, returning a new FloatArray. */
|
90
90
|
static VALUE method_xor(VALUE self, VALUE obj)
|
91
91
|
{
|
92
|
-
return(internal_apply_operation(self, obj, sizeof(long), SIMD_LongArray, func_xor));
|
92
|
+
return(internal_apply_operation(self, obj, sizeof(long long int), SIMD_LongArray, func_xor));
|
93
93
|
}
|
94
94
|
|
95
95
|
/* Public: Subtract values contained in another FloatArray object from those
|
96
96
|
* contained in the current data array object, returning a new FloatArray. */
|
97
97
|
static VALUE method_subtract(VALUE self, VALUE obj)
|
98
98
|
{
|
99
|
-
return(internal_apply_operation(self, obj, sizeof(long), SIMD_LongArray, func_subtract));
|
99
|
+
return(internal_apply_operation(self, obj, sizeof(long long int), SIMD_LongArray, func_subtract));
|
100
100
|
}
|
101
101
|
|
102
102
|
/* Public: Return a Ruby Array containing the doubles within the data array. */
|
103
103
|
static VALUE method_to_a(VALUE self)
|
104
104
|
{
|
105
|
-
unsigned long i;
|
105
|
+
unsigned long long int i;
|
106
106
|
vector_t *vector;
|
107
107
|
l2v_t *data;
|
108
108
|
VALUE rb_array = rb_ary_new();
|
@@ -12,6 +12,9 @@ void Init_SIMD_SmallFloatArray(VALUE parent)
|
|
12
12
|
rb_define_method(SIMD_SmallFloatArray, "/", method_divide, 1);
|
13
13
|
rb_define_method(SIMD_SmallFloatArray, "+", method_add, 1);
|
14
14
|
rb_define_method(SIMD_SmallFloatArray, "-", method_subtract, 1);
|
15
|
+
rb_define_method(SIMD_SmallFloatArray, "&", method_and, 1);
|
16
|
+
rb_define_method(SIMD_SmallFloatArray, "|", method_or, 1);
|
17
|
+
rb_define_method(SIMD_SmallFloatArray, "^", method_xor, 1);
|
15
18
|
rb_define_method(SIMD_SmallFloatArray, "length", method_length, 0);
|
16
19
|
rb_define_method(SIMD_SmallFloatArray, "to_a", method_to_a, 0);
|
17
20
|
}
|
@@ -22,7 +25,7 @@ static VALUE method_initialize(VALUE self, VALUE rb_array)
|
|
22
25
|
{
|
23
26
|
vector_t *vector;
|
24
27
|
f4v_t *data;
|
25
|
-
unsigned long n,i;
|
28
|
+
unsigned long long int n,i;
|
26
29
|
|
27
30
|
Check_Type(rb_array, T_ARRAY);
|
28
31
|
Data_Get_Struct(self, vector_t, vector);
|
@@ -75,10 +78,31 @@ static VALUE method_subtract(VALUE self, VALUE obj)
|
|
75
78
|
return(internal_apply_operation(self, obj, sizeof(float), SIMD_SmallFloatArray, func_subtract));
|
76
79
|
}
|
77
80
|
|
81
|
+
/* Public: and values contained in the data array with those contained in
|
82
|
+
* another FloatArray object, returning a new FloatArray. */
|
83
|
+
static VALUE method_and(VALUE self, VALUE obj)
|
84
|
+
{
|
85
|
+
return(internal_apply_operation(self, obj, sizeof(float), SIMD_SmallFloatArray, func_and));
|
86
|
+
}
|
87
|
+
|
88
|
+
/* Public: or values contained in the data array with those contained in
|
89
|
+
* another FloatArray object, returning a new FloatArray. */
|
90
|
+
static VALUE method_or(VALUE self, VALUE obj)
|
91
|
+
{
|
92
|
+
return(internal_apply_operation(self, obj, sizeof(float), SIMD_SmallFloatArray, func_or));
|
93
|
+
}
|
94
|
+
|
95
|
+
/* Public: xor values contained in the data array with those contained in
|
96
|
+
* another FloatArray object, returning a new FloatArray. */
|
97
|
+
static VALUE method_xor(VALUE self, VALUE obj)
|
98
|
+
{
|
99
|
+
return(internal_apply_operation(self, obj, sizeof(float), SIMD_SmallFloatArray, func_xor));
|
100
|
+
}
|
101
|
+
|
78
102
|
/* Public: Return a Ruby Array containing the doubles within the data array. */
|
79
103
|
static VALUE method_to_a(VALUE self)
|
80
104
|
{
|
81
|
-
unsigned long i;
|
105
|
+
unsigned long long int i;
|
82
106
|
vector_t *vector;
|
83
107
|
f4v_t *data;
|
84
108
|
VALUE rb_array = rb_ary_new();
|
@@ -116,3 +140,21 @@ static void func_subtract(void *v1, void *v2, void *r)
|
|
116
140
|
{
|
117
141
|
*(f4v *)r = *(f4v *)v1 - *(f4v *)v2;
|
118
142
|
}
|
143
|
+
|
144
|
+
/* Function: Perform a binary AND on two vectors. */
|
145
|
+
static void func_and(void *v1, void *v2, void *r)
|
146
|
+
{
|
147
|
+
*(i4v *)r = *(i4v *)v1 & *(i4v *)v2;
|
148
|
+
}
|
149
|
+
|
150
|
+
/* Function: Perform a binary OR on two vectors. */
|
151
|
+
static void func_or(void *v1, void *v2, void *r)
|
152
|
+
{
|
153
|
+
*(i4v *)r = *(i4v *)v1 | *(i4v *)v2;
|
154
|
+
}
|
155
|
+
|
156
|
+
/* Function: Perform a binary XOR on two vectors. */
|
157
|
+
static void func_xor(void *v1, void *v2, void *r)
|
158
|
+
{
|
159
|
+
*(i4v *)r = *(i4v *)v1 ^ *(i4v *)v2;
|
160
|
+
}
|
@@ -6,9 +6,15 @@ static VALUE method_multiply(VALUE self, VALUE obj);
|
|
6
6
|
static VALUE method_divide(VALUE self, VALUE obj);
|
7
7
|
static VALUE method_add(VALUE self, VALUE obj);
|
8
8
|
static VALUE method_subtract(VALUE self, VALUE obj);
|
9
|
+
static VALUE method_and(VALUE self, VALUE obj);
|
10
|
+
static VALUE method_or(VALUE self, VALUE obj);
|
11
|
+
static VALUE method_xor(VALUE self, VALUE obj);
|
9
12
|
static VALUE method_to_a(VALUE self);
|
10
13
|
|
11
14
|
static void func_multiply(void *v1, void *v2, void *r);
|
12
15
|
static void func_divide(void *v1, void *v2, void *r);
|
13
16
|
static void func_add(void *v1, void *v2, void *r);
|
14
17
|
static void func_subtract(void *v1, void *v2, void *r);
|
18
|
+
static void func_and(void *v1, void *v2, void *r);
|
19
|
+
static void func_or(void *v1, void *v2, void *r);
|
20
|
+
static void func_xor(void *v1, void *v2, void *r);
|
data/ext/simd/simd_types.h
CHANGED
@@ -40,17 +40,17 @@ typedef union i4v_t
|
|
40
40
|
/*
|
41
41
|
* Types for LongArray
|
42
42
|
*/
|
43
|
-
typedef long int __attribute__ ((vector_size (16))) l2v;
|
43
|
+
typedef long long int __attribute__ ((vector_size (16))) l2v;
|
44
44
|
typedef union l2v_t
|
45
45
|
{
|
46
46
|
l2v v;
|
47
|
-
long int f[2];
|
47
|
+
long long int f[2];
|
48
48
|
} l2v_t;
|
49
49
|
|
50
50
|
typedef struct vector_t
|
51
51
|
{
|
52
52
|
void *data;
|
53
|
-
unsigned long len;
|
53
|
+
unsigned long long int len;
|
54
54
|
} vector_t;
|
55
55
|
|
56
56
|
typedef void (b_operation)(void *v1, void *v2, void *r);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tina Wuest
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -64,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
64
|
version: '0'
|
65
65
|
requirements: []
|
66
66
|
rubyforge_project:
|
67
|
-
rubygems_version: 2.
|
67
|
+
rubygems_version: 2.4.5
|
68
68
|
signing_key:
|
69
69
|
specification_version: 4
|
70
70
|
summary: SIMD instructions in ruby
|