blob: ccd3baf8626453cf5257d1e78ae80b920d96fdb3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#pragma once
inline void hkVector4fComparison::setAnd(hkVector4fComparisonParameter a,
hkVector4fComparisonParameter b) {
m_mask = a.m_mask & b.m_mask;
}
inline void hkVector4fComparison::setAndNot(hkVector4fComparisonParameter a,
hkVector4fComparisonParameter b) {
m_mask = a.m_mask & ~b.m_mask;
}
inline void hkVector4fComparison::setXor(hkVector4fComparisonParameter a,
hkVector4fComparisonParameter b) {
m_mask = a.m_mask ^ b.m_mask;
}
inline void hkVector4fComparison::setOr(hkVector4fComparisonParameter a,
hkVector4fComparisonParameter b) {
m_mask = a.m_mask | b.m_mask;
}
inline void hkVector4fComparison::setNot(hkVector4fComparisonParameter a) {
m_mask = ~a.m_mask;
}
inline void hkVector4fComparison::setSelect(hkVector4fComparisonParameter comp,
hkVector4fComparisonParameter trueValue,
hkVector4fComparisonParameter falseValue) {
#ifdef HK_VECTOR4F_AARCH64_NEON
m_mask = vbslq_u32(comp.m_mask, trueValue.m_mask, falseValue.m_mask);
#else
m_mask = (comp.m_mask & trueValue.m_mask) | (comp.m_mask & ~falseValue.m_mask);
#endif
}
template <hkVector4fComparison::Mask m>
inline hkBool32 hkVector4fComparison::allAreSet() const {
return ((m & MASK_X) == 0 || m_mask[0] != 0) && ((m & MASK_Y) == 0 || m_mask[1] != 0) &&
((m & MASK_Z) == 0 || m_mask[2] != 0) && ((m & MASK_W) == 0 || m_mask[3] != 0);
}
inline hkBool32 hkVector4fComparison::allAreSet(hkVector4fComparison::Mask m) const {
return ((m & MASK_X) == 0 || m_mask[0] != 0) && ((m & MASK_Y) == 0 || m_mask[1] != 0) &&
((m & MASK_Z) == 0 || m_mask[2] != 0) && ((m & MASK_W) == 0 || m_mask[3] != 0);
}
template <hkVector4fComparison::Mask m>
inline hkBool32 hkVector4fComparison::anyIsSet() const {
return ((m & MASK_X) != 0 && m_mask[0] != 0) || ((m & MASK_Y) != 0 && m_mask[1] != 0) ||
((m & MASK_Z) != 0 && m_mask[2] != 0) || ((m & MASK_W) != 0 && m_mask[3] != 0);
}
inline hkBool32 hkVector4fComparison::anyIsSet(Mask m) const {
return ((m & MASK_X) != 0 && m_mask[0] != 0) || ((m & MASK_Y) != 0 && m_mask[1] != 0) ||
((m & MASK_Z) != 0 && m_mask[2] != 0) || ((m & MASK_W) != 0 && m_mask[3] != 0);
}
|