Skip to content

Commit 4bc5ef3

Browse files
committed
Optimize short vectors as well
1 parent b15e2ff commit 4bc5ef3

File tree

1 file changed

+9
-7
lines changed
  • sycl/include/sycl/ext/intel/experimental/esimd

1 file changed

+9
-7
lines changed

sycl/include/sycl/ext/intel/experimental/esimd/math.hpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1775,19 +1775,21 @@ template <bfn_t FuncControl, typename T, int N>
17751775
__ESIMD_API std::enable_if_t<std::is_integral_v<T>, __ESIMD_NS::simd<T, N>>
17761776
bfn(__ESIMD_NS::simd<T, N> src0, __ESIMD_NS::simd<T, N> src1,
17771777
__ESIMD_NS::simd<T, N> src2) {
1778-
if constexpr (sizeof(T) == 2 || sizeof(T) == 4) {
1779-
constexpr uint8_t FC = static_cast<uint8_t>(FuncControl);
1780-
return __esimd_bfn<FC, T, N>(src0.data(), src1.data(), src2.data());
1781-
} else if constexpr ((sizeof(T) == 8) || ((sizeof(T) == 1) && (N % 4 == 0))) {
1782-
// Bitcast 8-byte vector to 2xN vectors of 4-byte integer.
1783-
// Optimize 1-byte vectors via bitcasting to vector of 4-byte integers.
1778+
if constexpr ((sizeof(T) == 8) || ((sizeof(T) == 1) && (N % 4 == 0)) ||
1779+
((sizeof(T) == 2) && (N % 2 == 0))) {
1780+
// Bitcast Nx8-byte vectors to 2xN vectors of 4-byte integers.
1781+
// Bitcast Nx1-byte vectors to N/4 vectors of 4-byte integers.
1782+
// Bitcast Nx2-byte vectors to N/2 vectors of 4-byte integers.
17841783
auto Result = __ESIMD_ENS::bfn<FuncControl>(
17851784
src0.template bit_cast_view<int32_t>().read(),
17861785
src1.template bit_cast_view<int32_t>().read(),
17871786
src2.template bit_cast_view<int32_t>().read());
17881787
return Result.template bit_cast_view<T>();
1788+
} else if constexpr (sizeof(T) == 2 || sizeof(T) == 4) {
1789+
constexpr uint8_t FC = static_cast<uint8_t>(FuncControl);
1790+
return __esimd_bfn<FC, T, N>(src0.data(), src1.data(), src2.data());
17891791
} else if constexpr (N % 2 == 0) {
1790-
// Even number of 1-byte elements.
1792+
// Bitcast Nx1-byte vectors (N is even) to N/2 vectors of 4-byte integers.
17911793
auto Result = __ESIMD_ENS::bfn<FuncControl>(
17921794
src0.template bit_cast_view<int16_t>().read(),
17931795
src1.template bit_cast_view<int16_t>().read(),

0 commit comments

Comments
 (0)