@@ -325,8 +325,18 @@ class __SYCL_EXPORT handler {
325
325
return Storage;
326
326
}
327
327
328
+ void setType (detail::CG::CGTYPE Type) {
329
+ constexpr detail::CG::CG_VERSION Version = detail::CG::CG_VERSION::V1;
330
+ MCGType = static_cast <detail::CG::CGTYPE>(
331
+ getVersionedCGType (Type, static_cast <int >(Version)));
332
+ }
333
+
334
+ detail::CG::CGTYPE getType () {
335
+ return static_cast <detail::CG::CGTYPE>(getUnversionedCGType (MCGType));
336
+ }
337
+
328
338
void throwIfActionIsCreated () {
329
- if (detail::CG::NONE != MCGType )
339
+ if (detail::CG::NONE != getType () )
330
340
throw sycl::runtime_error (" Attempt to set multiple actions for the "
331
341
" command group. Command group must consist of "
332
342
" a single kernel or explicit memory operation." ,
@@ -822,7 +832,7 @@ class __SYCL_EXPORT handler {
822
832
MNDRDesc.set (std::move (AdjustedRange));
823
833
StoreLambda<NameWT, decltype (Wrapper), Dims, TransformedArgType>(
824
834
std::move (Wrapper));
825
- MCGType = detail::CG::KERNEL_V1 ;
835
+ setType ( detail::CG::KERNEL) ;
826
836
#endif
827
837
} else
828
838
#endif // !__SYCL_DISABLE_PARALLEL_FOR_RANGE_ROUNDING__ && \
@@ -837,7 +847,7 @@ class __SYCL_EXPORT handler {
837
847
MNDRDesc.set (std::move (NumWorkItems));
838
848
StoreLambda<NameT, KernelType, Dims, TransformedArgType>(
839
849
std::move (KernelFunc));
840
- MCGType = detail::CG::KERNEL_V1 ;
850
+ setType ( detail::CG::KERNEL) ;
841
851
#endif
842
852
}
843
853
}
@@ -856,7 +866,7 @@ class __SYCL_EXPORT handler {
856
866
MKernel = detail::getSyclObjImpl (std::move (Kernel));
857
867
detail::checkValueRange<Dims>(NumWorkItems);
858
868
MNDRDesc.set (std::move (NumWorkItems));
859
- MCGType = detail::CG::KERNEL_V1 ;
869
+ setType ( detail::CG::KERNEL) ;
860
870
extractArgsAndReqs ();
861
871
MKernelName = getKernelName ();
862
872
}
@@ -1173,7 +1183,7 @@ class __SYCL_EXPORT handler {
1173
1183
MNDRDesc.set (range<1 >{1 });
1174
1184
1175
1185
StoreLambda<NameT, KernelType, /* Dims*/ 0 , void >(KernelFunc);
1176
- MCGType = detail::CG::KERNEL_V1 ;
1186
+ setType ( detail::CG::KERNEL) ;
1177
1187
#endif
1178
1188
}
1179
1189
@@ -1217,7 +1227,7 @@ class __SYCL_EXPORT handler {
1217
1227
MArgs = std::move (MAssociatedAccesors);
1218
1228
MHostKernel.reset (
1219
1229
new detail::HostKernel<FuncT, void , 1 , void >(std::move (Func)));
1220
- MCGType = detail::CG::RUN_ON_HOST_INTEL;
1230
+ setType ( detail::CG::RUN_ON_HOST_INTEL) ;
1221
1231
}
1222
1232
1223
1233
template <typename FuncT>
@@ -1231,7 +1241,7 @@ class __SYCL_EXPORT handler {
1231
1241
1232
1242
MHostTask.reset (new detail::HostTask (std::move (Func)));
1233
1243
1234
- MCGType = detail::CG::CODEPLAY_HOST_TASK;
1244
+ setType ( detail::CG::CODEPLAY_HOST_TASK) ;
1235
1245
}
1236
1246
1237
1247
template <typename FuncT>
@@ -1245,7 +1255,7 @@ class __SYCL_EXPORT handler {
1245
1255
1246
1256
MHostTask.reset (new detail::HostTask (std::move (Func)));
1247
1257
1248
- MCGType = detail::CG::CODEPLAY_HOST_TASK;
1258
+ setType ( detail::CG::CODEPLAY_HOST_TASK) ;
1249
1259
}
1250
1260
1251
1261
// replace _KERNELFUNCPARAM(KernelFunc) with KernelType KernelFunc
@@ -1285,7 +1295,7 @@ class __SYCL_EXPORT handler {
1285
1295
detail::checkValueRange<Dims>(NumWorkItems, WorkItemOffset);
1286
1296
MNDRDesc.set (std::move (NumWorkItems), std::move (WorkItemOffset));
1287
1297
StoreLambda<NameT, KernelType, Dims, LambdaArgType>(std::move (KernelFunc));
1288
- MCGType = detail::CG::KERNEL_V1 ;
1298
+ setType ( detail::CG::KERNEL) ;
1289
1299
#endif
1290
1300
}
1291
1301
@@ -1317,7 +1327,7 @@ class __SYCL_EXPORT handler {
1317
1327
detail::checkValueRange<Dims>(ExecutionRange);
1318
1328
MNDRDesc.set (std::move (ExecutionRange));
1319
1329
StoreLambda<NameT, KernelType, Dims, LambdaArgType>(std::move (KernelFunc));
1320
- MCGType = detail::CG::KERNEL_V1 ;
1330
+ setType ( detail::CG::KERNEL) ;
1321
1331
#endif
1322
1332
}
1323
1333
@@ -1550,7 +1560,7 @@ class __SYCL_EXPORT handler {
1550
1560
detail::checkValueRange<Dims>(NumWorkGroups);
1551
1561
MNDRDesc.setNumWorkGroups (NumWorkGroups);
1552
1562
StoreLambda<NameT, KernelType, Dims, LambdaArgType>(std::move (KernelFunc));
1553
- MCGType = detail::CG::KERNEL_V1 ;
1563
+ setType ( detail::CG::KERNEL) ;
1554
1564
#endif // __SYCL_DEVICE_ONLY__
1555
1565
}
1556
1566
@@ -1586,7 +1596,7 @@ class __SYCL_EXPORT handler {
1586
1596
detail::checkValueRange<Dims>(ExecRange);
1587
1597
MNDRDesc.set (std::move (ExecRange));
1588
1598
StoreLambda<NameT, KernelType, Dims, LambdaArgType>(std::move (KernelFunc));
1589
- MCGType = detail::CG::KERNEL_V1 ;
1599
+ setType ( detail::CG::KERNEL) ;
1590
1600
#endif // __SYCL_DEVICE_ONLY__
1591
1601
}
1592
1602
@@ -1603,7 +1613,7 @@ class __SYCL_EXPORT handler {
1603
1613
// known constant
1604
1614
MNDRDesc.set (range<1 >{1 });
1605
1615
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1606
- MCGType = detail::CG::KERNEL_V1 ;
1616
+ setType ( detail::CG::KERNEL) ;
1607
1617
extractArgsAndReqs ();
1608
1618
MKernelName = getKernelName ();
1609
1619
}
@@ -1636,7 +1646,7 @@ class __SYCL_EXPORT handler {
1636
1646
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1637
1647
detail::checkValueRange<Dims>(NumWorkItems, WorkItemOffset);
1638
1648
MNDRDesc.set (std::move (NumWorkItems), std::move (WorkItemOffset));
1639
- MCGType = detail::CG::KERNEL_V1 ;
1649
+ setType ( detail::CG::KERNEL) ;
1640
1650
extractArgsAndReqs ();
1641
1651
MKernelName = getKernelName ();
1642
1652
}
@@ -1655,7 +1665,7 @@ class __SYCL_EXPORT handler {
1655
1665
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1656
1666
detail::checkValueRange<Dims>(NDRange);
1657
1667
MNDRDesc.set (std::move (NDRange));
1658
- MCGType = detail::CG::KERNEL_V1 ;
1668
+ setType ( detail::CG::KERNEL) ;
1659
1669
extractArgsAndReqs ();
1660
1670
MKernelName = getKernelName ();
1661
1671
}
@@ -1679,7 +1689,7 @@ class __SYCL_EXPORT handler {
1679
1689
// known constant
1680
1690
MNDRDesc.set (range<1 >{1 });
1681
1691
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1682
- MCGType = detail::CG::KERNEL_V1 ;
1692
+ setType ( detail::CG::KERNEL) ;
1683
1693
if (!MIsHost && !lambdaAndKernelHaveEqualName<NameT>()) {
1684
1694
extractArgsAndReqs ();
1685
1695
MKernelName = getKernelName ();
@@ -1694,7 +1704,7 @@ class __SYCL_EXPORT handler {
1694
1704
template <typename FuncT> void interop_task (FuncT Func) {
1695
1705
1696
1706
MInteropTask.reset (new detail::InteropTask (std::move (Func)));
1697
- MCGType = detail::CG::CODEPLAY_INTEROP_TASK;
1707
+ setType ( detail::CG::CODEPLAY_INTEROP_TASK) ;
1698
1708
}
1699
1709
1700
1710
// / Defines and invokes a SYCL kernel function for the specified range.
@@ -1720,7 +1730,7 @@ class __SYCL_EXPORT handler {
1720
1730
detail::checkValueRange<Dims>(NumWorkItems);
1721
1731
MNDRDesc.set (std::move (NumWorkItems));
1722
1732
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1723
- MCGType = detail::CG::KERNEL_V1 ;
1733
+ setType ( detail::CG::KERNEL) ;
1724
1734
if (!MIsHost && !lambdaAndKernelHaveEqualName<NameT>()) {
1725
1735
extractArgsAndReqs ();
1726
1736
MKernelName = getKernelName ();
@@ -1756,7 +1766,7 @@ class __SYCL_EXPORT handler {
1756
1766
detail::checkValueRange<Dims>(NumWorkItems, WorkItemOffset);
1757
1767
MNDRDesc.set (std::move (NumWorkItems), std::move (WorkItemOffset));
1758
1768
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1759
- MCGType = detail::CG::KERNEL_V1 ;
1769
+ setType ( detail::CG::KERNEL) ;
1760
1770
if (!MIsHost && !lambdaAndKernelHaveEqualName<NameT>()) {
1761
1771
extractArgsAndReqs ();
1762
1772
MKernelName = getKernelName ();
@@ -1792,7 +1802,7 @@ class __SYCL_EXPORT handler {
1792
1802
detail::checkValueRange<Dims>(NDRange);
1793
1803
MNDRDesc.set (std::move (NDRange));
1794
1804
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1795
- MCGType = detail::CG::KERNEL_V1 ;
1805
+ setType ( detail::CG::KERNEL) ;
1796
1806
if (!MIsHost && !lambdaAndKernelHaveEqualName<NameT>()) {
1797
1807
extractArgsAndReqs ();
1798
1808
MKernelName = getKernelName ();
@@ -1833,7 +1843,7 @@ class __SYCL_EXPORT handler {
1833
1843
MNDRDesc.setNumWorkGroups (NumWorkGroups);
1834
1844
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1835
1845
StoreLambda<NameT, KernelType, Dims, LambdaArgType>(std::move (KernelFunc));
1836
- MCGType = detail::CG::KERNEL_V1 ;
1846
+ setType ( detail::CG::KERNEL) ;
1837
1847
#endif // __SYCL_DEVICE_ONLY__
1838
1848
}
1839
1849
@@ -1874,7 +1884,7 @@ class __SYCL_EXPORT handler {
1874
1884
MNDRDesc.set (std::move (ExecRange));
1875
1885
MKernel = detail::getSyclObjImpl (std::move (Kernel));
1876
1886
StoreLambda<NameT, KernelType, Dims, LambdaArgType>(std::move (KernelFunc));
1877
- MCGType = detail::CG::KERNEL_V1 ;
1887
+ setType ( detail::CG::KERNEL) ;
1878
1888
#endif // __SYCL_DEVICE_ONLY__
1879
1889
}
1880
1890
@@ -1957,7 +1967,7 @@ class __SYCL_EXPORT handler {
1957
1967
return ;
1958
1968
}
1959
1969
#endif
1960
- MCGType = detail::CG::COPY_ACC_TO_PTR;
1970
+ setType ( detail::CG::COPY_ACC_TO_PTR) ;
1961
1971
1962
1972
detail::AccessorBaseHost *AccBase = (detail::AccessorBaseHost *)&Src;
1963
1973
detail::AccessorImplPtr AccImpl = detail::getSyclObjImpl (*AccBase);
@@ -1996,7 +2006,7 @@ class __SYCL_EXPORT handler {
1996
2006
return ;
1997
2007
}
1998
2008
#endif
1999
- MCGType = detail::CG::COPY_PTR_TO_ACC;
2009
+ setType ( detail::CG::COPY_PTR_TO_ACC) ;
2000
2010
2001
2011
detail::AccessorBaseHost *AccBase = (detail::AccessorBaseHost *)&Dst;
2002
2012
detail::AccessorImplPtr AccImpl = detail::getSyclObjImpl (*AccBase);
@@ -2041,7 +2051,7 @@ class __SYCL_EXPORT handler {
2041
2051
" The destination accessor does not fit the copied memory." );
2042
2052
if (copyAccToAccHelper (Src, Dst))
2043
2053
return ;
2044
- MCGType = detail::CG::COPY_ACC_TO_ACC;
2054
+ setType ( detail::CG::COPY_ACC_TO_ACC) ;
2045
2055
2046
2056
detail::AccessorBaseHost *AccBaseSrc = (detail::AccessorBaseHost *)&Src;
2047
2057
detail::AccessorImplPtr AccImplSrc = detail::getSyclObjImpl (*AccBaseSrc);
@@ -2071,7 +2081,7 @@ class __SYCL_EXPORT handler {
2071
2081
throwIfActionIsCreated ();
2072
2082
static_assert (isValidTargetForExplicitOp (AccessTarget),
2073
2083
" Invalid accessor target for the update_host method." );
2074
- MCGType = detail::CG::UPDATE_HOST;
2084
+ setType ( detail::CG::UPDATE_HOST) ;
2075
2085
2076
2086
detail::AccessorBaseHost *AccBase = (detail::AccessorBaseHost *)&Acc;
2077
2087
detail::AccessorImplPtr AccImpl = detail::getSyclObjImpl (*AccBase);
@@ -2103,7 +2113,7 @@ class __SYCL_EXPORT handler {
2103
2113
" Invalid accessor target for the fill method." );
2104
2114
if (!MIsHost && (((Dims == 1 ) && isConstOrGlobal (AccessTarget)) ||
2105
2115
isImageOrImageArray (AccessTarget))) {
2106
- MCGType = detail::CG::FILL;
2116
+ setType ( detail::CG::FILL) ;
2107
2117
2108
2118
detail::AccessorBaseHost *AccBase = (detail::AccessorBaseHost *)&Dst;
2109
2119
detail::AccessorImplPtr AccImpl = detail::getSyclObjImpl (*AccBase);
@@ -2148,7 +2158,7 @@ class __SYCL_EXPORT handler {
2148
2158
// / complete state.
2149
2159
void barrier () {
2150
2160
throwIfActionIsCreated ();
2151
- MCGType = detail::CG::BARRIER;
2161
+ setType ( detail::CG::BARRIER) ;
2152
2162
}
2153
2163
2154
2164
// / Prevents any commands submitted afterward to this queue from executing
@@ -2212,7 +2222,9 @@ class __SYCL_EXPORT handler {
2212
2222
string_class MKernelName;
2213
2223
// / Storage for a sycl::kernel object.
2214
2224
shared_ptr_class<detail::kernel_impl> MKernel;
2215
- // / Type of the command group, e.g. kernel, fill.
2225
+ // / Type of the command group, e.g. kernel, fill. Can also encode version.
2226
+ // / Use getType and setType methods to access this variable unless
2227
+ // / manipulations with version are required
2216
2228
detail::CG::CGTYPE MCGType = detail::CG::NONE;
2217
2229
// / Pointer to the source host memory or accessor(depending on command type).
2218
2230
void *MSrcPtr = nullptr ;
0 commit comments