Generic vs non-generic SYCL#
The SYCL programming API is split into two categories; generic SYCL
and non-generic SYCL. Almost everything in the SYCL programming API
is considered generic SYCL. However any usage of the
enum class backend
is considered non-generic SYCL and should only
be used for SYCL backend specialized code paths, as the identifiers
defined in backend
are implementation-defined.
In any non-generic SYCL application code where the backend
enum
class is used, the expression must be guarded with a preprocessor
#ifdef
guard using the associated preprocessor macro to ensure
that the SYCL application will compile even if the SYCL implementation
does not support that SYCL backend being specialized for.