@@ -44,7 +44,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_4d_indices_no_axis_uint8)
44
44
auto P = make_shared<op::Parameter>(element::u8 , params_shape);
45
45
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
46
46
auto G = make_shared<op::Gather>(P, I);
47
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
47
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
48
48
49
49
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
50
50
@@ -77,7 +77,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_4d_indices_no_axis_2d_input)
77
77
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
78
78
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
79
79
auto G = make_shared<op::Gather>(P, I);
80
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
80
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
81
81
82
82
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
83
83
@@ -113,7 +113,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_3d_indices_no_axis_2d_input)
113
113
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
114
114
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
115
115
auto G = make_shared<op::Gather>(P, I);
116
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
116
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
117
117
118
118
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
119
119
@@ -144,7 +144,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_2d_indices_no_axis_2d_input)
144
144
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
145
145
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
146
146
auto G = make_shared<op::Gather>(P, I);
147
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
147
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
148
148
149
149
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
150
150
@@ -162,6 +162,32 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_2d_indices_no_axis_2d_input)
162
162
MIN_FLOAT_TOLERANCE_BITS));
163
163
}
164
164
165
+ NGRAPH_TEST (${BACKEND_NAME}, gather_2d_negative_and_positive_indices_no_axis_2d_input)
166
+ {
167
+ Shape params_shape{3 , 2 };
168
+ Shape indices_shape{2 , 2 };
169
+ Shape out_shape{2 , 2 , 2 };
170
+ auto P = make_shared<op::Parameter>(element::f32 , params_shape);
171
+ auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
172
+ auto G = make_shared<op::Gather>(P, I);
173
+ auto f = make_shared<Function>(G, ParameterVector{P, I});
174
+
175
+ auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
176
+
177
+ // Create some tensors for input/output
178
+ auto p = backend->create_tensor (element::f32 , params_shape);
179
+ copy_data (p, vector<float >{1 .0f , 1 .1f , 2 .0f , 2 .1f , 3 .0f , 3 .1f });
180
+ auto i = backend->create_tensor (element::i32 , indices_shape);
181
+ copy_data (i, vector<int32_t >{0 , -2 , 1 , 2 });
182
+ auto result = backend->create_tensor (element::f32 , out_shape);
183
+
184
+ auto c = backend->compile (f);
185
+ c->call_with_validate ({result}, {p, i});
186
+ EXPECT_TRUE (test::all_close_f ((vector<float >{1 .0f , 1 .1f , 2 .0f , 2 .1f , 2 .0f , 2 .1f , 3 .0f , 3 .1f }),
187
+ read_vector<float >(result),
188
+ MIN_FLOAT_TOLERANCE_BITS));
189
+ }
190
+
165
191
NGRAPH_TEST (${BACKEND_NAME}, gather_1d_indices_no_axis_1d_input)
166
192
{
167
193
Shape params_shape{3 };
@@ -170,7 +196,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_1d_indices_no_axis_1d_input)
170
196
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
171
197
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
172
198
auto G = make_shared<op::Gather>(P, I);
173
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
199
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
174
200
175
201
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
176
202
@@ -195,7 +221,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_scalar_indices_no_axis_2d_input)
195
221
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
196
222
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
197
223
auto G = make_shared<op::Gather>(P, I);
198
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
224
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
199
225
200
226
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
201
227
@@ -220,7 +246,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_2d_indices_axis_1_2d_input)
220
246
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
221
247
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
222
248
auto G = make_shared<op::Gather>(P, I, 1 );
223
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
249
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
224
250
225
251
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
226
252
@@ -246,7 +272,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_1d_indices_axis_2_4d_input)
246
272
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
247
273
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
248
274
auto G = make_shared<op::Gather>(P, I, 2 );
249
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
275
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
250
276
251
277
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
252
278
@@ -277,7 +303,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_scalar_indices_axis_1_2d_input)
277
303
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
278
304
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
279
305
auto G = make_shared<op::Gather>(P, I, 1 );
280
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
306
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
281
307
282
308
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
283
309
@@ -302,7 +328,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_nd_single_indices)
302
328
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
303
329
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
304
330
auto G = make_shared<op::GatherND>(P, I);
305
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
331
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
306
332
307
333
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
308
334
@@ -327,7 +353,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_nd_scalar_from_2d)
327
353
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
328
354
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
329
355
auto G = make_shared<op::GatherND>(P, I);
330
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
356
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
331
357
332
358
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
333
359
@@ -352,7 +378,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_nd_1d_from_2d)
352
378
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
353
379
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
354
380
auto G = make_shared<op::GatherND>(P, I);
355
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
381
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
356
382
357
383
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
358
384
@@ -378,7 +404,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_nd_scalar_from_3d)
378
404
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
379
405
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
380
406
auto G = make_shared<op::GatherND>(P, I);
381
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
407
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
382
408
383
409
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
384
410
@@ -403,7 +429,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_nd_1d_from_3d)
403
429
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
404
430
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
405
431
auto G = make_shared<op::GatherND>(P, I);
406
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
432
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
407
433
408
434
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
409
435
@@ -429,7 +455,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_nd_2d_from_3d)
429
455
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
430
456
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
431
457
auto G = make_shared<op::GatherND>(P, I);
432
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
458
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
433
459
434
460
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
435
461
@@ -455,7 +481,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_nd_batch_scalar_from_2d)
455
481
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
456
482
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
457
483
auto G = make_shared<op::GatherND>(P, I);
458
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
484
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
459
485
460
486
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
461
487
@@ -480,7 +506,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_nd_batch_1d_from_2d)
480
506
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
481
507
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
482
508
auto G = make_shared<op::GatherND>(P, I);
483
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
509
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
484
510
485
511
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
486
512
@@ -506,7 +532,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_nd_batch_scalar_from_3d)
506
532
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
507
533
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
508
534
auto G = make_shared<op::GatherND>(P, I);
509
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
535
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
510
536
511
537
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
512
538
@@ -532,7 +558,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_nd_batch_1d_from_3d)
532
558
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
533
559
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
534
560
auto G = make_shared<op::GatherND>(P, I);
535
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
561
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
536
562
537
563
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
538
564
@@ -558,7 +584,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_nd_batch_2d_from_3d)
558
584
auto P = make_shared<op::Parameter>(element::f32 , params_shape);
559
585
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
560
586
auto G = make_shared<op::GatherND>(P, I);
561
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
587
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
562
588
563
589
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
564
590
@@ -584,7 +610,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_no_axis_int8)
584
610
auto P = make_shared<op::Parameter>(element::i8 , params_shape);
585
611
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
586
612
auto G = make_shared<op::Gather>(P, I);
587
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
613
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
588
614
589
615
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
590
616
@@ -610,7 +636,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_no_axis_int16)
610
636
auto P = make_shared<op::Parameter>(element::i16 , params_shape);
611
637
auto I = make_shared<op::Parameter>(element::i64 , indices_shape);
612
638
auto G = make_shared<op::Gather>(P, I);
613
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
639
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
614
640
615
641
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
616
642
@@ -636,7 +662,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_no_axis_int32)
636
662
auto P = make_shared<op::Parameter>(element::i32 , params_shape);
637
663
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
638
664
auto G = make_shared<op::Gather>(P, I);
639
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
665
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
640
666
641
667
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
642
668
@@ -662,7 +688,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_no_axis_int64)
662
688
auto P = make_shared<op::Parameter>(element::i64 , params_shape);
663
689
auto I = make_shared<op::Parameter>(element::i64 , indices_shape);
664
690
auto G = make_shared<op::Gather>(P, I);
665
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
691
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
666
692
667
693
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
668
694
@@ -688,7 +714,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_no_axis_uint8)
688
714
auto P = make_shared<op::Parameter>(element::u8 , params_shape);
689
715
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
690
716
auto G = make_shared<op::Gather>(P, I);
691
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
717
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
692
718
693
719
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
694
720
@@ -714,7 +740,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_no_axis_uint16)
714
740
auto P = make_shared<op::Parameter>(element::u16 , params_shape);
715
741
auto I = make_shared<op::Parameter>(element::i64 , indices_shape);
716
742
auto G = make_shared<op::Gather>(P, I);
717
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
743
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
718
744
719
745
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
720
746
@@ -740,7 +766,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_no_axis_uint32)
740
766
auto P = make_shared<op::Parameter>(element::u32 , params_shape);
741
767
auto I = make_shared<op::Parameter>(element::i32 , indices_shape);
742
768
auto G = make_shared<op::Gather>(P, I);
743
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
769
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
744
770
745
771
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
746
772
@@ -766,7 +792,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_no_axis_uint64)
766
792
auto P = make_shared<op::Parameter>(element::u64 , params_shape);
767
793
auto I = make_shared<op::Parameter>(element::i64 , indices_shape);
768
794
auto G = make_shared<op::Gather>(P, I);
769
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
795
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
770
796
771
797
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
772
798
@@ -792,7 +818,7 @@ NGRAPH_TEST(${BACKEND_NAME}, gather_no_axis_bool)
792
818
auto P = make_shared<op::Parameter>(element::boolean, params_shape);
793
819
auto I = make_shared<op::Parameter>(element::i64 , indices_shape);
794
820
auto G = make_shared<op::Gather>(P, I);
795
- auto f = make_shared<Function>(make_shared<op::GetOutputElement>(G, 0 ) , ParameterVector{P, I});
821
+ auto f = make_shared<Function>(G , ParameterVector{P, I});
796
822
797
823
auto backend = runtime::Backend::create (" ${BACKEND_NAME}" );
798
824
0 commit comments