@@ -355,6 +355,9 @@ SYCL_ACCESSOR_SUBCLASS(accessor_common, accessor_base, true /* always */) {
355
355
template <int Dimensions = dimensions>
356
356
typename std::enable_if<(Dimensions > 0 ), id<Dimensions>>::type
357
357
get_offset () const { return this ->__impl ()->Offset ; }
358
+
359
+ friend class ::cl::sycl::simple_scheduler::Node;
360
+ friend class ::cl::sycl::simple_scheduler::Scheduler;
358
361
};
359
362
360
363
SYCL_ACCESSOR_SUBCLASS (accessor_opdata_w, accessor_common,
@@ -366,6 +369,8 @@ SYCL_ACCESSOR_SUBCLASS(accessor_opdata_w, accessor_common,
366
369
operator dataT &() const {
367
370
return this ->__impl ()->Data [0 ];
368
371
}
372
+ friend class ::cl::sycl::simple_scheduler::Node;
373
+ friend class ::cl::sycl::simple_scheduler::Scheduler;
369
374
};
370
375
371
376
SYCL_ACCESSOR_SUBCLASS (accessor_subscript_wn, accessor_opdata_w,
@@ -387,6 +392,8 @@ SYCL_ACCESSOR_SUBCLASS(accessor_subscript_wn, accessor_opdata_w,
387
392
return subscript_obj<dimensions, dataT, dimensions - 1 , accessMode,
388
393
accessTarget, isPlaceholder>(*this , ids);
389
394
}
395
+ friend class ::cl::sycl::simple_scheduler::Node;
396
+ friend class ::cl::sycl::simple_scheduler::Scheduler;
390
397
};
391
398
392
399
SYCL_ACCESSOR_SUBCLASS (accessor_subscript_w, accessor_subscript_wn,
@@ -408,6 +415,8 @@ SYCL_ACCESSOR_SUBCLASS(accessor_subscript_w, accessor_subscript_wn,
408
415
dataT &operator [](size_t index) const {
409
416
return this ->__impl ()->Data [index];
410
417
}
418
+ friend class ::cl::sycl::simple_scheduler::Node;
419
+ friend class ::cl::sycl::simple_scheduler::Scheduler;
411
420
};
412
421
413
422
SYCL_ACCESSOR_SUBCLASS (accessor_opdata_r, accessor_subscript_w,
@@ -416,6 +425,8 @@ SYCL_ACCESSOR_SUBCLASS(accessor_opdata_r, accessor_subscript_w,
416
425
operator PureType () const {
417
426
return this ->__impl ()->Data [0 ];
418
427
}
428
+ friend class ::cl::sycl::simple_scheduler::Node;
429
+ friend class ::cl::sycl::simple_scheduler::Scheduler;
419
430
};
420
431
421
432
SYCL_ACCESSOR_SUBCLASS (accessor_subscript_rn, accessor_opdata_r,
@@ -434,6 +445,8 @@ SYCL_ACCESSOR_SUBCLASS(accessor_subscript_rn, accessor_opdata_r,
434
445
return subscript_obj<dimensions, dataT, dimensions - 1 , accessMode,
435
446
accessTarget, isPlaceholder>(*this , ids);
436
447
}
448
+ friend class ::cl::sycl::simple_scheduler::Node;
449
+ friend class ::cl::sycl::simple_scheduler::Scheduler;
437
450
};
438
451
439
452
SYCL_ACCESSOR_SUBCLASS (accessor_subscript_r, accessor_subscript_rn,
@@ -447,6 +460,8 @@ SYCL_ACCESSOR_SUBCLASS(accessor_subscript_r, accessor_subscript_rn,
447
460
operator [](size_t index) const {
448
461
return this ->__impl ()->Data [index];
449
462
}
463
+ friend class ::cl::sycl::simple_scheduler::Node;
464
+ friend class ::cl::sycl::simple_scheduler::Scheduler;
450
465
};
451
466
452
467
template <access::target accessTarget> struct getAddressSpace {
@@ -469,6 +484,8 @@ SYCL_ACCESSOR_SUBCLASS(accessor_subscript_atomic_eq0, accessor_subscript_r,
469
484
return atomic<PureType, addressSpace>(
470
485
multi_ptr<PureType, addressSpace>(&(this ->__impl ()->Data [0 ])));
471
486
}
487
+ friend class ::cl::sycl::simple_scheduler::Node;
488
+ friend class ::cl::sycl::simple_scheduler::Scheduler;
472
489
};
473
490
474
491
// Available when: accessMode == access::mode::atomic && dimensions > 0
@@ -483,6 +500,8 @@ SYCL_ACCESSOR_SUBCLASS(accessor_subscript_atomic_gt0,
483
500
multi_ptr<PureType, addressSpace>(&(this ->__impl ()->Data [getOffsetForId (
484
501
this ->__impl ()->Range , index, this ->__impl ()->Offset )])));
485
502
}
503
+ friend class ::cl::sycl::simple_scheduler::Node;
504
+ friend class ::cl::sycl::simple_scheduler::Scheduler;
486
505
};
487
506
488
507
// Available only when: accessMode == access::mode::atomic && dimensions == 1
@@ -496,6 +515,8 @@ SYCL_ACCESSOR_SUBCLASS(accessor_subscript_atomic_eq1,
496
515
return atomic<PureType, addressSpace>(
497
516
multi_ptr<PureType, addressSpace>(&(this ->__impl ()->Data [index])));
498
517
}
518
+ friend class ::cl::sycl::simple_scheduler::Node;
519
+ friend class ::cl::sycl::simple_scheduler::Scheduler;
499
520
};
500
521
501
522
// TODO:
@@ -535,6 +556,8 @@ SYCL_ACCESSOR_SUBCLASS(accessor_pointer, accessor_subscript_atomic_eq1, true) {
535
556
get_pointer () const {
536
557
return local_ptr<DataT>(this ->__impl ()->Data );
537
558
}
559
+ friend class ::cl::sycl::simple_scheduler::Node;
560
+ friend class ::cl::sycl::simple_scheduler::Scheduler;
538
561
};
539
562
540
563
} // namespace detail
@@ -557,13 +580,13 @@ class accessor
557
580
// Make sure Impl field is the first in the class, so that it is
558
581
// safe to reinterpret a pointer to accessor as a pointer to the
559
582
// implementation.
560
- _ImplT __impl ;
583
+ _ImplT __implx ;
561
584
562
585
void __init (_ValueType *Ptr, range<dimensions> Range,
563
586
id<dimensions> Offset) {
564
- __impl .Data = Ptr;
565
- __impl .Range = Range;
566
- __impl .Offset = Offset;
587
+ __implx .Data = Ptr;
588
+ __implx .Range = Range;
589
+ __implx .Offset = Offset;
567
590
}
568
591
569
592
public:
@@ -593,7 +616,7 @@ class accessor
593
616
AccessTarget == access::target::constant_buffer))) &&
594
617
Dimensions == 0 ),
595
618
buffer<DataT, 1 >>::type &bufferRef)
596
- : __impl (detail::getSyclObjImpl(bufferRef)->BufPtr) {
619
+ : __implx (detail::getSyclObjImpl(bufferRef)->BufPtr) {
597
620
auto BufImpl = detail::getSyclObjImpl (bufferRef);
598
621
if (AccessTarget == access::target::host_buffer) {
599
622
if (BufImpl->OpenCLInterop ) {
@@ -633,7 +656,7 @@ class accessor
633
656
#ifdef __SYCL_DEVICE_ONLY__
634
657
; // This ctor can't be used in device code, so no need to define it.
635
658
#else // !__SYCL_DEVICE_ONLY__
636
- : __impl (detail::getSyclObjImpl(bufferRef)->BufPtr,
659
+ : __implx (detail::getSyclObjImpl(bufferRef)->BufPtr,
637
660
detail::getSyclObjImpl (bufferRef)->Range,
638
661
&commandGroupHandlerRef) {
639
662
auto BufImpl = detail::getSyclObjImpl (bufferRef);
@@ -643,7 +666,7 @@ class accessor
643
666
" interoperability buffer" );
644
667
}
645
668
commandGroupHandlerRef.AddBufDep <AccessMode, AccessTarget>(*BufImpl);
646
- __impl .m_Buf = BufImpl.get ();
669
+ __implx .m_Buf = BufImpl.get ();
647
670
}
648
671
#endif // !__SYCL_DEVICE_ONLY__
649
672
@@ -669,7 +692,7 @@ class accessor
669
692
AccessTarget == access::target::constant_buffer))) &&
670
693
Dimensions > 0 ),
671
694
buffer<DataT, Dimensions>>::type &bufferRef)
672
- : __impl (detail::getSyclObjImpl(bufferRef)->BufPtr,
695
+ : __implx (detail::getSyclObjImpl(bufferRef)->BufPtr,
673
696
detail::getSyclObjImpl (bufferRef)->Range) {
674
697
auto BufImpl = detail::getSyclObjImpl (bufferRef);
675
698
if (AccessTarget == access::target::host_buffer) {
@@ -710,7 +733,7 @@ class accessor
710
733
#ifdef __SYCL_DEVICE_ONLY__
711
734
; // This ctor can't be used in device code, so no need to define it.
712
735
#else
713
- : __impl (detail::getSyclObjImpl(bufferRef)->BufPtr,
736
+ : __implx (detail::getSyclObjImpl(bufferRef)->BufPtr,
714
737
detail::getSyclObjImpl (bufferRef)->Range,
715
738
&commandGroupHandlerRef) {
716
739
auto BufImpl = detail::getSyclObjImpl (bufferRef);
@@ -720,7 +743,7 @@ class accessor
720
743
" interoperability buffer" );
721
744
}
722
745
commandGroupHandlerRef.AddBufDep <AccessMode, AccessTarget>(*BufImpl);
723
- __impl .m_Buf = BufImpl.get ();
746
+ __implx .m_Buf = BufImpl.get ();
724
747
}
725
748
#endif
726
749
@@ -752,7 +775,7 @@ class accessor
752
775
#ifdef __SYCL_DEVICE_ONLY__
753
776
; // This ctor can't be used in device code, so no need to define it.
754
777
#else // !__SYCL_DEVICE_ONLY__
755
- : __impl (detail::getSyclObjImpl(bufferRef)->BufPtr, Range, Offset) {
778
+ : __implx (detail::getSyclObjImpl(bufferRef)->BufPtr, Range, Offset) {
756
779
auto BufImpl = detail::getSyclObjImpl (bufferRef);
757
780
if (AccessTarget == access::target::host_buffer) {
758
781
if (BufImpl->OpenCLInterop ) {
@@ -796,7 +819,7 @@ class accessor
796
819
#ifdef __SYCL_DEVICE_ONLY__
797
820
; // This ctor can't be used in device code, so no need to define it.
798
821
#else // !__SYCL_DEVICE_ONLY__
799
- : __impl (detail::getSyclObjImpl(bufferRef)->BufPtr, Range,
822
+ : __implx (detail::getSyclObjImpl(bufferRef)->BufPtr, Range,
800
823
&commandGroupHandlerRef, Offset) {
801
824
auto BufImpl = detail::getSyclObjImpl (bufferRef);
802
825
if (BufImpl->OpenCLInterop && !BufImpl->isValidAccessToMem (accessMode)) {
@@ -805,7 +828,7 @@ class accessor
805
828
" interoperability buffer" );
806
829
}
807
830
commandGroupHandlerRef.AddBufDep <AccessMode, AccessTarget>(*BufImpl);
808
- __impl .m_Buf = BufImpl.get ();
831
+ __implx .m_Buf = BufImpl.get ();
809
832
}
810
833
#endif // !__SYCL_DEVICE_ONLY__
811
834
@@ -835,7 +858,7 @@ class accessor
835
858
Dimensions > 0 ),
836
859
range<Dimensions>>::type allocationSize,
837
860
handler &commandGroupHandlerRef)
838
- : __impl (allocationSize, &commandGroupHandlerRef) {}
861
+ : __implx (allocationSize, &commandGroupHandlerRef) {}
839
862
};
840
863
841
864
} // namespace sycl
0 commit comments