mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-09-08 02:54:56 -06:00
Core: memset128, memeq128
git-svn-id: svn://ultimatepp.org/upp/trunk@14600 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
ee597b4d78
commit
821d9a377c
3 changed files with 21 additions and 0 deletions
|
|
@ -404,6 +404,12 @@ typedef long long unsigned uint64;
|
|||
|
||||
typedef uint64 qword;
|
||||
|
||||
struct m128 {
|
||||
int64 i64[2];
|
||||
|
||||
static m128 Zero() { m128 a; a.i64[0] = a.i64[1] = 0; return a; }
|
||||
};
|
||||
|
||||
inline bool IsNaN(double d) { return std::isnan(d); }
|
||||
inline bool IsInf(double d) { return std::isinf(d); }
|
||||
inline bool IsFin(double d) { return !IsNaN(d) && !IsInf(d); }
|
||||
|
|
|
|||
|
|
@ -86,6 +86,7 @@ bool memeq8(const void *p, const void *q, size_t len) { return inline_memeq8_ali
|
|||
bool memeq16(const void *p, const void *q, size_t len) { return inline_memeq16_aligned(p, q, len); }
|
||||
bool memeq32(const void *p, const void *q, size_t len) { return inline_memeq32_aligned(p, q, len); }
|
||||
bool memeq64(const void *p, const void *q, size_t len) { return inline_memeq64_aligned(p, q, len); }
|
||||
bool memeq128(const void *p, const void *q, size_t len) { return inline_memeq128_aligned(p, q, len); }
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -105,6 +105,13 @@ void memset64(void *p, qword data, size_t len)
|
|||
Set128(0);
|
||||
}
|
||||
|
||||
inline
|
||||
void memset128(void *t, m128 data, size_t len)
|
||||
{
|
||||
if(len)
|
||||
memset8__(t, *(__m128i *)&data, 16 * len);
|
||||
}
|
||||
|
||||
void memcpy8__(void *p, const void *q, size_t len);
|
||||
|
||||
inline
|
||||
|
|
@ -390,10 +397,17 @@ bool inline_memeq64_aligned(const void *p, const void *q, size_t len)
|
|||
return memeq8__(t, s, 8 * len);
|
||||
}
|
||||
|
||||
force_inline
|
||||
bool inline_memeq128_aligned(const void *t, const void *s, size_t len)
|
||||
{
|
||||
return len == 0 || memeq8__(t, s, 16 * len);
|
||||
}
|
||||
|
||||
bool memeq8(const void *p, const void *q, size_t len);
|
||||
bool memeq16(const void *p, const void *q, size_t len);
|
||||
bool memeq32(const void *p, const void *q, size_t len);
|
||||
bool memeq64(const void *p, const void *q, size_t len);
|
||||
bool memeq128(const void *p, const void *q, size_t len);
|
||||
|
||||
#else
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue