carray 3.0.1 → 3.0.2
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/CHANGELOG.md +520 -0
- data/README.md +2 -2
- data/carray.gemspec +1 -1
- data/ext/ca_axis_dispatch.c +33 -4
- data/ext/ca_axis_group.c +202 -96
- data/ext/ca_categorical_iterator.c +108 -54
- data/ext/ca_kernel_iterator.c +317 -51
- data/ext/ca_kernel_iterator.h +142 -35
- data/ext/ca_obj_array.c +62 -20
- data/ext/ca_obj_block.c +4 -4
- data/ext/ca_obj_const_string.c +85 -26
- data/ext/ca_obj_face.c +24 -0
- data/ext/ca_obj_face.h +15 -0
- data/ext/ca_obj_fixlen_string.c +18 -5
- data/ext/ca_obj_meld.c +123 -25
- data/ext/ca_obj_object.c +8 -0
- data/ext/ca_obj_select.c +49 -34
- data/ext/ca_obj_stack.c +3 -8
- data/ext/ca_obj_stride.c +72 -1
- data/ext/ca_obj_string.c +8 -4
- data/ext/ca_obj_window.c +8 -2
- data/ext/ca_op_ipower.c +1 -2
- data/ext/ca_rng_normal.h +42 -0
- data/ext/ca_rng_xoshiro256pp.h +105 -0
- data/ext/ca_sweep_engine.c +307 -143
- data/ext/ca_sweep_engine.h +26 -5
- data/ext/carray.h +21 -2
- data/ext/carray_access.c +32 -20
- data/ext/carray_address_basis.c +590 -0
- data/ext/carray_broadcast.c +3 -3
- data/ext/carray_call_cfunc.c +667 -483
- data/ext/carray_cast.c +115 -41
- data/ext/carray_copy.c +55 -30
- data/ext/carray_core.c +83 -3
- data/ext/carray_count.c +9 -10
- data/ext/carray_factorize.c +46 -25
- data/ext/carray_internal.h +17 -0
- data/ext/carray_kernels_reduce_aggregate.c +168 -0
- data/ext/carray_kernels_reduce_cumulative.c +270 -1
- data/ext/carray_kernels_reduce_extreme.c +554 -8
- data/ext/carray_kernels_scan.c +4 -4
- data/ext/carray_kernels_search.c +94 -14
- data/ext/carray_loop.c +7 -1
- data/ext/carray_mask.c +23 -8
- data/ext/carray_median_percentile.c +55 -0
- data/ext/carray_operator.c +4 -4
- data/ext/carray_order.c +1 -1
- data/ext/carray_random.c +384 -40
- data/ext/carray_slab.c +13 -0
- data/ext/carray_sort.c +20 -22
- data/ext/mk_call_cfunc.rb +103 -116
- data/ext/mkkernel.rb +297 -29
- data/ext/ruby_carray.c +10 -1
- data/ext/version.h +4 -4
- data/lib/carray/autoload_carray.rb +5 -3
- data/lib/carray/autoload_method_extension.rb +12 -0
- data/lib/carray/axis_group.rb +77 -0
- data/lib/carray/basics.rb +4 -0
- data/lib/carray/block_iterator.rb +92 -16
- data/lib/carray/categorical.rb +150 -33
- data/lib/carray/categorical_iterator.rb +207 -80
- data/lib/carray/const_string.rb +131 -27
- data/lib/carray/construct.rb +40 -0
- data/lib/carray/data_type_extension.rb +3 -0
- data/lib/carray/data_type_limits.rb +91 -0
- data/lib/carray/fixlen_string.rb +1 -1
- data/lib/carray/frame/csv_parser.rb +11 -4
- data/lib/carray/frame/frame.rb +81 -10
- data/lib/carray/frame/group.rb +36 -3
- data/lib/carray/frame/io.rb +67 -15
- data/lib/carray/frame/records.rb +18 -4
- data/lib/carray/frame/verbs.rb +14 -11
- data/lib/carray/inspect.rb +42 -9
- data/lib/carray/iterator.rb +143 -0
- data/lib/carray/lazy.rb +0 -37
- data/lib/carray/mask_gap_fill.rb +3 -1
- data/lib/carray/methods/discovery_along.rb +74 -0
- data/lib/carray/methods/factorize.rb +50 -0
- data/lib/carray/methods/is_in.rb +13 -2
- data/lib/carray/methods/locate_addr.rb +75 -2
- data/lib/carray/methods/mask_duplicates.rb +35 -1
- data/lib/carray/methods/nunique.rb +22 -1
- data/lib/carray/methods/repeat.rb +110 -0
- data/lib/carray/methods/unique.rb +41 -1
- data/lib/carray/rng.rb +86 -0
- data/lib/carray/slab_iterator.rb +58 -13
- data/lib/carray/string_operation_extension.rb +5 -1
- data/lib/carray/time.rb +18 -2
- data/lib/carray/window_iterator.rb +142 -20
- data/lib/carray.rb +2 -0
- data/yard-stubs/ca_obj_block.rb +2 -7
- data/yard-stubs/ca_obj_window.rb +10 -2
- data/yard-stubs/carray_access.rb +1 -1
- data/yard-stubs/carray_broadcast.rb +1 -1
- data/yard-stubs/carray_core.rb +0 -80
- data/yard-stubs/carray_count.rb +7 -2
- data/yard-stubs/carray_lazy.rb +205 -0
- data/yard-stubs/carray_math.rb +1486 -3
- data/yard-stubs/carray_median_percentile.rb +16 -2
- data/yard-stubs/carray_order.rb +9 -69
- data/yard-stubs/carray_slab.rb +9 -7
- data/yard-stubs/carray_sort.rb +7 -5
- metadata +9 -1
|
@@ -137,6 +137,7 @@ min_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
137
137
|
(void) v;
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
+
|
|
140
141
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
141
142
|
op[__li_o * __li_INNER + __li_tile + __j] = (int8_t) (__li_buf_acc[__j]);
|
|
142
143
|
}
|
|
@@ -216,6 +217,7 @@ min_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
216
217
|
(void) v;
|
|
217
218
|
}
|
|
218
219
|
}
|
|
220
|
+
|
|
219
221
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
220
222
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (int8_t) (__li_buf_acc[__j]);
|
|
221
223
|
}
|
|
@@ -341,6 +343,7 @@ min_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
341
343
|
(void) v;
|
|
342
344
|
}
|
|
343
345
|
}
|
|
346
|
+
|
|
344
347
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
345
348
|
__li_op_k[__li_tile + __j] = (int8_t) (__li_buf_acc[__j]);
|
|
346
349
|
}
|
|
@@ -501,6 +504,7 @@ min_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
501
504
|
(void) v;
|
|
502
505
|
}
|
|
503
506
|
}
|
|
507
|
+
|
|
504
508
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
505
509
|
__li_op_k[__li_tile + __j] = (int8_t) (__li_buf_acc[__j]);
|
|
506
510
|
}
|
|
@@ -656,6 +660,7 @@ min_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
656
660
|
(void) v;
|
|
657
661
|
}
|
|
658
662
|
}
|
|
663
|
+
|
|
659
664
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
660
665
|
op[__li_o * __li_INNER + __li_tile + __j] = (uint8_t) (__li_buf_acc[__j]);
|
|
661
666
|
}
|
|
@@ -735,6 +740,7 @@ min_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
735
740
|
(void) v;
|
|
736
741
|
}
|
|
737
742
|
}
|
|
743
|
+
|
|
738
744
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
739
745
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (uint8_t) (__li_buf_acc[__j]);
|
|
740
746
|
}
|
|
@@ -860,6 +866,7 @@ min_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
860
866
|
(void) v;
|
|
861
867
|
}
|
|
862
868
|
}
|
|
869
|
+
|
|
863
870
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
864
871
|
__li_op_k[__li_tile + __j] = (uint8_t) (__li_buf_acc[__j]);
|
|
865
872
|
}
|
|
@@ -1020,6 +1027,7 @@ min_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
1020
1027
|
(void) v;
|
|
1021
1028
|
}
|
|
1022
1029
|
}
|
|
1030
|
+
|
|
1023
1031
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
1024
1032
|
__li_op_k[__li_tile + __j] = (uint8_t) (__li_buf_acc[__j]);
|
|
1025
1033
|
}
|
|
@@ -1175,6 +1183,7 @@ min_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
1175
1183
|
(void) v;
|
|
1176
1184
|
}
|
|
1177
1185
|
}
|
|
1186
|
+
|
|
1178
1187
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
1179
1188
|
op[__li_o * __li_INNER + __li_tile + __j] = (int16_t) (__li_buf_acc[__j]);
|
|
1180
1189
|
}
|
|
@@ -1254,6 +1263,7 @@ min_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
1254
1263
|
(void) v;
|
|
1255
1264
|
}
|
|
1256
1265
|
}
|
|
1266
|
+
|
|
1257
1267
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
1258
1268
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (int16_t) (__li_buf_acc[__j]);
|
|
1259
1269
|
}
|
|
@@ -1379,6 +1389,7 @@ min_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
1379
1389
|
(void) v;
|
|
1380
1390
|
}
|
|
1381
1391
|
}
|
|
1392
|
+
|
|
1382
1393
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
1383
1394
|
__li_op_k[__li_tile + __j] = (int16_t) (__li_buf_acc[__j]);
|
|
1384
1395
|
}
|
|
@@ -1539,6 +1550,7 @@ min_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
1539
1550
|
(void) v;
|
|
1540
1551
|
}
|
|
1541
1552
|
}
|
|
1553
|
+
|
|
1542
1554
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
1543
1555
|
__li_op_k[__li_tile + __j] = (int16_t) (__li_buf_acc[__j]);
|
|
1544
1556
|
}
|
|
@@ -1694,6 +1706,7 @@ min_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
1694
1706
|
(void) v;
|
|
1695
1707
|
}
|
|
1696
1708
|
}
|
|
1709
|
+
|
|
1697
1710
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
1698
1711
|
op[__li_o * __li_INNER + __li_tile + __j] = (uint16_t) (__li_buf_acc[__j]);
|
|
1699
1712
|
}
|
|
@@ -1773,6 +1786,7 @@ min_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
1773
1786
|
(void) v;
|
|
1774
1787
|
}
|
|
1775
1788
|
}
|
|
1789
|
+
|
|
1776
1790
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
1777
1791
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (uint16_t) (__li_buf_acc[__j]);
|
|
1778
1792
|
}
|
|
@@ -1898,6 +1912,7 @@ min_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
1898
1912
|
(void) v;
|
|
1899
1913
|
}
|
|
1900
1914
|
}
|
|
1915
|
+
|
|
1901
1916
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
1902
1917
|
__li_op_k[__li_tile + __j] = (uint16_t) (__li_buf_acc[__j]);
|
|
1903
1918
|
}
|
|
@@ -2058,6 +2073,7 @@ min_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
2058
2073
|
(void) v;
|
|
2059
2074
|
}
|
|
2060
2075
|
}
|
|
2076
|
+
|
|
2061
2077
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
2062
2078
|
__li_op_k[__li_tile + __j] = (uint16_t) (__li_buf_acc[__j]);
|
|
2063
2079
|
}
|
|
@@ -2213,6 +2229,7 @@ min_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
2213
2229
|
(void) v;
|
|
2214
2230
|
}
|
|
2215
2231
|
}
|
|
2232
|
+
|
|
2216
2233
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
2217
2234
|
op[__li_o * __li_INNER + __li_tile + __j] = (int32_t) (__li_buf_acc[__j]);
|
|
2218
2235
|
}
|
|
@@ -2292,6 +2309,7 @@ min_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
2292
2309
|
(void) v;
|
|
2293
2310
|
}
|
|
2294
2311
|
}
|
|
2312
|
+
|
|
2295
2313
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
2296
2314
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (int32_t) (__li_buf_acc[__j]);
|
|
2297
2315
|
}
|
|
@@ -2417,6 +2435,7 @@ min_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
2417
2435
|
(void) v;
|
|
2418
2436
|
}
|
|
2419
2437
|
}
|
|
2438
|
+
|
|
2420
2439
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
2421
2440
|
__li_op_k[__li_tile + __j] = (int32_t) (__li_buf_acc[__j]);
|
|
2422
2441
|
}
|
|
@@ -2577,6 +2596,7 @@ min_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
2577
2596
|
(void) v;
|
|
2578
2597
|
}
|
|
2579
2598
|
}
|
|
2599
|
+
|
|
2580
2600
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
2581
2601
|
__li_op_k[__li_tile + __j] = (int32_t) (__li_buf_acc[__j]);
|
|
2582
2602
|
}
|
|
@@ -2732,6 +2752,7 @@ min_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
2732
2752
|
(void) v;
|
|
2733
2753
|
}
|
|
2734
2754
|
}
|
|
2755
|
+
|
|
2735
2756
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
2736
2757
|
op[__li_o * __li_INNER + __li_tile + __j] = (uint32_t) (__li_buf_acc[__j]);
|
|
2737
2758
|
}
|
|
@@ -2811,6 +2832,7 @@ min_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
2811
2832
|
(void) v;
|
|
2812
2833
|
}
|
|
2813
2834
|
}
|
|
2835
|
+
|
|
2814
2836
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
2815
2837
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (uint32_t) (__li_buf_acc[__j]);
|
|
2816
2838
|
}
|
|
@@ -2936,6 +2958,7 @@ min_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
2936
2958
|
(void) v;
|
|
2937
2959
|
}
|
|
2938
2960
|
}
|
|
2961
|
+
|
|
2939
2962
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
2940
2963
|
__li_op_k[__li_tile + __j] = (uint32_t) (__li_buf_acc[__j]);
|
|
2941
2964
|
}
|
|
@@ -3096,6 +3119,7 @@ min_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
3096
3119
|
(void) v;
|
|
3097
3120
|
}
|
|
3098
3121
|
}
|
|
3122
|
+
|
|
3099
3123
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
3100
3124
|
__li_op_k[__li_tile + __j] = (uint32_t) (__li_buf_acc[__j]);
|
|
3101
3125
|
}
|
|
@@ -3251,6 +3275,7 @@ min_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
3251
3275
|
(void) v;
|
|
3252
3276
|
}
|
|
3253
3277
|
}
|
|
3278
|
+
|
|
3254
3279
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
3255
3280
|
op[__li_o * __li_INNER + __li_tile + __j] = (int64_t) (__li_buf_acc[__j]);
|
|
3256
3281
|
}
|
|
@@ -3330,6 +3355,7 @@ min_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
3330
3355
|
(void) v;
|
|
3331
3356
|
}
|
|
3332
3357
|
}
|
|
3358
|
+
|
|
3333
3359
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
3334
3360
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (int64_t) (__li_buf_acc[__j]);
|
|
3335
3361
|
}
|
|
@@ -3455,6 +3481,7 @@ min_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
3455
3481
|
(void) v;
|
|
3456
3482
|
}
|
|
3457
3483
|
}
|
|
3484
|
+
|
|
3458
3485
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
3459
3486
|
__li_op_k[__li_tile + __j] = (int64_t) (__li_buf_acc[__j]);
|
|
3460
3487
|
}
|
|
@@ -3615,6 +3642,7 @@ min_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
3615
3642
|
(void) v;
|
|
3616
3643
|
}
|
|
3617
3644
|
}
|
|
3645
|
+
|
|
3618
3646
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
3619
3647
|
__li_op_k[__li_tile + __j] = (int64_t) (__li_buf_acc[__j]);
|
|
3620
3648
|
}
|
|
@@ -3770,6 +3798,7 @@ min_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
3770
3798
|
(void) v;
|
|
3771
3799
|
}
|
|
3772
3800
|
}
|
|
3801
|
+
|
|
3773
3802
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
3774
3803
|
op[__li_o * __li_INNER + __li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
3775
3804
|
}
|
|
@@ -3849,6 +3878,7 @@ min_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
3849
3878
|
(void) v;
|
|
3850
3879
|
}
|
|
3851
3880
|
}
|
|
3881
|
+
|
|
3852
3882
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
3853
3883
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
3854
3884
|
}
|
|
@@ -3974,6 +4004,7 @@ min_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
3974
4004
|
(void) v;
|
|
3975
4005
|
}
|
|
3976
4006
|
}
|
|
4007
|
+
|
|
3977
4008
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
3978
4009
|
__li_op_k[__li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
3979
4010
|
}
|
|
@@ -4134,6 +4165,7 @@ min_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
4134
4165
|
(void) v;
|
|
4135
4166
|
}
|
|
4136
4167
|
}
|
|
4168
|
+
|
|
4137
4169
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4138
4170
|
__li_op_k[__li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
4139
4171
|
}
|
|
@@ -4217,6 +4249,7 @@ min_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
4217
4249
|
ca_size_t __outer_off = 0;
|
|
4218
4250
|
float acc;
|
|
4219
4251
|
acc = (INFINITY);
|
|
4252
|
+
int64_t __anf_seen = 0;
|
|
4220
4253
|
ca_size_t masked_cnt = 0; /* unused on streaming (no mask) */
|
|
4221
4254
|
(void) masked_cnt;
|
|
4222
4255
|
ca_lazy_arena_enter();
|
|
@@ -4231,11 +4264,13 @@ min_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
4231
4264
|
for ( __i = 0; __i < __n; __i++ ) {
|
|
4232
4265
|
float v = __chunk[__i];
|
|
4233
4266
|
acc = (v < acc) ? v : acc;
|
|
4267
|
+
__anf_seen |= (v == v);
|
|
4234
4268
|
}
|
|
4235
4269
|
__outer_off += __r;
|
|
4236
4270
|
}
|
|
4237
4271
|
ca_lazy_arena_release(__chunk);
|
|
4238
4272
|
ca_lazy_arena_exit();
|
|
4273
|
+
if ( ! __anf_seen && ca->elements > 0 ) acc = (float) NAN;
|
|
4239
4274
|
return rb_float_new((float) (acc));
|
|
4240
4275
|
}
|
|
4241
4276
|
/* L.1 / L.7: loop-interchange fast path with inner-tiling
|
|
@@ -4289,6 +4324,25 @@ min_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
4289
4324
|
(void) v;
|
|
4290
4325
|
}
|
|
4291
4326
|
}
|
|
4327
|
+
{
|
|
4328
|
+
int __li_susp = 0;
|
|
4329
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4330
|
+
if ( __li_buf_acc[__j] == (float) (INFINITY) ) { __li_susp = 1; break; }
|
|
4331
|
+
}
|
|
4332
|
+
if ( __li_susp ) {
|
|
4333
|
+
int8_t __li_buf_seen[512];
|
|
4334
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
4335
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
4336
|
+
const float *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
4337
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4338
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
4339
|
+
}
|
|
4340
|
+
}
|
|
4341
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4342
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (float) NAN;
|
|
4343
|
+
}
|
|
4344
|
+
}
|
|
4345
|
+
}
|
|
4292
4346
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4293
4347
|
op[__li_o * __li_INNER + __li_tile + __j] = (float) (__li_buf_acc[__j]);
|
|
4294
4348
|
}
|
|
@@ -4368,6 +4422,25 @@ min_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
4368
4422
|
(void) v;
|
|
4369
4423
|
}
|
|
4370
4424
|
}
|
|
4425
|
+
{
|
|
4426
|
+
int __li_susp = 0;
|
|
4427
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4428
|
+
if ( __li_buf_acc[__j] == (float) (INFINITY) ) { __li_susp = 1; break; }
|
|
4429
|
+
}
|
|
4430
|
+
if ( __li_susp ) {
|
|
4431
|
+
int8_t __li_buf_seen[512];
|
|
4432
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
4433
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
4434
|
+
const float *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
4435
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4436
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
4437
|
+
}
|
|
4438
|
+
}
|
|
4439
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4440
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (float) NAN;
|
|
4441
|
+
}
|
|
4442
|
+
}
|
|
4443
|
+
}
|
|
4371
4444
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4372
4445
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (float) (__li_buf_acc[__j]);
|
|
4373
4446
|
}
|
|
@@ -4493,6 +4566,25 @@ min_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
4493
4566
|
(void) v;
|
|
4494
4567
|
}
|
|
4495
4568
|
}
|
|
4569
|
+
{
|
|
4570
|
+
int __li_susp = 0;
|
|
4571
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4572
|
+
if ( __li_buf_acc[__j] == (float) (INFINITY) ) { __li_susp = 1; break; }
|
|
4573
|
+
}
|
|
4574
|
+
if ( __li_susp ) {
|
|
4575
|
+
int8_t __li_buf_seen[512];
|
|
4576
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
4577
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
4578
|
+
const float *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
4579
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4580
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
4581
|
+
}
|
|
4582
|
+
}
|
|
4583
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4584
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (float) NAN;
|
|
4585
|
+
}
|
|
4586
|
+
}
|
|
4587
|
+
}
|
|
4496
4588
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4497
4589
|
__li_op_k[__li_tile + __j] = (float) (__li_buf_acc[__j]);
|
|
4498
4590
|
}
|
|
@@ -4653,6 +4745,25 @@ min_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
4653
4745
|
(void) v;
|
|
4654
4746
|
}
|
|
4655
4747
|
}
|
|
4748
|
+
{
|
|
4749
|
+
int __li_susp = 0;
|
|
4750
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4751
|
+
if ( __li_buf_acc[__j] == (float) (INFINITY) ) { __li_susp = 1; break; }
|
|
4752
|
+
}
|
|
4753
|
+
if ( __li_susp ) {
|
|
4754
|
+
int8_t __li_buf_seen[512];
|
|
4755
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
4756
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
4757
|
+
const float *__li_row = __li_plane + __li_i * __li_M_stride + __li_tile;
|
|
4758
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4759
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
4760
|
+
}
|
|
4761
|
+
}
|
|
4762
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4763
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (float) NAN;
|
|
4764
|
+
}
|
|
4765
|
+
}
|
|
4766
|
+
}
|
|
4656
4767
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4657
4768
|
__li_op_k[__li_tile + __j] = (float) (__li_buf_acc[__j]);
|
|
4658
4769
|
}
|
|
@@ -4690,6 +4801,16 @@ ca_size_t out_i = 0;
|
|
|
4690
4801
|
#define __min_f32_EXPR(__x) ((float)(__x))
|
|
4691
4802
|
CA_SLAB_REDUCE_MIN8_EX(float, float, st, p, m, acc, INFINITY, __min_f32_EXPR, masked_cnt);
|
|
4692
4803
|
#undef __min_f32_EXPR
|
|
4804
|
+
/* all-NaN fix-up (all_nan_result: :nan). */
|
|
4805
|
+
if ( (acc == (INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
4806
|
+
int64_t __anf_seen = 0;
|
|
4807
|
+
ca_size_t __anf_mc = 0;
|
|
4808
|
+
CA_SLAB_REDUCE_T_EX(float, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
4809
|
+
(void) __anf_mc;
|
|
4810
|
+
if ( ! __anf_seen ) {
|
|
4811
|
+
acc = (float) NAN;
|
|
4812
|
+
}
|
|
4813
|
+
}
|
|
4693
4814
|
if ( (min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count) ) {
|
|
4694
4815
|
if ( ! op_mask ) {
|
|
4695
4816
|
ca_create_mask(co);
|
|
@@ -4736,6 +4857,7 @@ min_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
4736
4857
|
ca_size_t __outer_off = 0;
|
|
4737
4858
|
double acc;
|
|
4738
4859
|
acc = (INFINITY);
|
|
4860
|
+
int64_t __anf_seen = 0;
|
|
4739
4861
|
ca_size_t masked_cnt = 0; /* unused on streaming (no mask) */
|
|
4740
4862
|
(void) masked_cnt;
|
|
4741
4863
|
ca_lazy_arena_enter();
|
|
@@ -4750,11 +4872,13 @@ min_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
4750
4872
|
for ( __i = 0; __i < __n; __i++ ) {
|
|
4751
4873
|
double v = __chunk[__i];
|
|
4752
4874
|
acc = (v < acc) ? v : acc;
|
|
4875
|
+
__anf_seen |= (v == v);
|
|
4753
4876
|
}
|
|
4754
4877
|
__outer_off += __r;
|
|
4755
4878
|
}
|
|
4756
4879
|
ca_lazy_arena_release(__chunk);
|
|
4757
4880
|
ca_lazy_arena_exit();
|
|
4881
|
+
if ( ! __anf_seen && ca->elements > 0 ) acc = (double) NAN;
|
|
4758
4882
|
return rb_float_new((double) (acc));
|
|
4759
4883
|
}
|
|
4760
4884
|
/* L.1 / L.7: loop-interchange fast path with inner-tiling
|
|
@@ -4808,6 +4932,25 @@ min_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
4808
4932
|
(void) v;
|
|
4809
4933
|
}
|
|
4810
4934
|
}
|
|
4935
|
+
{
|
|
4936
|
+
int __li_susp = 0;
|
|
4937
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4938
|
+
if ( __li_buf_acc[__j] == (double) (INFINITY) ) { __li_susp = 1; break; }
|
|
4939
|
+
}
|
|
4940
|
+
if ( __li_susp ) {
|
|
4941
|
+
int8_t __li_buf_seen[512];
|
|
4942
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
4943
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
4944
|
+
const double *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
4945
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4946
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
4947
|
+
}
|
|
4948
|
+
}
|
|
4949
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4950
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (double) NAN;
|
|
4951
|
+
}
|
|
4952
|
+
}
|
|
4953
|
+
}
|
|
4811
4954
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4812
4955
|
op[__li_o * __li_INNER + __li_tile + __j] = (double) (__li_buf_acc[__j]);
|
|
4813
4956
|
}
|
|
@@ -4887,6 +5030,25 @@ min_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
4887
5030
|
(void) v;
|
|
4888
5031
|
}
|
|
4889
5032
|
}
|
|
5033
|
+
{
|
|
5034
|
+
int __li_susp = 0;
|
|
5035
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5036
|
+
if ( __li_buf_acc[__j] == (double) (INFINITY) ) { __li_susp = 1; break; }
|
|
5037
|
+
}
|
|
5038
|
+
if ( __li_susp ) {
|
|
5039
|
+
int8_t __li_buf_seen[512];
|
|
5040
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
5041
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
5042
|
+
const double *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
5043
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5044
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
5045
|
+
}
|
|
5046
|
+
}
|
|
5047
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5048
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (double) NAN;
|
|
5049
|
+
}
|
|
5050
|
+
}
|
|
5051
|
+
}
|
|
4890
5052
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
4891
5053
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (double) (__li_buf_acc[__j]);
|
|
4892
5054
|
}
|
|
@@ -5012,6 +5174,25 @@ min_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
5012
5174
|
(void) v;
|
|
5013
5175
|
}
|
|
5014
5176
|
}
|
|
5177
|
+
{
|
|
5178
|
+
int __li_susp = 0;
|
|
5179
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5180
|
+
if ( __li_buf_acc[__j] == (double) (INFINITY) ) { __li_susp = 1; break; }
|
|
5181
|
+
}
|
|
5182
|
+
if ( __li_susp ) {
|
|
5183
|
+
int8_t __li_buf_seen[512];
|
|
5184
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
5185
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
5186
|
+
const double *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
5187
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5188
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
5189
|
+
}
|
|
5190
|
+
}
|
|
5191
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5192
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (double) NAN;
|
|
5193
|
+
}
|
|
5194
|
+
}
|
|
5195
|
+
}
|
|
5015
5196
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5016
5197
|
__li_op_k[__li_tile + __j] = (double) (__li_buf_acc[__j]);
|
|
5017
5198
|
}
|
|
@@ -5172,6 +5353,25 @@ min_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
5172
5353
|
(void) v;
|
|
5173
5354
|
}
|
|
5174
5355
|
}
|
|
5356
|
+
{
|
|
5357
|
+
int __li_susp = 0;
|
|
5358
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5359
|
+
if ( __li_buf_acc[__j] == (double) (INFINITY) ) { __li_susp = 1; break; }
|
|
5360
|
+
}
|
|
5361
|
+
if ( __li_susp ) {
|
|
5362
|
+
int8_t __li_buf_seen[512];
|
|
5363
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
5364
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
5365
|
+
const double *__li_row = __li_plane + __li_i * __li_M_stride + __li_tile;
|
|
5366
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5367
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
5368
|
+
}
|
|
5369
|
+
}
|
|
5370
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5371
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (double) NAN;
|
|
5372
|
+
}
|
|
5373
|
+
}
|
|
5374
|
+
}
|
|
5175
5375
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5176
5376
|
__li_op_k[__li_tile + __j] = (double) (__li_buf_acc[__j]);
|
|
5177
5377
|
}
|
|
@@ -5209,6 +5409,16 @@ ca_size_t out_i = 0;
|
|
|
5209
5409
|
#define __min_f64_EXPR(__x) ((double)(__x))
|
|
5210
5410
|
CA_SLAB_REDUCE_MIN8_EX(double, double, st, p, m, acc, INFINITY, __min_f64_EXPR, masked_cnt);
|
|
5211
5411
|
#undef __min_f64_EXPR
|
|
5412
|
+
/* all-NaN fix-up (all_nan_result: :nan). */
|
|
5413
|
+
if ( (acc == (INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
5414
|
+
int64_t __anf_seen = 0;
|
|
5415
|
+
ca_size_t __anf_mc = 0;
|
|
5416
|
+
CA_SLAB_REDUCE_T_EX(double, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
5417
|
+
(void) __anf_mc;
|
|
5418
|
+
if ( ! __anf_seen ) {
|
|
5419
|
+
acc = (double) NAN;
|
|
5420
|
+
}
|
|
5421
|
+
}
|
|
5212
5422
|
if ( (min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count) ) {
|
|
5213
5423
|
if ( ! op_mask ) {
|
|
5214
5424
|
ca_create_mask(co);
|
|
@@ -5327,6 +5537,7 @@ min_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
5327
5537
|
(void) v;
|
|
5328
5538
|
}
|
|
5329
5539
|
}
|
|
5540
|
+
|
|
5330
5541
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5331
5542
|
op[__li_o * __li_INNER + __li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
5332
5543
|
}
|
|
@@ -5406,6 +5617,7 @@ min_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
5406
5617
|
(void) v;
|
|
5407
5618
|
}
|
|
5408
5619
|
}
|
|
5620
|
+
|
|
5409
5621
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5410
5622
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
5411
5623
|
}
|
|
@@ -5531,6 +5743,7 @@ min_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
5531
5743
|
(void) v;
|
|
5532
5744
|
}
|
|
5533
5745
|
}
|
|
5746
|
+
|
|
5534
5747
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5535
5748
|
__li_op_k[__li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
5536
5749
|
}
|
|
@@ -5691,6 +5904,7 @@ min_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
5691
5904
|
(void) v;
|
|
5692
5905
|
}
|
|
5693
5906
|
}
|
|
5907
|
+
|
|
5694
5908
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5695
5909
|
__li_op_k[__li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
5696
5910
|
}
|
|
@@ -5846,6 +6060,7 @@ min_ki_native_object (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
|
|
|
5846
6060
|
(void) v;
|
|
5847
6061
|
}
|
|
5848
6062
|
}
|
|
6063
|
+
|
|
5849
6064
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5850
6065
|
op[__li_o * __li_INNER + __li_tile + __j] = (VALUE) (__li_buf_acc[__j]);
|
|
5851
6066
|
}
|
|
@@ -5925,6 +6140,7 @@ min_ki_native_object (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
|
|
|
5925
6140
|
(void) v;
|
|
5926
6141
|
}
|
|
5927
6142
|
}
|
|
6143
|
+
|
|
5928
6144
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
5929
6145
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (VALUE) (__li_buf_acc[__j]);
|
|
5930
6146
|
}
|
|
@@ -6050,6 +6266,7 @@ min_ki_native_object (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
|
|
|
6050
6266
|
(void) v;
|
|
6051
6267
|
}
|
|
6052
6268
|
}
|
|
6269
|
+
|
|
6053
6270
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
6054
6271
|
__li_op_k[__li_tile + __j] = (VALUE) (__li_buf_acc[__j]);
|
|
6055
6272
|
}
|
|
@@ -6210,6 +6427,7 @@ min_ki_native_object (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
|
|
|
6210
6427
|
(void) v;
|
|
6211
6428
|
}
|
|
6212
6429
|
}
|
|
6430
|
+
|
|
6213
6431
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
6214
6432
|
__li_op_k[__li_tile + __j] = (VALUE) (__li_buf_acc[__j]);
|
|
6215
6433
|
}
|
|
@@ -6573,6 +6791,7 @@ max_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
6573
6791
|
(void) v;
|
|
6574
6792
|
}
|
|
6575
6793
|
}
|
|
6794
|
+
|
|
6576
6795
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
6577
6796
|
op[__li_o * __li_INNER + __li_tile + __j] = (int8_t) (__li_buf_acc[__j]);
|
|
6578
6797
|
}
|
|
@@ -6652,6 +6871,7 @@ max_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
6652
6871
|
(void) v;
|
|
6653
6872
|
}
|
|
6654
6873
|
}
|
|
6874
|
+
|
|
6655
6875
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
6656
6876
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (int8_t) (__li_buf_acc[__j]);
|
|
6657
6877
|
}
|
|
@@ -6777,6 +6997,7 @@ max_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
6777
6997
|
(void) v;
|
|
6778
6998
|
}
|
|
6779
6999
|
}
|
|
7000
|
+
|
|
6780
7001
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
6781
7002
|
__li_op_k[__li_tile + __j] = (int8_t) (__li_buf_acc[__j]);
|
|
6782
7003
|
}
|
|
@@ -6937,6 +7158,7 @@ max_ki_native_i8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
6937
7158
|
(void) v;
|
|
6938
7159
|
}
|
|
6939
7160
|
}
|
|
7161
|
+
|
|
6940
7162
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
6941
7163
|
__li_op_k[__li_tile + __j] = (int8_t) (__li_buf_acc[__j]);
|
|
6942
7164
|
}
|
|
@@ -7092,6 +7314,7 @@ max_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
7092
7314
|
(void) v;
|
|
7093
7315
|
}
|
|
7094
7316
|
}
|
|
7317
|
+
|
|
7095
7318
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
7096
7319
|
op[__li_o * __li_INNER + __li_tile + __j] = (uint8_t) (__li_buf_acc[__j]);
|
|
7097
7320
|
}
|
|
@@ -7171,6 +7394,7 @@ max_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
7171
7394
|
(void) v;
|
|
7172
7395
|
}
|
|
7173
7396
|
}
|
|
7397
|
+
|
|
7174
7398
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
7175
7399
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (uint8_t) (__li_buf_acc[__j]);
|
|
7176
7400
|
}
|
|
@@ -7296,6 +7520,7 @@ max_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
7296
7520
|
(void) v;
|
|
7297
7521
|
}
|
|
7298
7522
|
}
|
|
7523
|
+
|
|
7299
7524
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
7300
7525
|
__li_op_k[__li_tile + __j] = (uint8_t) (__li_buf_acc[__j]);
|
|
7301
7526
|
}
|
|
@@ -7456,6 +7681,7 @@ max_ki_native_u8 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int k
|
|
|
7456
7681
|
(void) v;
|
|
7457
7682
|
}
|
|
7458
7683
|
}
|
|
7684
|
+
|
|
7459
7685
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
7460
7686
|
__li_op_k[__li_tile + __j] = (uint8_t) (__li_buf_acc[__j]);
|
|
7461
7687
|
}
|
|
@@ -7611,6 +7837,7 @@ max_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
7611
7837
|
(void) v;
|
|
7612
7838
|
}
|
|
7613
7839
|
}
|
|
7840
|
+
|
|
7614
7841
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
7615
7842
|
op[__li_o * __li_INNER + __li_tile + __j] = (int16_t) (__li_buf_acc[__j]);
|
|
7616
7843
|
}
|
|
@@ -7690,6 +7917,7 @@ max_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
7690
7917
|
(void) v;
|
|
7691
7918
|
}
|
|
7692
7919
|
}
|
|
7920
|
+
|
|
7693
7921
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
7694
7922
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (int16_t) (__li_buf_acc[__j]);
|
|
7695
7923
|
}
|
|
@@ -7815,6 +8043,7 @@ max_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
7815
8043
|
(void) v;
|
|
7816
8044
|
}
|
|
7817
8045
|
}
|
|
8046
|
+
|
|
7818
8047
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
7819
8048
|
__li_op_k[__li_tile + __j] = (int16_t) (__li_buf_acc[__j]);
|
|
7820
8049
|
}
|
|
@@ -7975,6 +8204,7 @@ max_ki_native_i16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
7975
8204
|
(void) v;
|
|
7976
8205
|
}
|
|
7977
8206
|
}
|
|
8207
|
+
|
|
7978
8208
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
7979
8209
|
__li_op_k[__li_tile + __j] = (int16_t) (__li_buf_acc[__j]);
|
|
7980
8210
|
}
|
|
@@ -8130,6 +8360,7 @@ max_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
8130
8360
|
(void) v;
|
|
8131
8361
|
}
|
|
8132
8362
|
}
|
|
8363
|
+
|
|
8133
8364
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
8134
8365
|
op[__li_o * __li_INNER + __li_tile + __j] = (uint16_t) (__li_buf_acc[__j]);
|
|
8135
8366
|
}
|
|
@@ -8209,6 +8440,7 @@ max_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
8209
8440
|
(void) v;
|
|
8210
8441
|
}
|
|
8211
8442
|
}
|
|
8443
|
+
|
|
8212
8444
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
8213
8445
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (uint16_t) (__li_buf_acc[__j]);
|
|
8214
8446
|
}
|
|
@@ -8334,6 +8566,7 @@ max_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
8334
8566
|
(void) v;
|
|
8335
8567
|
}
|
|
8336
8568
|
}
|
|
8569
|
+
|
|
8337
8570
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
8338
8571
|
__li_op_k[__li_tile + __j] = (uint16_t) (__li_buf_acc[__j]);
|
|
8339
8572
|
}
|
|
@@ -8494,6 +8727,7 @@ max_ki_native_u16 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
8494
8727
|
(void) v;
|
|
8495
8728
|
}
|
|
8496
8729
|
}
|
|
8730
|
+
|
|
8497
8731
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
8498
8732
|
__li_op_k[__li_tile + __j] = (uint16_t) (__li_buf_acc[__j]);
|
|
8499
8733
|
}
|
|
@@ -8649,6 +8883,7 @@ max_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
8649
8883
|
(void) v;
|
|
8650
8884
|
}
|
|
8651
8885
|
}
|
|
8886
|
+
|
|
8652
8887
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
8653
8888
|
op[__li_o * __li_INNER + __li_tile + __j] = (int32_t) (__li_buf_acc[__j]);
|
|
8654
8889
|
}
|
|
@@ -8728,6 +8963,7 @@ max_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
8728
8963
|
(void) v;
|
|
8729
8964
|
}
|
|
8730
8965
|
}
|
|
8966
|
+
|
|
8731
8967
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
8732
8968
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (int32_t) (__li_buf_acc[__j]);
|
|
8733
8969
|
}
|
|
@@ -8853,6 +9089,7 @@ max_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
8853
9089
|
(void) v;
|
|
8854
9090
|
}
|
|
8855
9091
|
}
|
|
9092
|
+
|
|
8856
9093
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
8857
9094
|
__li_op_k[__li_tile + __j] = (int32_t) (__li_buf_acc[__j]);
|
|
8858
9095
|
}
|
|
@@ -9013,6 +9250,7 @@ max_ki_native_i32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
9013
9250
|
(void) v;
|
|
9014
9251
|
}
|
|
9015
9252
|
}
|
|
9253
|
+
|
|
9016
9254
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
9017
9255
|
__li_op_k[__li_tile + __j] = (int32_t) (__li_buf_acc[__j]);
|
|
9018
9256
|
}
|
|
@@ -9168,6 +9406,7 @@ max_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
9168
9406
|
(void) v;
|
|
9169
9407
|
}
|
|
9170
9408
|
}
|
|
9409
|
+
|
|
9171
9410
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
9172
9411
|
op[__li_o * __li_INNER + __li_tile + __j] = (uint32_t) (__li_buf_acc[__j]);
|
|
9173
9412
|
}
|
|
@@ -9247,6 +9486,7 @@ max_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
9247
9486
|
(void) v;
|
|
9248
9487
|
}
|
|
9249
9488
|
}
|
|
9489
|
+
|
|
9250
9490
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
9251
9491
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (uint32_t) (__li_buf_acc[__j]);
|
|
9252
9492
|
}
|
|
@@ -9372,6 +9612,7 @@ max_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
9372
9612
|
(void) v;
|
|
9373
9613
|
}
|
|
9374
9614
|
}
|
|
9615
|
+
|
|
9375
9616
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
9376
9617
|
__li_op_k[__li_tile + __j] = (uint32_t) (__li_buf_acc[__j]);
|
|
9377
9618
|
}
|
|
@@ -9532,6 +9773,7 @@ max_ki_native_u32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
9532
9773
|
(void) v;
|
|
9533
9774
|
}
|
|
9534
9775
|
}
|
|
9776
|
+
|
|
9535
9777
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
9536
9778
|
__li_op_k[__li_tile + __j] = (uint32_t) (__li_buf_acc[__j]);
|
|
9537
9779
|
}
|
|
@@ -9687,6 +9929,7 @@ max_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
9687
9929
|
(void) v;
|
|
9688
9930
|
}
|
|
9689
9931
|
}
|
|
9932
|
+
|
|
9690
9933
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
9691
9934
|
op[__li_o * __li_INNER + __li_tile + __j] = (int64_t) (__li_buf_acc[__j]);
|
|
9692
9935
|
}
|
|
@@ -9766,6 +10009,7 @@ max_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
9766
10009
|
(void) v;
|
|
9767
10010
|
}
|
|
9768
10011
|
}
|
|
10012
|
+
|
|
9769
10013
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
9770
10014
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (int64_t) (__li_buf_acc[__j]);
|
|
9771
10015
|
}
|
|
@@ -9891,6 +10135,7 @@ max_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
9891
10135
|
(void) v;
|
|
9892
10136
|
}
|
|
9893
10137
|
}
|
|
10138
|
+
|
|
9894
10139
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
9895
10140
|
__li_op_k[__li_tile + __j] = (int64_t) (__li_buf_acc[__j]);
|
|
9896
10141
|
}
|
|
@@ -10051,6 +10296,7 @@ max_ki_native_i64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
10051
10296
|
(void) v;
|
|
10052
10297
|
}
|
|
10053
10298
|
}
|
|
10299
|
+
|
|
10054
10300
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
10055
10301
|
__li_op_k[__li_tile + __j] = (int64_t) (__li_buf_acc[__j]);
|
|
10056
10302
|
}
|
|
@@ -10206,6 +10452,7 @@ max_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
10206
10452
|
(void) v;
|
|
10207
10453
|
}
|
|
10208
10454
|
}
|
|
10455
|
+
|
|
10209
10456
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
10210
10457
|
op[__li_o * __li_INNER + __li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
10211
10458
|
}
|
|
@@ -10285,6 +10532,7 @@ max_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
10285
10532
|
(void) v;
|
|
10286
10533
|
}
|
|
10287
10534
|
}
|
|
10535
|
+
|
|
10288
10536
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
10289
10537
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
10290
10538
|
}
|
|
@@ -10410,6 +10658,7 @@ max_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
10410
10658
|
(void) v;
|
|
10411
10659
|
}
|
|
10412
10660
|
}
|
|
10661
|
+
|
|
10413
10662
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
10414
10663
|
__li_op_k[__li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
10415
10664
|
}
|
|
@@ -10570,6 +10819,7 @@ max_ki_native_u64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
10570
10819
|
(void) v;
|
|
10571
10820
|
}
|
|
10572
10821
|
}
|
|
10822
|
+
|
|
10573
10823
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
10574
10824
|
__li_op_k[__li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
10575
10825
|
}
|
|
@@ -10653,6 +10903,7 @@ max_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
10653
10903
|
ca_size_t __outer_off = 0;
|
|
10654
10904
|
float acc;
|
|
10655
10905
|
acc = (-INFINITY);
|
|
10906
|
+
int64_t __anf_seen = 0;
|
|
10656
10907
|
ca_size_t masked_cnt = 0; /* unused on streaming (no mask) */
|
|
10657
10908
|
(void) masked_cnt;
|
|
10658
10909
|
ca_lazy_arena_enter();
|
|
@@ -10667,11 +10918,13 @@ max_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
10667
10918
|
for ( __i = 0; __i < __n; __i++ ) {
|
|
10668
10919
|
float v = __chunk[__i];
|
|
10669
10920
|
acc = (v > acc) ? v : acc;
|
|
10921
|
+
__anf_seen |= (v == v);
|
|
10670
10922
|
}
|
|
10671
10923
|
__outer_off += __r;
|
|
10672
10924
|
}
|
|
10673
10925
|
ca_lazy_arena_release(__chunk);
|
|
10674
10926
|
ca_lazy_arena_exit();
|
|
10927
|
+
if ( ! __anf_seen && ca->elements > 0 ) acc = (float) NAN;
|
|
10675
10928
|
return rb_float_new((float) (acc));
|
|
10676
10929
|
}
|
|
10677
10930
|
/* L.1 / L.7: loop-interchange fast path with inner-tiling
|
|
@@ -10725,6 +10978,25 @@ max_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
10725
10978
|
(void) v;
|
|
10726
10979
|
}
|
|
10727
10980
|
}
|
|
10981
|
+
{
|
|
10982
|
+
int __li_susp = 0;
|
|
10983
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
10984
|
+
if ( __li_buf_acc[__j] == (float) (-INFINITY) ) { __li_susp = 1; break; }
|
|
10985
|
+
}
|
|
10986
|
+
if ( __li_susp ) {
|
|
10987
|
+
int8_t __li_buf_seen[512];
|
|
10988
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
10989
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
10990
|
+
const float *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
10991
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
10992
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
10993
|
+
}
|
|
10994
|
+
}
|
|
10995
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
10996
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (float) NAN;
|
|
10997
|
+
}
|
|
10998
|
+
}
|
|
10999
|
+
}
|
|
10728
11000
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
10729
11001
|
op[__li_o * __li_INNER + __li_tile + __j] = (float) (__li_buf_acc[__j]);
|
|
10730
11002
|
}
|
|
@@ -10804,6 +11076,25 @@ max_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
10804
11076
|
(void) v;
|
|
10805
11077
|
}
|
|
10806
11078
|
}
|
|
11079
|
+
{
|
|
11080
|
+
int __li_susp = 0;
|
|
11081
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11082
|
+
if ( __li_buf_acc[__j] == (float) (-INFINITY) ) { __li_susp = 1; break; }
|
|
11083
|
+
}
|
|
11084
|
+
if ( __li_susp ) {
|
|
11085
|
+
int8_t __li_buf_seen[512];
|
|
11086
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
11087
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
11088
|
+
const float *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
11089
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11090
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
11091
|
+
}
|
|
11092
|
+
}
|
|
11093
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11094
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (float) NAN;
|
|
11095
|
+
}
|
|
11096
|
+
}
|
|
11097
|
+
}
|
|
10807
11098
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
10808
11099
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (float) (__li_buf_acc[__j]);
|
|
10809
11100
|
}
|
|
@@ -10929,6 +11220,25 @@ max_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
10929
11220
|
(void) v;
|
|
10930
11221
|
}
|
|
10931
11222
|
}
|
|
11223
|
+
{
|
|
11224
|
+
int __li_susp = 0;
|
|
11225
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11226
|
+
if ( __li_buf_acc[__j] == (float) (-INFINITY) ) { __li_susp = 1; break; }
|
|
11227
|
+
}
|
|
11228
|
+
if ( __li_susp ) {
|
|
11229
|
+
int8_t __li_buf_seen[512];
|
|
11230
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
11231
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
11232
|
+
const float *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
11233
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11234
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
11235
|
+
}
|
|
11236
|
+
}
|
|
11237
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11238
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (float) NAN;
|
|
11239
|
+
}
|
|
11240
|
+
}
|
|
11241
|
+
}
|
|
10932
11242
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
10933
11243
|
__li_op_k[__li_tile + __j] = (float) (__li_buf_acc[__j]);
|
|
10934
11244
|
}
|
|
@@ -11089,6 +11399,25 @@ max_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
11089
11399
|
(void) v;
|
|
11090
11400
|
}
|
|
11091
11401
|
}
|
|
11402
|
+
{
|
|
11403
|
+
int __li_susp = 0;
|
|
11404
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11405
|
+
if ( __li_buf_acc[__j] == (float) (-INFINITY) ) { __li_susp = 1; break; }
|
|
11406
|
+
}
|
|
11407
|
+
if ( __li_susp ) {
|
|
11408
|
+
int8_t __li_buf_seen[512];
|
|
11409
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
11410
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
11411
|
+
const float *__li_row = __li_plane + __li_i * __li_M_stride + __li_tile;
|
|
11412
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11413
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
11414
|
+
}
|
|
11415
|
+
}
|
|
11416
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11417
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (float) NAN;
|
|
11418
|
+
}
|
|
11419
|
+
}
|
|
11420
|
+
}
|
|
11092
11421
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11093
11422
|
__li_op_k[__li_tile + __j] = (float) (__li_buf_acc[__j]);
|
|
11094
11423
|
}
|
|
@@ -11126,6 +11455,16 @@ ca_size_t out_i = 0;
|
|
|
11126
11455
|
#define __max_f32_EXPR(__x) ((float)(__x))
|
|
11127
11456
|
CA_SLAB_REDUCE_MAX8_EX(float, float, st, p, m, acc, -INFINITY, __max_f32_EXPR, masked_cnt);
|
|
11128
11457
|
#undef __max_f32_EXPR
|
|
11458
|
+
/* all-NaN fix-up (all_nan_result: :nan). */
|
|
11459
|
+
if ( (acc == (-INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
11460
|
+
int64_t __anf_seen = 0;
|
|
11461
|
+
ca_size_t __anf_mc = 0;
|
|
11462
|
+
CA_SLAB_REDUCE_T_EX(float, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
11463
|
+
(void) __anf_mc;
|
|
11464
|
+
if ( ! __anf_seen ) {
|
|
11465
|
+
acc = (float) NAN;
|
|
11466
|
+
}
|
|
11467
|
+
}
|
|
11129
11468
|
if ( (min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count) ) {
|
|
11130
11469
|
if ( ! op_mask ) {
|
|
11131
11470
|
ca_create_mask(co);
|
|
@@ -11172,6 +11511,7 @@ max_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
11172
11511
|
ca_size_t __outer_off = 0;
|
|
11173
11512
|
double acc;
|
|
11174
11513
|
acc = (-INFINITY);
|
|
11514
|
+
int64_t __anf_seen = 0;
|
|
11175
11515
|
ca_size_t masked_cnt = 0; /* unused on streaming (no mask) */
|
|
11176
11516
|
(void) masked_cnt;
|
|
11177
11517
|
ca_lazy_arena_enter();
|
|
@@ -11186,11 +11526,13 @@ max_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
11186
11526
|
for ( __i = 0; __i < __n; __i++ ) {
|
|
11187
11527
|
double v = __chunk[__i];
|
|
11188
11528
|
acc = (v > acc) ? v : acc;
|
|
11529
|
+
__anf_seen |= (v == v);
|
|
11189
11530
|
}
|
|
11190
11531
|
__outer_off += __r;
|
|
11191
11532
|
}
|
|
11192
11533
|
ca_lazy_arena_release(__chunk);
|
|
11193
11534
|
ca_lazy_arena_exit();
|
|
11535
|
+
if ( ! __anf_seen && ca->elements > 0 ) acc = (double) NAN;
|
|
11194
11536
|
return rb_float_new((double) (acc));
|
|
11195
11537
|
}
|
|
11196
11538
|
/* L.1 / L.7: loop-interchange fast path with inner-tiling
|
|
@@ -11244,6 +11586,25 @@ max_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
11244
11586
|
(void) v;
|
|
11245
11587
|
}
|
|
11246
11588
|
}
|
|
11589
|
+
{
|
|
11590
|
+
int __li_susp = 0;
|
|
11591
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11592
|
+
if ( __li_buf_acc[__j] == (double) (-INFINITY) ) { __li_susp = 1; break; }
|
|
11593
|
+
}
|
|
11594
|
+
if ( __li_susp ) {
|
|
11595
|
+
int8_t __li_buf_seen[512];
|
|
11596
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
11597
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
11598
|
+
const double *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
11599
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11600
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
11601
|
+
}
|
|
11602
|
+
}
|
|
11603
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11604
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (double) NAN;
|
|
11605
|
+
}
|
|
11606
|
+
}
|
|
11607
|
+
}
|
|
11247
11608
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11248
11609
|
op[__li_o * __li_INNER + __li_tile + __j] = (double) (__li_buf_acc[__j]);
|
|
11249
11610
|
}
|
|
@@ -11323,6 +11684,25 @@ max_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
11323
11684
|
(void) v;
|
|
11324
11685
|
}
|
|
11325
11686
|
}
|
|
11687
|
+
{
|
|
11688
|
+
int __li_susp = 0;
|
|
11689
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11690
|
+
if ( __li_buf_acc[__j] == (double) (-INFINITY) ) { __li_susp = 1; break; }
|
|
11691
|
+
}
|
|
11692
|
+
if ( __li_susp ) {
|
|
11693
|
+
int8_t __li_buf_seen[512];
|
|
11694
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
11695
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
11696
|
+
const double *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
11697
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11698
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
11699
|
+
}
|
|
11700
|
+
}
|
|
11701
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11702
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (double) NAN;
|
|
11703
|
+
}
|
|
11704
|
+
}
|
|
11705
|
+
}
|
|
11326
11706
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11327
11707
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (double) (__li_buf_acc[__j]);
|
|
11328
11708
|
}
|
|
@@ -11448,6 +11828,25 @@ max_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
11448
11828
|
(void) v;
|
|
11449
11829
|
}
|
|
11450
11830
|
}
|
|
11831
|
+
{
|
|
11832
|
+
int __li_susp = 0;
|
|
11833
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11834
|
+
if ( __li_buf_acc[__j] == (double) (-INFINITY) ) { __li_susp = 1; break; }
|
|
11835
|
+
}
|
|
11836
|
+
if ( __li_susp ) {
|
|
11837
|
+
int8_t __li_buf_seen[512];
|
|
11838
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
11839
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
11840
|
+
const double *__li_row = __li_plane + __li_i * __li_INNER + __li_tile;
|
|
11841
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11842
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
11843
|
+
}
|
|
11844
|
+
}
|
|
11845
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11846
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (double) NAN;
|
|
11847
|
+
}
|
|
11848
|
+
}
|
|
11849
|
+
}
|
|
11451
11850
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11452
11851
|
__li_op_k[__li_tile + __j] = (double) (__li_buf_acc[__j]);
|
|
11453
11852
|
}
|
|
@@ -11608,6 +12007,25 @@ max_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
11608
12007
|
(void) v;
|
|
11609
12008
|
}
|
|
11610
12009
|
}
|
|
12010
|
+
{
|
|
12011
|
+
int __li_susp = 0;
|
|
12012
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
12013
|
+
if ( __li_buf_acc[__j] == (double) (-INFINITY) ) { __li_susp = 1; break; }
|
|
12014
|
+
}
|
|
12015
|
+
if ( __li_susp ) {
|
|
12016
|
+
int8_t __li_buf_seen[512];
|
|
12017
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) __li_buf_seen[__j] = 0;
|
|
12018
|
+
for ( ca_size_t __li_i = 0; __li_i < __li_M; __li_i++ ) {
|
|
12019
|
+
const double *__li_row = __li_plane + __li_i * __li_M_stride + __li_tile;
|
|
12020
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
12021
|
+
__li_buf_seen[__j] |= (__li_row[__j] == __li_row[__j]);
|
|
12022
|
+
}
|
|
12023
|
+
}
|
|
12024
|
+
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
12025
|
+
if ( ! __li_buf_seen[__j] ) __li_buf_acc[__j] = (double) NAN;
|
|
12026
|
+
}
|
|
12027
|
+
}
|
|
12028
|
+
}
|
|
11611
12029
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11612
12030
|
__li_op_k[__li_tile + __j] = (double) (__li_buf_acc[__j]);
|
|
11613
12031
|
}
|
|
@@ -11645,6 +12063,16 @@ ca_size_t out_i = 0;
|
|
|
11645
12063
|
#define __max_f64_EXPR(__x) ((double)(__x))
|
|
11646
12064
|
CA_SLAB_REDUCE_MAX8_EX(double, double, st, p, m, acc, -INFINITY, __max_f64_EXPR, masked_cnt);
|
|
11647
12065
|
#undef __max_f64_EXPR
|
|
12066
|
+
/* all-NaN fix-up (all_nan_result: :nan). */
|
|
12067
|
+
if ( (acc == (-INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
12068
|
+
int64_t __anf_seen = 0;
|
|
12069
|
+
ca_size_t __anf_mc = 0;
|
|
12070
|
+
CA_SLAB_REDUCE_T_EX(double, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
12071
|
+
(void) __anf_mc;
|
|
12072
|
+
if ( ! __anf_seen ) {
|
|
12073
|
+
acc = (double) NAN;
|
|
12074
|
+
}
|
|
12075
|
+
}
|
|
11648
12076
|
if ( (min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count) ) {
|
|
11649
12077
|
if ( ! op_mask ) {
|
|
11650
12078
|
ca_create_mask(co);
|
|
@@ -11763,6 +12191,7 @@ max_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
11763
12191
|
(void) v;
|
|
11764
12192
|
}
|
|
11765
12193
|
}
|
|
12194
|
+
|
|
11766
12195
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11767
12196
|
op[__li_o * __li_INNER + __li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
11768
12197
|
}
|
|
@@ -11842,6 +12271,7 @@ max_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
11842
12271
|
(void) v;
|
|
11843
12272
|
}
|
|
11844
12273
|
}
|
|
12274
|
+
|
|
11845
12275
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11846
12276
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
11847
12277
|
}
|
|
@@ -11967,6 +12397,7 @@ max_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
11967
12397
|
(void) v;
|
|
11968
12398
|
}
|
|
11969
12399
|
}
|
|
12400
|
+
|
|
11970
12401
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
11971
12402
|
__li_op_k[__li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
11972
12403
|
}
|
|
@@ -12127,6 +12558,7 @@ max_ki_native_bool (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, int
|
|
|
12127
12558
|
(void) v;
|
|
12128
12559
|
}
|
|
12129
12560
|
}
|
|
12561
|
+
|
|
12130
12562
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
12131
12563
|
__li_op_k[__li_tile + __j] = (uint64_t) (__li_buf_acc[__j]);
|
|
12132
12564
|
}
|
|
@@ -12282,6 +12714,7 @@ max_ki_native_object (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
|
|
|
12282
12714
|
(void) v;
|
|
12283
12715
|
}
|
|
12284
12716
|
}
|
|
12717
|
+
|
|
12285
12718
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
12286
12719
|
op[__li_o * __li_INNER + __li_tile + __j] = (VALUE) (__li_buf_acc[__j]);
|
|
12287
12720
|
}
|
|
@@ -12361,6 +12794,7 @@ max_ki_native_object (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
|
|
|
12361
12794
|
(void) v;
|
|
12362
12795
|
}
|
|
12363
12796
|
}
|
|
12797
|
+
|
|
12364
12798
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
12365
12799
|
__li_op_k[__li_o * __li_INNER + __li_tile + __j] = (VALUE) (__li_buf_acc[__j]);
|
|
12366
12800
|
}
|
|
@@ -12486,6 +12920,7 @@ max_ki_native_object (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
|
|
|
12486
12920
|
(void) v;
|
|
12487
12921
|
}
|
|
12488
12922
|
}
|
|
12923
|
+
|
|
12489
12924
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
12490
12925
|
__li_op_k[__li_tile + __j] = (VALUE) (__li_buf_acc[__j]);
|
|
12491
12926
|
}
|
|
@@ -12646,6 +13081,7 @@ max_ki_native_object (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
|
|
|
12646
13081
|
(void) v;
|
|
12647
13082
|
}
|
|
12648
13083
|
}
|
|
13084
|
+
|
|
12649
13085
|
for ( ca_size_t __j = 0; __j < __li_tile_len; __j++ ) {
|
|
12650
13086
|
__li_op_k[__li_tile + __j] = (VALUE) (__li_buf_acc[__j]);
|
|
12651
13087
|
}
|
|
@@ -13377,6 +13813,17 @@ minmax_ki_native_f32 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
|
|
|
13377
13813
|
float hi = -INFINITY;
|
|
13378
13814
|
ca_size_t masked_cnt = 0;
|
|
13379
13815
|
CA_SLAB_REDUCE_T_EX(float, st, p, m, lo, INFINITY, if (v < lo) lo = v; if (v > hi) hi = v;, masked_cnt);
|
|
13816
|
+
/* all-NaN fix-up (all_nan_result: :nan). */
|
|
13817
|
+
if ( (lo == (INFINITY) && hi == (-INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
13818
|
+
int64_t __anf_seen = 0;
|
|
13819
|
+
ca_size_t __anf_mc = 0;
|
|
13820
|
+
CA_SLAB_REDUCE_T_EX(float, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
13821
|
+
(void) __anf_mc;
|
|
13822
|
+
if ( ! __anf_seen ) {
|
|
13823
|
+
lo = (float) NAN;
|
|
13824
|
+
hi = (float) NAN;
|
|
13825
|
+
}
|
|
13826
|
+
}
|
|
13380
13827
|
if ( (min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count) ) {
|
|
13381
13828
|
if ( ! op_mask_a ) {
|
|
13382
13829
|
ca_create_mask(co_a);
|
|
@@ -13432,6 +13879,17 @@ minmax_ki_native_f64 (VALUE self, CArray *ca, int8_t *slab_axes, int8_t naxes, i
|
|
|
13432
13879
|
double hi = -INFINITY;
|
|
13433
13880
|
ca_size_t masked_cnt = 0;
|
|
13434
13881
|
CA_SLAB_REDUCE_T_EX(double, st, p, m, lo, INFINITY, if (v < lo) lo = v; if (v > hi) hi = v;, masked_cnt);
|
|
13882
|
+
/* all-NaN fix-up (all_nan_result: :nan). */
|
|
13883
|
+
if ( (lo == (INFINITY) && hi == (-INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
13884
|
+
int64_t __anf_seen = 0;
|
|
13885
|
+
ca_size_t __anf_mc = 0;
|
|
13886
|
+
CA_SLAB_REDUCE_T_EX(double, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
13887
|
+
(void) __anf_mc;
|
|
13888
|
+
if ( ! __anf_seen ) {
|
|
13889
|
+
lo = (double) NAN;
|
|
13890
|
+
hi = (double) NAN;
|
|
13891
|
+
}
|
|
13892
|
+
}
|
|
13435
13893
|
if ( (min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count) ) {
|
|
13436
13894
|
if ( ! op_mask_a ) {
|
|
13437
13895
|
ca_create_mask(co_a);
|
|
@@ -14021,7 +14479,18 @@ ca_size_t out_i = 0;
|
|
|
14021
14479
|
int64_t best_i = 0;
|
|
14022
14480
|
ca_size_t masked_cnt = 0;
|
|
14023
14481
|
CA_SLAB_REDUCE_T_EX(float, st, p, m, best_v, INFINITY, if (v < best_v) { best_v = v; best_i = idx; }, masked_cnt);
|
|
14024
|
-
|
|
14482
|
+
int __anf_all_nan = 0;
|
|
14483
|
+
/* all-NaN fix-up (all_nan_result: :undef). */
|
|
14484
|
+
if ( (best_v == (INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
14485
|
+
int64_t __anf_seen = 0;
|
|
14486
|
+
ca_size_t __anf_mc = 0;
|
|
14487
|
+
CA_SLAB_REDUCE_T_EX(float, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
14488
|
+
(void) __anf_mc;
|
|
14489
|
+
if ( ! __anf_seen ) {
|
|
14490
|
+
__anf_all_nan = 1;
|
|
14491
|
+
}
|
|
14492
|
+
}
|
|
14493
|
+
if ( ((min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count)) || __anf_all_nan ) {
|
|
14025
14494
|
if ( ! op_mask ) {
|
|
14026
14495
|
ca_create_mask(co);
|
|
14027
14496
|
op_mask = (boolean8_t *) co->mask->ptr;
|
|
@@ -14063,7 +14532,18 @@ ca_size_t out_i = 0;
|
|
|
14063
14532
|
int64_t best_i = 0;
|
|
14064
14533
|
ca_size_t masked_cnt = 0;
|
|
14065
14534
|
CA_SLAB_REDUCE_T_EX(double, st, p, m, best_v, INFINITY, if (v < best_v) { best_v = v; best_i = idx; }, masked_cnt);
|
|
14066
|
-
|
|
14535
|
+
int __anf_all_nan = 0;
|
|
14536
|
+
/* all-NaN fix-up (all_nan_result: :undef). */
|
|
14537
|
+
if ( (best_v == (INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
14538
|
+
int64_t __anf_seen = 0;
|
|
14539
|
+
ca_size_t __anf_mc = 0;
|
|
14540
|
+
CA_SLAB_REDUCE_T_EX(double, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
14541
|
+
(void) __anf_mc;
|
|
14542
|
+
if ( ! __anf_seen ) {
|
|
14543
|
+
__anf_all_nan = 1;
|
|
14544
|
+
}
|
|
14545
|
+
}
|
|
14546
|
+
if ( ((min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count)) || __anf_all_nan ) {
|
|
14067
14547
|
if ( ! op_mask ) {
|
|
14068
14548
|
ca_create_mask(co);
|
|
14069
14549
|
op_mask = (boolean8_t *) co->mask->ptr;
|
|
@@ -14708,7 +15188,18 @@ ca_size_t out_i = 0;
|
|
|
14708
15188
|
int64_t best_i = 0;
|
|
14709
15189
|
ca_size_t masked_cnt = 0;
|
|
14710
15190
|
CA_SLAB_REDUCE_T_EX(float, st, p, m, best_v, -INFINITY, if (v > best_v) { best_v = v; best_i = idx; }, masked_cnt);
|
|
14711
|
-
|
|
15191
|
+
int __anf_all_nan = 0;
|
|
15192
|
+
/* all-NaN fix-up (all_nan_result: :undef). */
|
|
15193
|
+
if ( (best_v == (-INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
15194
|
+
int64_t __anf_seen = 0;
|
|
15195
|
+
ca_size_t __anf_mc = 0;
|
|
15196
|
+
CA_SLAB_REDUCE_T_EX(float, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
15197
|
+
(void) __anf_mc;
|
|
15198
|
+
if ( ! __anf_seen ) {
|
|
15199
|
+
__anf_all_nan = 1;
|
|
15200
|
+
}
|
|
15201
|
+
}
|
|
15202
|
+
if ( ((min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count)) || __anf_all_nan ) {
|
|
14712
15203
|
if ( ! op_mask ) {
|
|
14713
15204
|
ca_create_mask(co);
|
|
14714
15205
|
op_mask = (boolean8_t *) co->mask->ptr;
|
|
@@ -14750,7 +15241,18 @@ ca_size_t out_i = 0;
|
|
|
14750
15241
|
int64_t best_i = 0;
|
|
14751
15242
|
ca_size_t masked_cnt = 0;
|
|
14752
15243
|
CA_SLAB_REDUCE_T_EX(double, st, p, m, best_v, -INFINITY, if (v > best_v) { best_v = v; best_i = idx; }, masked_cnt);
|
|
14753
|
-
|
|
15244
|
+
int __anf_all_nan = 0;
|
|
15245
|
+
/* all-NaN fix-up (all_nan_result: :undef). */
|
|
15246
|
+
if ( (best_v == (-INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
15247
|
+
int64_t __anf_seen = 0;
|
|
15248
|
+
ca_size_t __anf_mc = 0;
|
|
15249
|
+
CA_SLAB_REDUCE_T_EX(double, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
15250
|
+
(void) __anf_mc;
|
|
15251
|
+
if ( ! __anf_seen ) {
|
|
15252
|
+
__anf_all_nan = 1;
|
|
15253
|
+
}
|
|
15254
|
+
}
|
|
15255
|
+
if ( ((min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count)) || __anf_all_nan ) {
|
|
14754
15256
|
if ( ! op_mask ) {
|
|
14755
15257
|
ca_create_mask(co);
|
|
14756
15258
|
op_mask = (boolean8_t *) co->mask->ptr;
|
|
@@ -15641,7 +16143,18 @@ ca_size_t out_i = 0;
|
|
|
15641
16143
|
int64_t best_i = 0;
|
|
15642
16144
|
ca_size_t masked_cnt = 0;
|
|
15643
16145
|
CA_SLAB_REDUCE_T_EX(float, st, p, m, best_v, INFINITY, if (v < best_v) { best_v = v; best_i = idx; }, masked_cnt);
|
|
15644
|
-
|
|
16146
|
+
int __anf_all_nan = 0;
|
|
16147
|
+
/* all-NaN fix-up (all_nan_result: :undef). */
|
|
16148
|
+
if ( (best_v == (INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
16149
|
+
int64_t __anf_seen = 0;
|
|
16150
|
+
ca_size_t __anf_mc = 0;
|
|
16151
|
+
CA_SLAB_REDUCE_T_EX(float, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
16152
|
+
(void) __anf_mc;
|
|
16153
|
+
if ( ! __anf_seen ) {
|
|
16154
|
+
__anf_all_nan = 1;
|
|
16155
|
+
}
|
|
16156
|
+
}
|
|
16157
|
+
if ( ((min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count)) || __anf_all_nan ) {
|
|
15645
16158
|
if ( ! op_mask ) {
|
|
15646
16159
|
ca_create_mask(co);
|
|
15647
16160
|
op_mask = (boolean8_t *) co->mask->ptr;
|
|
@@ -15711,7 +16224,18 @@ ca_size_t out_i = 0;
|
|
|
15711
16224
|
int64_t best_i = 0;
|
|
15712
16225
|
ca_size_t masked_cnt = 0;
|
|
15713
16226
|
CA_SLAB_REDUCE_T_EX(double, st, p, m, best_v, INFINITY, if (v < best_v) { best_v = v; best_i = idx; }, masked_cnt);
|
|
15714
|
-
|
|
16227
|
+
int __anf_all_nan = 0;
|
|
16228
|
+
/* all-NaN fix-up (all_nan_result: :undef). */
|
|
16229
|
+
if ( (best_v == (INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
16230
|
+
int64_t __anf_seen = 0;
|
|
16231
|
+
ca_size_t __anf_mc = 0;
|
|
16232
|
+
CA_SLAB_REDUCE_T_EX(double, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
16233
|
+
(void) __anf_mc;
|
|
16234
|
+
if ( ! __anf_seen ) {
|
|
16235
|
+
__anf_all_nan = 1;
|
|
16236
|
+
}
|
|
16237
|
+
}
|
|
16238
|
+
if ( ((min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count)) || __anf_all_nan ) {
|
|
15715
16239
|
if ( ! op_mask ) {
|
|
15716
16240
|
ca_create_mask(co);
|
|
15717
16241
|
op_mask = (boolean8_t *) co->mask->ptr;
|
|
@@ -16588,7 +17112,18 @@ ca_size_t out_i = 0;
|
|
|
16588
17112
|
int64_t best_i = 0;
|
|
16589
17113
|
ca_size_t masked_cnt = 0;
|
|
16590
17114
|
CA_SLAB_REDUCE_T_EX(float, st, p, m, best_v, -INFINITY, if (v > best_v) { best_v = v; best_i = idx; }, masked_cnt);
|
|
16591
|
-
|
|
17115
|
+
int __anf_all_nan = 0;
|
|
17116
|
+
/* all-NaN fix-up (all_nan_result: :undef). */
|
|
17117
|
+
if ( (best_v == (-INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
17118
|
+
int64_t __anf_seen = 0;
|
|
17119
|
+
ca_size_t __anf_mc = 0;
|
|
17120
|
+
CA_SLAB_REDUCE_T_EX(float, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
17121
|
+
(void) __anf_mc;
|
|
17122
|
+
if ( ! __anf_seen ) {
|
|
17123
|
+
__anf_all_nan = 1;
|
|
17124
|
+
}
|
|
17125
|
+
}
|
|
17126
|
+
if ( ((min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count)) || __anf_all_nan ) {
|
|
16592
17127
|
if ( ! op_mask ) {
|
|
16593
17128
|
ca_create_mask(co);
|
|
16594
17129
|
op_mask = (boolean8_t *) co->mask->ptr;
|
|
@@ -16658,7 +17193,18 @@ ca_size_t out_i = 0;
|
|
|
16658
17193
|
int64_t best_i = 0;
|
|
16659
17194
|
ca_size_t masked_cnt = 0;
|
|
16660
17195
|
CA_SLAB_REDUCE_T_EX(double, st, p, m, best_v, -INFINITY, if (v > best_v) { best_v = v; best_i = idx; }, masked_cnt);
|
|
16661
|
-
|
|
17196
|
+
int __anf_all_nan = 0;
|
|
17197
|
+
/* all-NaN fix-up (all_nan_result: :undef). */
|
|
17198
|
+
if ( (best_v == (-INFINITY)) && masked_cnt < st.slab_elements ) {
|
|
17199
|
+
int64_t __anf_seen = 0;
|
|
17200
|
+
ca_size_t __anf_mc = 0;
|
|
17201
|
+
CA_SLAB_REDUCE_T_EX(double, st, p, m, __anf_seen, 0, __anf_seen |= (v == v), __anf_mc);
|
|
17202
|
+
(void) __anf_mc;
|
|
17203
|
+
if ( ! __anf_seen ) {
|
|
17204
|
+
__anf_all_nan = 1;
|
|
17205
|
+
}
|
|
17206
|
+
}
|
|
17207
|
+
if ( ((min_count < 0 ? masked_cnt == st.slab_elements : st.slab_elements - masked_cnt < min_count)) || __anf_all_nan ) {
|
|
16662
17208
|
if ( ! op_mask ) {
|
|
16663
17209
|
ca_create_mask(co);
|
|
16664
17210
|
op_mask = (boolean8_t *) co->mask->ptr;
|