@@ -1472,7 +1472,7 @@ __ESIMD_UNARY_INTRINSIC_DEF(__ESIMD_EMATH_COND, cos, cos)
1472
1472
#undef __ESIMD_UNARY_INTRINSIC_DEF
1473
1473
1474
1474
#define __ESIMD_BINARY_INTRINSIC_DEF (COND, name, iname ) \
1475
- /* * Vector version. */ \
1475
+ /* * (vector, vector) version. */ \
1476
1476
template <class T , int N, class U , class Sat = saturation_off_tag, \
1477
1477
class = std::enable_if_t <COND>> \
1478
1478
__ESIMD_API simd<T, N> name (simd<T, N> src0, simd<U, N> src1, \
@@ -1486,13 +1486,18 @@ __ESIMD_UNARY_INTRINSIC_DEF(__ESIMD_EMATH_COND, cos, cos)
1486
1486
return esimd::saturate<T>(simd<T, N>(res_raw)); \
1487
1487
} \
1488
1488
\
1489
- /* * Scalar version. */ \
1489
+ /* * (vector, scalar) version. */ \
1490
+ template <class T , int N, class U , class Sat = saturation_off_tag, \
1491
+ class = std::enable_if_t <COND>> \
1492
+ __ESIMD_API simd<T, N> name (simd<T, N> src0, U src1, Sat sat = {}) { \
1493
+ return name<T, N, U>(src0, simd<U, N>(src1), sat); \
1494
+ } \
1495
+ \
1496
+ /* * (scalar, scalar) version. */ \
1490
1497
template <class T , class U , class Sat = saturation_off_tag, \
1491
1498
class = std::enable_if_t <COND>> \
1492
1499
__ESIMD_API T name (T src0, U src1, Sat sat = {}) { \
1493
- simd<T, 1 > src0_vec = src0; \
1494
- simd<U, 1 > src1_vec = src1; \
1495
- simd<T, 1 > res = name<T, 1 , U>(src0_vec, src1_vec, sat); \
1500
+ simd<T, 1 > res = name<T, 1 , U>(simd<T, 1 >(src0), simd<U, 1 >(src1), sat); \
1496
1501
return res[0 ]; \
1497
1502
}
1498
1503
0 commit comments