[SYCL] Split vec into layers and reduce builtins include cost (#21786)
[SYCL] Split vec into core/arith layers and reduce builtins include cost
This change splits the vec implementation into lighter internal layers
and retargets builtins to depend only on the vec core they actually
need.
The vec implementation is reorganized as:
- detail/vector_traits.hpp: shared traits/configuration
- detail/vector_core.hpp: vec/swizzle core
- detail/vector_arith.hpp: operator layer
- vector.hpp: public wrapper that includes core + arith
With that split in place, detail/builtins/builtins.hpp now depends on
the vec
core directly instead of pulling in the full public vec header and its
operator
machinery. Sources and tests that actually require vec operators include
<sycl/vector.hpp> explicitly.
This keeps the public API unchanged while reducing transitive parse work
for
translation units that only need builtins.
For a translation unit containing only
#include <sycl/builtins.hpp>
an include-trace measurement shows:
- 265 -> 232 total include events
- 211 -> 184 distinct headers
- 385.887 ms -> 249.731
Depends on #21698