SPU: some instructions updated

This commit is contained in:
Nekotekina 2015-03-21 17:29:33 +03:00
parent ef563f038d
commit ff1708a899
2 changed files with 170 additions and 96 deletions

View file

@ -88,6 +88,7 @@ union _CRT_ALIGN(16) u128
double _d[2];
__m128 vf;
__m128i vi;
__m128d vd;
class bit_array_128
{
@ -234,6 +235,13 @@ union _CRT_ALIGN(16) u128
return ret;
}
static u128 fromD(__m128d value)
{
u128 ret;
ret.vd = value;
return ret;
}
static __forceinline u128 add8(const u128& left, const u128& right)
{
return fromV(_mm_add_epi8(left.vi, right.vi));
@ -254,6 +262,11 @@ union _CRT_ALIGN(16) u128
return fromF(_mm_add_ps(left.vf, right.vf));
}
static __forceinline u128 addfd(const u128& left, const u128& right)
{
return fromD(_mm_add_pd(left.vd, right.vd));
}
static __forceinline u128 sub8(const u128& left, const u128& right)
{
return fromV(_mm_sub_epi8(left.vi, right.vi));
@ -274,6 +287,11 @@ union _CRT_ALIGN(16) u128
return fromF(_mm_sub_ps(left.vf, right.vf));
}
static __forceinline u128 subfd(const u128& left, const u128& right)
{
return fromD(_mm_sub_pd(left.vd, right.vd));
}
static __forceinline u128 maxu8(const u128& left, const u128& right)
{
return fromV(_mm_max_epu8(left.vi, right.vi));