Skip to content

Commit 9767997

Browse files
jan-wassenbergcopybara-github
authored andcommitted
RVV release fixes:
Add missing hwy:: for [b]float16_t emu128: Remove obsolete VecFromMask overload convert_test: workaround for incorrect rounding mode mask_test: simplify native-vector comparison and add comments rvv: rewrite MaskFalse to ensure tail elements are initialized rvv ResizeBitCast: move before usage, improved SFINAE rvv Interleave: fix handling of fractional LMUL (check size at runtime) rvv Interleave: speedup, single Compress rvv Dup128MaskFromMaskBits: reduce casting, avoid out of bounds shifts PiperOrigin-RevId: 607823878
1 parent 2ebc9d0 commit 9767997

File tree

5 files changed

+377
-266
lines changed

5 files changed

+377
-266
lines changed

hwy/ops/emu128-inl.h

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -382,16 +382,11 @@ HWY_API MFromD<DTo> RebindMask(DTo /* tag */, MFrom mask) {
382382
return to;
383383
}
384384

385-
template <typename T, size_t N>
386-
Vec128<T, N> VecFromMask(Mask128<T, N> mask) {
387-
Vec128<T, N> v;
388-
CopySameSize(&mask.bits, &v.raw);
389-
return v;
390-
}
391-
392385
template <class D>
393386
VFromD<D> VecFromMask(D /* tag */, MFromD<D> mask) {
394-
return VecFromMask(mask);
387+
VFromD<D> v;
388+
CopySameSize(&mask.bits, &v.raw);
389+
return v;
395390
}
396391

397392
template <class D>
@@ -407,19 +402,20 @@ HWY_API MFromD<D> FirstN(D d, size_t n) {
407402
template <typename T, size_t N>
408403
HWY_API Vec128<T, N> IfThenElse(Mask128<T, N> mask, Vec128<T, N> yes,
409404
Vec128<T, N> no) {
410-
return IfVecThenElse(VecFromMask(mask), yes, no);
405+
const DFromV<decltype(yes)> d;
406+
return IfVecThenElse(VecFromMask(d, mask), yes, no);
411407
}
412408

413409
template <typename T, size_t N>
414410
HWY_API Vec128<T, N> IfThenElseZero(Mask128<T, N> mask, Vec128<T, N> yes) {
415411
const DFromV<decltype(yes)> d;
416-
return IfVecThenElse(VecFromMask(mask), yes, Zero(d));
412+
return IfVecThenElse(VecFromMask(d, mask), yes, Zero(d));
417413
}
418414

419415
template <typename T, size_t N>
420416
HWY_API Vec128<T, N> IfThenZeroElse(Mask128<T, N> mask, Vec128<T, N> no) {
421417
const DFromV<decltype(no)> d;
422-
return IfVecThenElse(VecFromMask(mask), Zero(d), no);
418+
return IfVecThenElse(VecFromMask(d, mask), Zero(d), no);
423419
}
424420

425421
template <typename T, size_t N>
@@ -445,7 +441,8 @@ HWY_API Vec128<T, N> ZeroIfNegative(Vec128<T, N> v) {
445441

446442
template <typename T, size_t N>
447443
HWY_API Mask128<T, N> Not(Mask128<T, N> m) {
448-
return MaskFromVec(Not(VecFromMask(Simd<T, N, 0>(), m)));
444+
const Simd<T, N, 0> d;
445+
return MaskFromVec(Not(VecFromMask(d, m)));
449446
}
450447

451448
template <typename T, size_t N>

0 commit comments

Comments
 (0)