F16 and F32

This commit is contained in:
Jorijn van der Graaf 2026-03-22 20:53:17 +01:00
commit 07910a81c3
6 changed files with 898 additions and 7 deletions

View file

@ -78,7 +78,7 @@ namespace Crafter {
v = _mm512_loadu_ph(vB);
}
}
constexpr void Store(const _Float16* vB) const {
constexpr void Store(_Float16* vB) const {
if constexpr(std::is_same_v<VectorType, __m128h>) {
_mm_storeu_ph(vB, v);
} else if constexpr(std::is_same_v<VectorType, __m256h>) {
@ -91,7 +91,7 @@ namespace Crafter {
template <std::uint32_t VLen, std::uint32_t VAlign>
constexpr Vector<_Float16, VLen, VAlign> Store() const {
Vector<_Float16, VLen, VAlign> returnVec;
Store(&returnVec);
Store(returnVec.v);
return returnVec;
}
@ -1501,14 +1501,14 @@ namespace Crafter {
constexpr static VectorF16<Len, Packing, Repeats> Rotate(VectorF16<3, 2, Repeats> v, VectorF16<4, 2, Repeats> q) requires(Len == 3 && Packing == 2) {
VectorF16<3, 2, Repeats> qv(q.v);
VectorF16<Len, Packing, Repeats> t = Cross(qv, v) * _Float16(2);
return v + t * q.template Shuffle<3,3,3,3,3,3,3,3>(); + Cross(qv, t);
return v + t * q.template Shuffle<3,3,3,3,7,7,7,7>(); + Cross(qv, t);
}
constexpr static VectorF16<4, 2, Repeats> RotatePivot(VectorF16<3, 2, Repeats> v, VectorF16<4, 2, Repeats> q, VectorF16<3, 2, Repeats> pivot) requires(Len == 3 && Packing == 2) {
VectorF16<Len, Packing, Repeats> translated = v - pivot;
VectorF16<3, 2, Repeats> qv(q.v);
VectorF16<Len, Packing, Repeats> t = Cross(qv, translated) * _Float16(2);
VectorF16<Len, Packing, Repeats> rotated = translated + t * q.template Shuffle<3,3,3,3,3,3,3,3>() + Cross(qv, t);
VectorF16<Len, Packing, Repeats> rotated = translated + t * q.template Shuffle<3,3,3,3,7,7,7,7>() + Cross(qv, t);
return rotated + pivot;
}